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());
+            }
         }
     }