Adds a page from a DIB (Device-independent bitmap).
Syntax
Parameters
- dib
- An unmanaged pointer to the DIB (device-independent bitmap).
- callback
- Optional callback to show operation progress.
Return Value
The
IOcrPage object that define the newly added page.
Example
This example will add a raster image stored in an HTTP location to an OCR document
Visual Basic | Copy Code |
---|
Public Sub AddPageFromDibExample()
RasterSupport.Unlock(RasterSupportType.Document, "Replace with your own key here")
RasterSupport.Unlock(RasterSupportType.OcrPlus, "Replace with your own key here")
RasterSupport.Unlock(RasterSupportType.OcrPlusPdfLeadOutput, "Replace with your own key here")
Dim tifFileName As String = LeadtoolsExamples.Common.ImagesPath.Path + "Ocr1.tif"
Dim bmpFileName As String = LeadtoolsExamples.Common.ImagesPath.Path + "Ocr1.bmp"
Dim pdfFileName As String = LeadtoolsExamples.Common.ImagesPath.Path + "Ocr1.pdf"
RasterCodecs.Startup()
Using codecs As New RasterCodecs()
codecs.Convert(tifFileName, bmpFileName, RasterImageFormat.Bmp, 0, 0, 1, Nothing)
End Using
RasterCodecs.Shutdown()
Dim bitmapFileHeaderStructSize As Integer = 14
Dim dib As IntPtr = IntPtr.Zero
Using fs As FileStream = File.OpenRead(bmpFileName)
Dim dibSize As Integer = CType(fs.Length - bitmapFileHeaderStructSize, Integer)
dib = Marshal.AllocHGlobal(dibSize)
Dim dibOffset As Integer = 0
fs.Seek(bitmapFileHeaderStructSize, SeekOrigin.Begin)
Dim bufferSize As Integer = 1024 * 4
Dim buffer(bufferSize - 1) As Byte
Dim bytes As Integer = 0
Do
bytes = fs.Read(buffer, 0, bufferSize)
If (bytes > 0) Then
Dim dibPtr As New IntPtr(dib.ToInt64() + dibOffset)
Marshal.Copy(buffer, 0, dibPtr, bytes)
dibOffset += bytes
End If
Loop While (bytes > 0)
End Using
Using ocrEngine As IOcrEngine = OcrEngineManager.CreateEngine(OcrEngineType.Plus, False)
ocrEngine.Startup(Nothing, Nothing, Nothing, Nothing)
Using ocrDocument As IOcrDocument = ocrEngine.DocumentManager.CreateDocument()
ocrDocument.Pages.AddDib(dib, Nothing)
Marshal.FreeHGlobal(dib)
ocrDocument.Pages.Recognize(Nothing)
ocrDocument.Save(pdfFileName, DocumentFormat.Pdf, Nothing)
End Using
ocrEngine.Shutdown()
End Using
End Sub |
C# | Copy Code |
---|
public void AddPageFromDibExample() { // Unlock the support needed for LEADTOOLS Plus OCR engine RasterSupport.Unlock(RasterSupportType.Document, "Replace with your own key here"); RasterSupport.Unlock(RasterSupportType.OcrPlus, "Replace with your own key here"); RasterSupport.Unlock(RasterSupportType.OcrPlusPdfLeadOutput, "Replace with your own key here"); string tifFileName = LeadtoolsExamples.Common.ImagesPath.Path + "Ocr1.tif"; string bmpFileName = LeadtoolsExamples.Common.ImagesPath.Path + "Ocr1.bmp"; string pdfFileName = LeadtoolsExamples.Common.ImagesPath.Path + "Ocr1.pdf"; // Get a DIB // In this example, we will save the TIF file as BMP, then load it without the BITMAPFILEHEADER structure // The result is a valid Windows DIB RasterCodecs.Startup(); using(RasterCodecs codecs = new RasterCodecs()) codecs.Convert(tifFileName, bmpFileName, RasterImageFormat.Bmp, 0, 0, 1, null); RasterCodecs.Shutdown(); // From MSDN const int bitmapFileHeaderStructSize = 14; IntPtr dib = IntPtr.Zero; using(FileStream fs = File.OpenRead(bmpFileName)) { // Allocate the DIB int dibSize = (int)fs.Length - bitmapFileHeaderStructSize; dib = Marshal.AllocHGlobal(dibSize); int dibOffset = 0; // Now read it fs.Seek(bitmapFileHeaderStructSize, SeekOrigin.Begin); const int bufferSize = 1024 * 4; byte[] buffer = new byte[bufferSize]; int bytes = 0; do { bytes = fs.Read(buffer, 0, bufferSize); if(bytes > 0) { IntPtr dibPtr = new IntPtr(dib.ToInt64() + dibOffset); Marshal.Copy(buffer, 0, dibPtr, bytes); dibOffset += bytes; } } while(bytes > 0); } // Create an instance of the engine using(IOcrEngine ocrEngine = OcrEngineManager.CreateEngine(OcrEngineType.Plus, false)) { // Start the engine using default parameters ocrEngine.Startup(null, null, null, null); // Create an OCR document using(IOcrDocument ocrDocument = ocrEngine.DocumentManager.CreateDocument()) { // Add the image ocrDocument.Pages.AddDib(dib, null); // Free the DIB since we do not need it anymore Marshal.FreeHGlobal(dib); // Recognize ocrDocument.Pages.Recognize(null); // Save ocrDocument.Save(pdfFileName, DocumentFormat.Pdf, null); } // Shutdown the engine // Note: calling Dispose will also automatically shutdown the engine if it has been started ocrEngine.Shutdown(); } } |
Remarks
Requirements
Target Platforms: Microsoft .NET Framework 3.0, Windows XP, Windows Server 2003 family, Windows Server 2008 family
See Also