You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ad...@apache.org on 2010/11/23 18:35:35 UTC
svn commit: r1038216 - in /pdfbox/trunk/pdfbox/src:
main/java/org/apache/pdfbox/pdmodel/common/PDPageLabels.java
test/java/org/apache/pdfbox/pdmodel/TestPDDocumentCatalog.java
test/resources/org/apache/pdfbox/pdmodel/page_label.pdf
Author: adam
Date: Tue Nov 23 17:35:34 2010
New Revision: 1038216
URL: http://svn.apache.org/viewvc?rev=1038216&view=rev
Log:
PDFBOX-900: ArrayIndexOutOfBoundsException with extracting labels from malformed document
Patch contributed by Kevin Jackson, test case added by Adam Nichols
Added:
pdfbox/trunk/pdfbox/src/test/resources/org/apache/pdfbox/pdmodel/page_label.pdf (with props)
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/PDPageLabels.java
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/TestPDDocumentCatalog.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=1038216&r1=1038215&r2=1038216&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 Tue Nov 23 17:35:34 2010
@@ -108,7 +108,8 @@ public class PDPageLabels implements COS
Map<Integer, COSDictionary> numbers = node.getNumbers();
for (Entry<Integer, COSDictionary> i : numbers.entrySet())
{
- labels.put(i.getKey(), new PDPageLabelRange(i.getValue()));
+ if(i.getKey() >= 0)
+ labels.put(i.getKey(), new PDPageLabelRange(i.getValue()));
}
}
}
Modified: pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/TestPDDocumentCatalog.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/TestPDDocumentCatalog.java?rev=1038216&r1=1038215&r2=1038216&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/TestPDDocumentCatalog.java (original)
+++ pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/TestPDDocumentCatalog.java Tue Nov 23 17:35:34 2010
@@ -16,6 +16,7 @@
*/
package org.apache.pdfbox.pdmodel;
+import java.io.File;
import junit.framework.TestCase;
public class TestPDDocumentCatalog extends TestCase {
@@ -26,10 +27,9 @@ public class TestPDDocumentCatalog exten
* >PDFBOX-90</a> - Support explicit retrieval of page labels.
*/
public void testPageLabels() throws Exception {
- PDDocument doc = PDDocument.load(
- TestPDDocumentCatalog.class.getResourceAsStream(
- "test_pagelabels.pdf"));
+ PDDocument doc = null;
try {
+ doc = PDDocument.load("pdfbox/pdfbox/src/test/resources/org/apache/pdfbox/pdmodel/test_pagelabels.pdf");
PDDocumentCatalog cat = doc.getDocumentCatalog();
String[] labels = cat.getPageLabels().getLabelsByPageIndices();
assertEquals(12, labels.length);
@@ -46,8 +46,29 @@ public class TestPDDocumentCatalog exten
assertEquals("Appendix I", labels[10]);
assertEquals("Appendix II", labels[11]);
} finally {
- doc.close();
+ if(doc != null)
+ doc.close();
}
}
+ /**
+ * Test case for
+ * <a href="https://issues.apache.org/jira/browse/PDFBOX-900"
+ * >PDFBOX-900</a> - Handle malformed PDFs
+ */
+ public void testLabelsOnMalformedPdf() throws Exception {
+ PDDocument doc = null;
+ try {
+ doc = PDDocument.load("pdfbox/pdfbox/src/test/resources/org/apache/pdfbox/pdmodel/page_label.pdf");
+ PDDocumentCatalog cat = doc.getDocumentCatalog();
+ // getLabelsByPageIndices() should not throw an exception
+ String[] labels = cat.getPageLabels().getLabelsByPageIndices();
+ } catch(Exception e) {
+ e.printStackTrace();
+ fail("Threw exception!");
+ } finally {
+ if(doc != null)
+ doc.close();
+ }
+ }
}
Added: pdfbox/trunk/pdfbox/src/test/resources/org/apache/pdfbox/pdmodel/page_label.pdf
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/test/resources/org/apache/pdfbox/pdmodel/page_label.pdf?rev=1038216&view=auto
==============================================================================
Binary file - no diff available.
Propchange: pdfbox/trunk/pdfbox/src/test/resources/org/apache/pdfbox/pdmodel/page_label.pdf
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream