You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ms...@apache.org on 2016/12/12 05:53:47 UTC
svn commit: r1773739 -
/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDAcroForm.java
Author: msahyoun
Date: Mon Dec 12 05:53:47 2016
New Revision: 1773739
URL: http://svn.apache.org/viewvc?rev=1773739&view=rev
Log:
PDFBOX-3396: dont applay a transformation if the PDFormXObject has a BBox not starting at 0,0
Modified:
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDAcroForm.java
Modified: pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDAcroForm.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDAcroForm.java?rev=1773739&r1=1773738&r2=1773739&view=diff
==============================================================================
--- pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDAcroForm.java (original)
+++ pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/form/PDAcroForm.java Mon Dec 12 05:53:47 2016
@@ -709,7 +709,38 @@ public final class PDAcroForm implements
*/
private boolean resolveNeedsTranslation(PDAppearanceStream appearanceStream)
{
- // TODO: implement special cases for files in PDFBOX-3396
+boolean needsTranslation = false;
+
+ PDResources resources = appearanceStream.getResources();
+ if (resources != null && resources.getXObjectNames().iterator().hasNext())
+ {
+
+ Iterator<COSName> xObjectNames = resources.getXObjectNames().iterator();
+
+ while (xObjectNames.hasNext())
+ {
+ try
+ {
+ // if the BBox of the PDFormXObject does not start at 0,0
+ // there is no need do translate as this is done by the BBox definition.
+ PDFormXObject xObject = (PDFormXObject) resources.getXObject(xObjectNames.next());
+ PDRectangle bbox = xObject.getBBox();
+ float llX = bbox.getLowerLeftX();
+ float llY = bbox.getLowerLeftY();
+ if (llX == 0 && llY == 0)
+ {
+ needsTranslation = true;
+ }
+ }
+ catch (IOException e)
+ {
+ // we can safely ignore the exception here
+ // as this might only cause a misplacement
+ }
+ }
+ return needsTranslation;
+ }
+
return true;
}