[ 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: dev-unsubscr...@pdfbox.apache.org For additional commands, e-mail: dev-h...@pdfbox.apache.org