You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by le...@apache.org on 2010/06/16 19:07:14 UTC
svn commit: r955302 -
/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocument.java
Author: lehmi
Date: Wed Jun 16 17:07:13 2010
New Revision: 955302
URL: http://svn.apache.org/viewvc?rev=955302&view=rev
Log:
PDFBOX-717: added a fix for the bookmark reference table. Patch by Adam Nichols (adam at swmc dot com)
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocument.java
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocument.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocument.java?rev=955302&r1=955301&r2=955302&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocument.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocument.java Wed Jun 16 17:07:13 2010
@@ -152,11 +152,23 @@ public class PDDocument implements Pagea
// or references to arrays which have references to pages
// or references to arrays which have references to arrays which have references to pages
// or ... (I think you get the idea...)
- COSArray pageNodes = ((COSArrayList)(getDocumentCatalog().getPages().getKids())).toList();
-
- for(int arrayCounter=0; arrayCounter < pageNodes.size(); ++arrayCounter)
+ processListOfPageReferences(getDocumentCatalog().getPages().getKids());
+ }
+
+ private void processListOfPageReferences(List<Object> pageNodes)
+ {
+ for(int i=0; i < pageNodes.size(); ++i)
{
- parseCatalogObject((COSObject)pageNodes.get(arrayCounter));
+ Object pageOrArray = pageNodes.get(i);
+ if(pageOrArray instanceof PDPage)
+ {
+ COSArray pageArray = ((COSArrayList)(((PDPage)pageOrArray).getParent()).getKids()).toList();
+ parseCatalogObject((COSObject)pageArray.get(i));
+ }
+ else if(pageOrArray instanceof PDPageNode)
+ {
+ processListOfPageReferences(((PDPageNode)pageOrArray).getKids());
+ }
}
}