Hello,

we're using PDFBox to add annotations from XFDF to existing PDFs.

The basic code structure we use for this is

load the PDDocument, using PDDocument.load(File) in 2 or Loader.loadPDF(File) 
in 3
construct a PDAnnotation from the XML
fetch the PDPage the annotation is supposed to show  up in
add the PDAnnotation to PDPage.getAnnotations()
save the document with PDDocument.save(File)

Since we switched to 3.0.2 (from 3.0.0, we skipped 3.0.1) we encountered 
several PDFs which produce an IOException when saved :

java.io.IOException: Error: Unknown type in object stream:COSObject{192, 0}
        at 
org.apache.pdfbox.pdfwriter.compress.COSWriterObjectStream.writeObject(COSWriterObjectStream.java:238)
 ~[pdfbox-app-3.0.2.jar:3.0.2]
        at 
org.apache.pdfbox.pdfwriter.compress.COSWriterObjectStream.writeCOSDictionary(COSWriterObjectStream.java:341)
 ~[pdfbox-app-3.0.2.jar:3.0.2]
        at 
org.apache.pdfbox.pdfwriter.compress.COSWriterObjectStream.writeObject(COSWriterObjectStream.java:230)
 ~[pdfbox-app-3.0.2.jar:3.0.2]
        at 
org.apache.pdfbox.pdfwriter.compress.COSWriterObjectStream.writeObjectsToStream(COSWriterObjectStream.java:119)
 ~[pdfbox-app-3.0.2.jar:3.0.2]
        at 
org.apache.pdfbox.pdfwriter.COSWriter.doWriteBodyCompressed(COSWriter.java:499) 
~[pdfbox-app-3.0.2.jar:3.0.2]
        at 
org.apache.pdfbox.pdfwriter.COSWriter.visitFromDocument(COSWriter.java:1307) 
~[pdfbox-app-3.0.2.jar:3.0.2]
        at org.apache.pdfbox.cos.COSDocument.accept(COSDocument.java:429) 
~[pdfbox-app-3.0.2.jar:3.0.2]
        at org.apache.pdfbox.pdfwriter.COSWriter.write(COSWriter.java:1580) 
~[pdfbox-app-3.0.2.jar:3.0.2]
        at org.apache.pdfbox.pdfwriter.COSWriter.write(COSWriter.java:1456) 
~[pdfbox-app-3.0.2.jar:3.0.2]
        at org.apache.pdfbox.pdmodel.PDDocument.save(PDDocument.java:1038) 
~[pdfbox-app-3.0.2.jar:3.0.2]
        at org.apache.pdfbox.pdmodel.PDDocument.save(PDDocument.java:988) 
~[pdfbox-app-3.0.2.jar:3.0.2]
        at org.apache.pdfbox.pdmodel.PDDocument.save(PDDocument.java:944) 
~[pdfbox-app-3.0.2.jar:3.0.2]

As the cross reference table of this particular (source) document only goes up 
to "191 0 R" and in every observed case the reference is "+1" to the highest 
reference in the document, I assume the object referred to in the exception is 
the annotation we added.

This works fine when using 2.0.31 or 3.0.0 and fails only in 3.0.2 for a 
particular set of PDFs.
The annotation I used to reproduce this on a local server was as simple as

<?xml version="1.0" encoding="UTF-8"?>
<xfdf xmlns=http://ns.adobe.com/xfdf/ xml:space="preserve">
<annots>
<text color="#FFD100" creationdate="D:20240502085125+02'00'"
flags="print,nozoom,norotate" date="D:20240502085135+02'00'"
icon="Comment" page="0"
rect="24.331177,407.240417,48.331177,431.240417"
rotation="90" subject="Sticky Note" title="Kai.Keggenhoff">
<contents-richtext>
<body xmlns=http://www.w3.org/1999/xhtml 
xmlns:xfa=http://www.xfa.org/schema/xfa-data/1.0/ 
xfa:APIVersion="Acrobat:24.2.0" xfa:spec="2.0.2">
<p dir="ltr"><span dir="ltr" 
style="font-size:10.5pt;text-align:left;color:#000000;font-weight:normal;font-style:normal">Annotation</span></p>
</body>
</contents-richtext>
<popup flags="print,nozoom,norotate" open="no" page="0" 
rect="48.331177,3414.000000,232.331177,3506.000000"/>
</text>
</annots>
</xfdf>

and is perfectly addable to a different PDF, even with using 3.0.2
So far, we only observed only one commonality between the affected PDFs, in 
that were all created using "PDF24 Creator"

As the PDFs are customer data, I'm not allowed to share them so I'm looking for 
suggestions how to debug this further.
One note here, is COSWriterObjectStream:238 supposed to log "object" when it 
tests "base" ?!

Thanks in advance,

Kai

[cid:image001.png@01DA9D41.88E90AA0]<https://thinkproject.com/de/>
Kai Keggenhoff / Senior Software Developer

thinkproject.com <https://thinkproject.com/de>
[cid:image002.png@01DA9D41.88E90AA0]<https://www.linkedin.com/company/thinkproject-dach/posts/?feedView=all>[cid:image003.png@01DA9D41.88E90AA0]<https://twitter.com/thinkproject_>
Read our legal information (imprint) 
here<https://thinkproject.com/de/impressum/>.

Reply via email to