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/10/17 19:33:17 UTC

svn commit: r1023531 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/PDPageLabels.java

Author: lehmi
Date: Sun Oct 17 17:33:17 2010
New Revision: 1023531

URL: http://svn.apache.org/viewvc?rev=1023531&view=rev
Log:
PDFBOX-856: added support for the kids of a PDNumberTreeNode as suggested by Kevin Jackson

Modified:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/PDPageLabels.java

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/PDPageLabels.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/PDPageLabels.java?rev=1023531&r1=1023530&r2=1023531&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/PDPageLabels.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/PDPageLabels.java Sun Oct 17 17:33:17 2010
@@ -19,6 +19,7 @@ package org.apache.pdfbox.pdmodel.common
 import java.io.IOException;
 import java.util.HashMap;
 import java.util.Iterator;
+import java.util.List;
 import java.util.Map;
 import java.util.NoSuchElementException;
 import java.util.SortedMap;
@@ -93,13 +94,26 @@ public class PDPageLabels implements COS
             return;
         }
         PDNumberTreeNode root = new PDNumberTreeNode(dict, COSDictionary.class);
-        Map<Integer, COSDictionary> numbers = root.getNumbers();
-        for (Entry<Integer, COSDictionary> i : numbers.entrySet())
-        {
-            labels.put(i.getKey(), new PDPageLabelRange(i.getValue()));
+        findLabels(root);
+    }
+    
+    private void findLabels(PDNumberTreeNode node) throws IOException {
+        if (node.getKids() != null) {
+            List<PDNumberTreeNode> kids = node.getKids();
+            for (PDNumberTreeNode kid : kids) {
+                findLabels(kid);
+            }
+        }
+        else if (node.getNumbers() != null) {
+            Map<Integer, COSDictionary> numbers = node.getNumbers();
+            for (Entry<Integer, COSDictionary> i : numbers.entrySet())
+            {
+                labels.put(i.getKey(), new PDPageLabelRange(i.getValue()));
+            }
         }
     }
 
+
     /**
      * Returns the number of page label ranges.
      *