Author: lbernardo
Date: Fri Jul 12 22:34:18 2013
New Revision: 1502718
URL: http://svn.apache.org/r1502718
Log:
FOP-2264: PDF form is offset; patch submitted by Simon Steiner.
Modified:
xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/PDFBoxAdapter.java
Modified:
xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/PDFBoxAdapter.java
URL:
http://svn.apache.org/viewvc/xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/PDFBoxAdapter.java?rev=1502718&r1=1502717&r2=1502718&view=diff
==============================================================================
---
xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/PDFBoxAdapter.java
(original)
+++
xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/PDFBoxAdapter.java
Fri Jul 12 22:34:18 2013
@@ -24,6 +24,7 @@ import java.awt.geom.Rectangle2D;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
@@ -124,7 +125,7 @@ class PDFBoxAdapter {
cacheClonedObject(keyBase, array);
List list = (List)base;
for (int i = 0; i < list.size(); i++) {
- array.add(cloneForNewDocument(list.get(i)));
+ array.add(cloneForNewDocument(list.get(i), list.get(i),
exclude));
}
return array;
} else if (base instanceof COSObjectable && !(base instanceof
COSBase)) {
@@ -138,7 +139,7 @@ class PDFBoxAdapter {
+ object.getObjectNumber().longValue()
+ " " + object.getGenerationNumber().longValue());
}
- Object obj = cloneForNewDocument(object.getObject(), object);
+ Object obj = cloneForNewDocument(object.getObject(), object,
exclude);
if (obj instanceof PDFObject) {
PDFObject pdfobj = (PDFObject)obj;
//pdfDoc.registerObject(pdfobj);
@@ -160,7 +161,7 @@ class PDFBoxAdapter {
cacheClonedObject(keyBase, newArray);
COSArray array = (COSArray)base;
for (int i = 0; i < array.size(); i++) {
- newArray.add(cloneForNewDocument(array.get(i)));
+ newArray.add(cloneForNewDocument(array.get(i), array.get(i),
exclude));
}
return newArray;
} else if (base instanceof COSStreamArray) {
@@ -197,7 +198,7 @@ class PDFBoxAdapter {
for (int i = 0; i < keys.size(); i++) {
COSName key = (COSName)keys.get(i);
if (!exclude.contains(key)) {
- (newDict).put(key.getName(),
cloneForNewDocument(dic.getItem(key)));
+ (newDict).put(key.getName(),
cloneForNewDocument(dic.getItem(key), dic.getItem(key), exclude));
}
}
return newDict;
@@ -461,7 +462,11 @@ class PDFBoxAdapter {
field = (COSDictionary) fieldObject.getObject();
}
fields.add(fieldObject);
- Collection exclude = Collections.singletonList(COSName.P);
+ Collection<COSName> exclude = new ArrayList<COSName>();
+ exclude.add(COSName.P);
+ if
(((COSDictionary)annot.getObject()).getItem(COSName.getPDFName("StructParent"))
!= null) {
+ exclude.add(COSName.PARENT);
+ }
PDFObject clonedAnnot = (PDFObject)
cloneForNewDocument(annot, annot, exclude);
targetPage.addAnnotation(clonedAnnot);
}
@@ -497,7 +502,7 @@ class PDFBoxAdapter {
}
for (Iterator iter = fields.iterator(); iter.hasNext();) {
COSObject field = (COSObject) iter.next();
- PDFDictionary clone = (PDFDictionary) cloneForNewDocument(field);
+ PDFDictionary clone = (PDFDictionary) cloneForNewDocument(field,
field, Arrays.asList(COSName.KIDS));
clonedFields.add(clone);
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]