Ravi Hegde created PDFBOX-1444: ---------------------------------- Summary: Capability to use custom PageDrawer in PDPage.convertToImage Key: PDFBOX-1444 URL: https://issues.apache.org/jira/browse/PDFBOX-1444 Project: PDFBox Issue Type: Improvement Components: PDModel Affects Versions: 1.8.0 Environment: Ubuntu 11.10 64 bit on Intel® Core™ i5-2430M CPU. Sun JDK "1.6.0_30" (build 1.6.0_30-b12) Java HotSpot(TM) 64-Bit Server VM (build 20.5-b03, mixed mode). Reporter: Ravi Hegde
Extending PageDrawer is a handy technique for PDF processing tools to get information about the elements drawn on the page while drawing the page in one go. However, PDPage.convertToImage has no way of plugging in the extended PageDrawer class. It is necessary to provide some way to use custom PageDrawer instance in PDPage.convertToImage. Overloaded PDPage.convertToImage with a PageDrawer instance may be a good option. Here is the patch: svn diff PDPage.java Index: PDPage.java =================================================================== --- PDPage.java (revision 1407714) +++ PDPage.java (working copy) @@ -699,6 +699,24 @@ */ public BufferedImage convertToImage(int imageType, int resolution) throws IOException { + PageDrawer drawer = new PageDrawer(); + return convertToImage(imageType, resolution, drawer); + } + + /** + * Convert this page to an output image using custom PageDrawer instance. + * Custom page drawer is useful for collecting information about the + * elements drawn on the page while drawing the page. + * + * @param imageType the image type (see {@link BufferedImage}.TYPE_*) + * @param resolution the resolution in dpi (dots per inch) + * @param drawer Custom {@link PageDrawer} instance. + * @return A graphical representation of this page. + * + * @throws IOException If there is an error drawing to the image. + */ + public BufferedImage convertToImage(int imageType, int resolution, PageDrawer drawer) throws IOException + { PDRectangle cropBox = findCropBox(); float widthPt = cropBox.getWidth(); float heightPt = cropBox.getHeight(); @@ -753,7 +771,6 @@ graphics.rotate((float)Math.toRadians(rotationAngle)); } graphics.scale( scaling, scaling ); - PageDrawer drawer = new PageDrawer(); drawer.drawPage( graphics, this, pageDimension ); return retval; -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira