[ 
https://issues.apache.org/jira/browse/PDFBOX-5559?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17679599#comment-17679599
 ] 

Tilman Hausherr commented on PDFBOX-5559:
-----------------------------------------

The file  [^sample_modified.pdf] wasn't created by PDFBox, it is linearized. 
What I meant is the file after your modifications but before qpdf. My guess is 
that it has the same problem, i.e. the same page object. This isn't illegal, 
but can be risky because a modification in one page would mean the other is 
also modified. It makes no sense. Change your PDF creating code so that "new 
PDPage()" is run twice.

No need to create another issue for file.pdf - if that isn't created with 
PDFBox then it's not our problem; discuss it with the folks at qpdf or with the 
creators of file.pdf .

> QPDF prints warnings about a PDF modified by PDFBOX 
> ----------------------------------------------------
>
>                 Key: PDFBOX-5559
>                 URL: https://issues.apache.org/jira/browse/PDFBOX-5559
>             Project: PDFBox
>          Issue Type: Bug
>    Affects Versions: 2.0.27
>            Reporter: menteith85
>            Priority: Minor
>         Attachments: sample.pdf, sample_modified.pdf, screenshot-1.png
>
>
> Hi!
> I created a sample PDF file with PDAnnotationLink using PDFBox. Then I 
> changed action from PDActionURI to PDActionGoTo. The modified pdf is 
> correctly working in Okular (a pdf viewer for Linux) but *qpdf* (version 
> 11.2.0) emits the following warning:
> {code:java}
> ❯ qpdf --linearize --replace-input sample_modified.pdf 
> WARNING: sample_modified.pdf, object 2 0 at offset 88: kid 1 (from 0) appears 
> more than once in the pages tree; creating a new page object as a copy 
> qpdf: there are warnings; original file kept in 
> sample_modified.pdf.~qpdf-orig 
> qpdf: operation succeeded with warnings; resulting file may have some 
> problems{code}
> Please find below the code I used to modify pdf. I can also provide code to 
> create that pdf if needed.
> {code:java}
> final PDPage page = doc.getPage(0);
> final PDPageXYZDestination destination = new PDPageXYZDestination();
> destination.setPage(page);
> final PDActionGoTo action = new PDActionGoTo();
> action.setDestination(destination);
> final PDAnnotationLink annotationLink = new PDAnnotationLink();
> annotationLink.setAction(action);
> float X_MARGIN_LEFT = 50F;
> float BOX_WIDTH = 240F;
> float TEXT_LINE_HEIGHT = 14F;
> final PDRectangle position = new PDRectangle();
> final int x = 120;
> final int y = 120;
> position.setLowerLeftX(x);
> position.setLowerLeftY(y);
> position.setUpperRightX(X_MARGIN_LEFT + BOX_WIDTH);
> position.setUpperRightY(y + TEXT_LINE_HEIGHT);
> annotationLink.setRectangle(position);
> page.setAnnotations(List.of(annotationLink));
> doc.save("sample_modified.pdf");{code}
>  
> *qpdf* complains also about a different pdf (copyrighted) modified in similar 
> way. The warning reads:
> {code:java}
> WARNING: file.pdf: reported number of objects (12991) is not one plus the 
> highest object number (12989){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]

Reply via email to