Author: ssteiner
Date: Tue Jul 26 09:49:03 2016
New Revision: 1754095
URL: http://svn.apache.org/viewvc?rev=1754095&view=rev
Log:
FOP-2636: PDF with annotations won't upload to docusign
Modified:
xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/PDFBoxAdapter.java
xmlgraphics/fop-pdf-images/trunk/test/java/org/apache/fop/render/pdf/PDFBoxAdapterTestCase.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=1754095&r1=1754094&r2=1754095&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 Tue Jul 26 09:49:03 2016
@@ -634,7 +634,8 @@ public class PDFBoxAdapter {
//to guess the calculation order.
destAcroForm = new PDFDictionary(pdfDoc.getRoot());
}
- pdfDoc.registerObject(destAcroForm);
+ pdfDoc.assignObjectNumber(destAcroForm);
+ pdfDoc.addTrailerObject(destAcroForm);
catalog.put(COSName.ACRO_FORM.getName(), destAcroForm);
}
PDFArray clonedFields = (PDFArray) destAcroForm.get(COSName.FIELDS.getName());
Modified: xmlgraphics/fop-pdf-images/trunk/test/java/org/apache/fop/render/pdf/PDFBoxAdapterTestCase.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop-pdf-images/trunk/test/java/org/apache/fop/render/pdf/PDFBoxAdapterTestCase.java?rev=1754095&r1=1754094&r2=1754095&view=diff
==============================================================================
--- xmlgraphics/fop-pdf-images/trunk/test/java/org/apache/fop/render/pdf/PDFBoxAdapterTestCase.java (original)
+++ xmlgraphics/fop-pdf-images/trunk/test/java/org/apache/fop/render/pdf/PDFBoxAdapterTestCase.java Tue Jul 26 09:49:03 2016
@@ -102,6 +102,7 @@ public class PDFBoxAdapterTestCase {
private static final String Type1Subset3 = "test/resources/t1subset3.pdf";
private static final String Type1Subset4 = "test/resources/t1subset4.pdf";
protected static final String ROTATE = "test/resources/rotate.pdf";
+ private static final String ANNOT = "test/resources/annot.pdf";
private static final String SHADING = "test/resources/shading.pdf";
private static final String LINK = "test/resources/link.pdf";
private static final String IMAGE = "test/resources/image.pdf";
@@ -175,7 +176,7 @@ public class PDFBoxAdapterTestCase {
private String writeText(FontInfo fi, String pdf) throws IOException {
PDDocument doc = PDDocument.load(new File(pdf));
- PDPage page = (PDPage) doc.getDocumentCatalog().getPages().get(0);
+ PDPage page = doc.getDocumentCatalog().getPages().get(0);
AffineTransform at = new AffineTransform();
String c = getPDFBoxAdapter().createStreamFromPDFBoxPage(doc, page, pdf, at, fi, new Rectangle());
// PDResources sourcePageResources = page.findResources();
@@ -187,7 +188,7 @@ public class PDFBoxAdapterTestCase {
}
private COSDictionary getFont(PDDocument doc, String internalname) throws IOException {
- PDPage page = (PDPage) doc.getDocumentCatalog().getPages().get(0);
+ PDPage page = doc.getDocumentCatalog().getPages().get(0);
PDResources sourcePageResources = page.getResources();
COSDictionary fonts = (COSDictionary)sourcePageResources.getCOSObject().getDictionaryObject(COSName.FONT);
return (COSDictionary) fonts.getDictionaryObject(internalname);
@@ -305,7 +306,7 @@ public class PDFBoxAdapterTestCase {
pdfpage.setDocument(pdfdoc);
PDFBoxAdapter adapter = new PDFBoxAdapter(pdfpage, new HashMap(), new HashMap<Integer, PDFArray>());
PDDocument doc = PDDocument.load(new File(ROTATE));
- PDPage page = (PDPage) doc.getDocumentCatalog().getPages().get(0);
+ PDPage page = doc.getDocumentCatalog().getPages().get(0);
AffineTransform at = new AffineTransform();
Rectangle r = new Rectangle(0, 1650, 842000, 595000);
String stream = adapter.createStreamFromPDFBoxPage(doc, page, "key", at, null, r);
@@ -324,7 +325,7 @@ public class PDFBoxAdapterTestCase {
PDFBoxAdapter adapter = new PDFBoxAdapter(pdfpage, new HashMap(), new HashMap<Integer, PDFArray>());
adapter.setCurrentMCID(5);
PDDocument doc = PDDocument.load(new File(HELLOTagged));
- PDPage page = (PDPage) doc.getDocumentCatalog().getPages().get(0);
+ PDPage page = doc.getDocumentCatalog().getPages().get(0);
AffineTransform at = new AffineTransform();
Rectangle r = new Rectangle(0, 1650, 842000, 595000);
String stream = adapter.createStreamFromPDFBoxPage(doc, page, "key", at, null, r);
@@ -333,6 +334,26 @@ public class PDFBoxAdapterTestCase {
}
@Test
+ public void testAnnot() throws Exception {
+ PDFDocument pdfdoc = new PDFDocument("");
+ PDFPage pdfpage = new PDFPage(new PDFResources(pdfdoc), 0, r, r, r, r);
+ pdfpage.setDocument(pdfdoc);
+ pdfpage.setObjectNumber(1);
+ PDFBoxAdapter adapter = new PDFBoxAdapter(pdfpage, new HashMap(), new HashMap<Integer, PDFArray>());
+ PDDocument doc = PDDocument.load(new File(ANNOT));
+ PDPage page = doc.getDocumentCatalog().getPages().get(0);
+ AffineTransform at = new AffineTransform();
+ Rectangle r = new Rectangle(0, 1650, 842000, 595000);
+ ByteArrayOutputStream os = new ByteArrayOutputStream();
+ pdfdoc.output(os);
+ os.reset();
+ adapter.createStreamFromPDFBoxPage(doc, page, "key", at, null, r);
+ pdfdoc.outputTrailer(os);
+ Assert.assertTrue(os.toString("UTF-8").contains("/Fields ["));
+ doc.close();
+ }
+
+ @Test
public void testLink() throws Exception {
PDFDocument pdfdoc = new PDFDocument("");
PDFPage pdfpage = new PDFPage(new PDFResources(pdfdoc), 0, r, r, r, r);
@@ -341,7 +362,7 @@ public class PDFBoxAdapterTestCase {
Map<Integer, PDFArray> pageNumbers = new HashMap<Integer, PDFArray>();
PDFBoxAdapter adapter = new PDFBoxAdapter(pdfpage, new HashMap(), pageNumbers);
PDDocument doc = PDDocument.load(new File(LINK));
- PDPage page = (PDPage) doc.getDocumentCatalog().getPages().get(0);
+ PDPage page = doc.getDocumentCatalog().getPages().get(0);
AffineTransform at = new AffineTransform();
Rectangle r = new Rectangle(0, 1650, 842000, 595000);
String stream = adapter.createStreamFromPDFBoxPage(doc, page, "key", at, null, r);
@@ -363,7 +384,7 @@ public class PDFBoxAdapterTestCase {
Map<Integer, PDFArray> pageNumbers = new HashMap<Integer, PDFArray>();
PDFBoxAdapter adapter = new PDFBoxAdapter(pdfpage, new HashMap(), pageNumbers);
PDDocument doc = PDDocument.load(new File(XFORM));
- PDPage page = (PDPage) doc.getDocumentCatalog().getPages().get(0);
+ PDPage page = doc.getDocumentCatalog().getPages().get(0);
AffineTransform at = new AffineTransform();
Rectangle r = new Rectangle(0, 1650, 842000, 595000);
adapter.createStreamFromPDFBoxPage(doc, page, "key", at, new FontInfo(), r);
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.