[
https://issues.apache.org/jira/browse/PDFBOX-5927?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17913232#comment-17913232
]
Christian Appl commented on PDFBOX-5927:
----------------------------------------
[~tilman] sorry for taking so long to reply, I was on vacation.
First of all - thank you for bringing this to my attention, I will consider
this going forward.
*TL;DR:* I agree to your change and the bugfix.
*Meaning of topLevel:*
I think you got that right. I meant to say:
The object must not be included in this objectstream - just reference it and
don“t worry about it. -> The object is placed elsewhere in the document -
probably at the "top level"/"root"/"body" of the PDF document. Meaning - yes
that would refer to objects written by the COSWriter later without applying
compression.
*Concerning the issue:*
I do not actually remember, whether I had an actual reason for trying to
include referenced "key objects" into object streams. But considering your
findings I doubt, that this decision was made on purpose. I rather assume, that
I was ignorant concerning this issue and did not give it proper thought,
whether a key itself could be a referenced COSObject. I agree to your bugfix.
> Saved file has "Invalid dictionary" when reloading
> --------------------------------------------------
>
> Key: PDFBOX-5927
> URL: https://issues.apache.org/jira/browse/PDFBOX-5927
> Project: PDFBox
> Issue Type: Bug
> Components: Writing
> Affects Versions: 3.0.3 PDFBox, 4.0.0
> Reporter: Tilman Hausherr
> Assignee: Tilman Hausherr
> Priority: Major
> Fix For: 3.0.4 PDFBox, 4.0.0
>
> Attachments: ObjStm.txt, SO79293670-saved.pdf, SO79293670.pdf,
> screenshot-1.png, screenshot-2.png, screenshot-3.png
>
>
> {code:java}
> try (PDDocument doc = Loader.loadPDF(new File("SO79293670.pdf")))
> {
> doc.save(new File("SO79293670-saved.pdf")); //,
> CompressParameters.NO_COMPRESSION);
> }
> try (PDDocument doc = Loader.loadPDF(new File("SO79293670-saved.pdf")))
> {
> PDAcroForm acroForm = doc.getDocumentCatalog().getAcroForm();
> PDCheckBox cb = (PDCheckBox) acroForm.getField("chkPrivacy1");
> System.out.println(cb.isChecked()); // should be true
> }
> {code}
> The output:
> {noformat}
> 19.12.2024 16:48:15 WARN pdfparser.BaseParser.parseCOSDictionary:308 -
> Invalid dictionary, found: '3' but expected: '/' at offset 12814
> 19.12.2024 16:48:15 WARN pdfparser.BaseParser.parseCOSDictionary:308 -
> Invalid dictionary, found: '3' but expected: '/' at offset 12851
> false
> {noformat}
> The offsets are in the object stream.
> When opening the modified file with Adobe Reader, I get
> !screenshot-1.png!
> And after clicking CTRL-RETURN I get
> !screenshot-2.png!
> The problem does not happen when saving with compression disabled.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]