rfedyk
asked on
Getting HBITMAP from TControlCanvas
I am using the Adobe AcroExch OLE interface to extract page images of a PDF document using the PDPAGE.CopyToClipboard function. The clipboard bitmap is then converted to a TIF file using a third party graphics library.
This works fine but is painfully slow at approximately 1 page per 3 seconds. We have over 1,000,000 pages to convert.
I have another utility, XPDFRasterizer, that is ten times faster that AcroExch but it has a problem with rendering Adobe Master Fonts so I have had to abandon it.
However, I have done some tests using the AcroExch DrawEx function instead of CopyToClipboard and it is also very fast. However, it only works by drawing the PDF page bitmap onto a TForm.Canvas.
The graphics library requires 2 parameters, HBITMAP, HPALETTE or HDC. My problem is to get a HBITMAP from TForm.Canvas without doing a CopyRect.
Any ideas?
Roger Fedyk
This works fine but is painfully slow at approximately 1 page per 3 seconds. We have over 1,000,000 pages to convert.
I have another utility, XPDFRasterizer, that is ten times faster that AcroExch but it has a problem with rendering Adobe Master Fonts so I have had to abandon it.
However, I have done some tests using the AcroExch DrawEx function instead of CopyToClipboard and it is also very fast. However, it only works by drawing the PDF page bitmap onto a TForm.Canvas.
The graphics library requires 2 parameters, HBITMAP, HPALETTE or HDC. My problem is to get a HBITMAP from TForm.Canvas without doing a CopyRect.
Any ideas?
Roger Fedyk
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Ivanov_G, rfedyk> I think here we have lib that works with bitmap handles so API bitmap manipluation functions reqired to create in DC DIB and use DIB handle to place picture to form. Is it?
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
hello rfedyk, , can you show the parameters of the
DrawEx function
??
DrawEx function
??
HBITMAP is Handle to Bitmap ... you can't get it if you don't copy the canvas to Bitmap ...
Form1.Canvas.Handle - it type HDC - which is handle to DeviceContext ...
Why you don't want to use CopyRect... ?