Hi,
Sorry for the late answer. Please share the PDF, your screenshots didn't
get through. This is weird, /D [5 0 R /Fit] means the array has two
elements?! Maybe the "bad" object is elsewhere?
Tilman
On 01.12.2022 10:32, Thomas Sörensen wrote:
Hi
I have pdf file with a lot of links. They generally look like this in
Foxit.
In notepad the links look something like this:
/Subtype /Link
/A 140 0 R
/Type /Annot
/Rect [561.26 196.299 572.598 234.567]
>>
endobj
140 0 obj
<<
/D [5 0 R /Fit]
/Next 307 0 R
/Type /Action
/S /GoTo
>>
endobj
When attempting to split the pdf using the following code:
final PDDocument p1PD = PDDocument.load(p1.toFile());
final Splitter splitter = new Splitter();
final List<PDDocument> listPDFPages1 = splitter.split(p1PD);
I get the following exception:
java.io.IOException: Error: can't convert to Destination
COSArray{[COSName{Fit}]}
at
org.apache.pdfbox.pdmodel.interactive.documentnavigation.destination.PDDestination.create(PDDestination.java:98)
at
org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotationLink.getDestination(PDAnnotationLink.java:148)
It is thrown from PDDestination.create(COSBase base):98.
It happens because base is an COSArray with only one item [COSName{fit}]
If I change the code in Splitter to catch the exception and ignore it:
It will process all the annotations and annotation links and simply
ignore the error.
The splitted pages now contain links that look like this:
91 0 obj
<<
/D [null /Fit]
/Next 178 0 R
/Type /Action
/S /GoTo
>>
endobj
Now instead of /D [5 0 R /Fit] it is /D [*null* /Fit]
If I now try to process the annotations of the page
PDAnnotationLink.getDestination will not throw an Exception anymore
because the argument base will contain an COSArray the contains two
items [COSNull{},COSName{fit}]
I don’t know how to interpret this. My solution for right now is to
use my own customized copy of the Splitter class that simply absorb
the exception.
I feel like that for some reason PDFBox is ignoring the 5 0 R part of
/D [5 0 R /Fit] when building the annotations. I don’t know enough
about the PDF Spec to tell what it does.
I am using PDFBox 2.0.27
BR
Thomas