Derek Wickern created PDFBOX-5714:
-------------------------------------
Summary: PDFBox 3.0 regression: duplicate references in dictionary
values
Key: PDFBOX-5714
URL: https://issues.apache.org/jira/browse/PDFBOX-5714
Project: PDFBox
Issue Type: Bug
Components: Writing
Affects Versions: 3.0.0 PDFBox
Environment: macOS 14, Java 11
Reporter: Derek Wickern
Attachments: PdfboxAnnotationRegressionTest.java,
basic-sticky-note.fdf, out-pdfbox2.pdf, out-pdfbox3.pdf, w4.pdf
{{basic-sticky-note.fdf }}contains an Acrobat "sticky note", which consists of
two annotations: text (2 0 obj) and popup (3 0 obj). The annotations reference
each other. The text annotation's "/Popup 3 0 R" references the popup
annotation. The popup's "/Parent 2 0 R" references the text annotation.
{code:java}
2 0 obj
<<... /Popup 3 0 R ...>>
endobj
3 0 obj
<<... /Parent 2 0 R ...>>
endobj
{code}
The attached Java program copies those annotations onto {{{}w4.pdf{}}}, saves
the file, then reads it back to verify the result.
h3. Expected Behavior
{{out-pdfbox2.pdf}} is the output using pdfbox 2.0.30. The annotation objects
are reassigned to some available ID:
{code:java}
38 0 obj
<< ... /Popup 39 0 R ... >>
endobj
39 0 obj
<< ... /Parent 38 0 R ...>>
endobj
{code}
The program outputs:
{code:java}
correct parent? true
correct popup? true{code}
h3. Actual Behavior
{{out-pdfbox3.pdf}} is the output using pdfbox 3.0.0. The objects are assigned
a new ID but their references are unchanged, so the /Popup and /Parent
reference some other arbitrary object:
{code:java}
3473 0 obj
<< ... /Popup 3 0 R ... >>
endobj
3474 0 obj
<< ... /Parent 2 0 R ...>>
endobj
{code}
The program crashes since the dereferenced /Parent is not an annotation:
{code:java}
Exception in thread "main" java.lang.ClassCastException: class
org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotationUnknown cannot be
cast to class
org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotationMarkup
(org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotationUnknown and
org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotationMarkup are in
unnamed module of loader 'app')
at
org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotationPopup.getParent(PDAnnotationPopup.java:99)
at
PdfboxAnnotationRegressionTest.main(PdfboxAnnotationRegressionTest.java:45)
{code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]