[ 
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

Reply via email to