[ 
https://issues.apache.org/jira/browse/PDFBOX-1203?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Andreas Lehmkühler closed PDFBOX-1203.
--------------------------------------

    Resolution: Duplicate
      Assignee: Andreas Lehmkühler
    
> PrintImageLocations doesn't print images inside PDXObjectForm objects
> ---------------------------------------------------------------------
>
>                 Key: PDFBOX-1203
>                 URL: https://issues.apache.org/jira/browse/PDFBOX-1203
>             Project: PDFBox
>          Issue Type: Bug
>          Components: Utilities
>    Affects Versions: 1.6.0
>            Reporter: Ilija Pavlic
>            Assignee: Andreas Lehmkühler
>            Priority: Minor
>   Original Estimate: 2h
>  Remaining Estimate: 2h
>
> Some pdf store images inside forms to reuse them throughout the document. 
> PrintImageLocations misses such images.
> A workaround that works for some documents:
> if (xobject instanceof PDXObjectForm) {
>                               Map images = ((PDXObjectForm) 
> xobject).getResources()
>                                               .getImages();
>                               if (images != null) {
>                                       Iterator imageIter = 
> images.keySet().iterator();
>                                       while (imageIter.hasNext()) {
>                                               String key = (String) 
> imageIter.next();
>                                               PDXObjectImage image = 
> (PDXObjectImage) images.get(key);
>                                               String name = key;
>                                               //System.out.println("Writing 
> image:" + name);
>                                               //image.write2file(name);
>                                               try {
>                                                       PDPage page = 
> getCurrentPage();
>                                                       Matrix ctm = 
> getGraphicsState()
>                                                                       
> .getCurrentTransformationMatrix();
>                                                       double 
> rotationInRadians = (page.findRotation() * Math.PI) / 180;
>                                                       AffineTransform 
> rotation = new AffineTransform();
>                                                       
> rotation.setToRotation(rotationInRadians);
>                                                       AffineTransform 
> rotationInverse = rotation.createInverse();
>                                                       Matrix 
> rotationInverseMatrix = new Matrix();
>                                                       rotationInverseMatrix
>                                                                       
> .setFromAffineTransform(rotationInverse);
>                                                       Matrix rotationMatrix = 
> new Matrix();
>                                                       
> rotationMatrix.setFromAffineTransform(rotation);
>                                                       Matrix unrotatedCTM = 
> ctm.multiply(rotationInverseMatrix);
>                                                       float xScale = 
> unrotatedCTM.getXScale();
>                                                       float yScale = 
> unrotatedCTM.getYScale();
>                                                       
> imagesInformation.add(new ImageInformation(name, unrotatedCTM.getXPosition(), 
> unrotatedCTM.getYPosition(), xScale / 100f * image.getWidth(), yScale / 100f 
> * image.getHeight()));
>                                               } catch 
> (NoninvertibleTransformException e) {
>                                                       throw new 
> WrappedIOException(e);
>                                               }
>                                       }
>                               }
>                       }
>                       if (xobject instanceof PDXObjectImage) {
>                               try {
>                                       PDXObjectImage image = (PDXObjectImage) 
> xobject;
>                                       PDPage page = getCurrentPage();
>                                       Matrix ctm = getGraphicsState()
>                                                       
> .getCurrentTransformationMatrix();
>                                       double rotationInRadians = 
> (page.findRotation() * Math.PI) / 180;
>                                       AffineTransform rotation = new 
> AffineTransform();
>                                       
> rotation.setToRotation(rotationInRadians);
>                                       AffineTransform rotationInverse = 
> rotation.createInverse();
>                                       Matrix rotationInverseMatrix = new 
> Matrix();
>                                       rotationInverseMatrix
>                                                       
> .setFromAffineTransform(rotationInverse);
>                                       Matrix rotationMatrix = new Matrix();
>                                       
> rotationMatrix.setFromAffineTransform(rotation);
>                                       Matrix unrotatedCTM = 
> ctm.multiply(rotationInverseMatrix);
>                                       float xScale = unrotatedCTM.getXScale();
>                                       float yScale = unrotatedCTM.getYScale();
>                                       imagesInformation.add(new 
> ImageInformation(objectName.getName(), unrotatedCTM.getXPosition(), 
> unrotatedCTM.getYPosition(), xScale / 100f * image.getWidth(), yScale / 100f 
> * image.getHeight()));
>                               } catch (NoninvertibleTransformException e) {
>                                       throw new WrappedIOException(e);
>                               }

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira


Reply via email to