FOP-2746: PDF to PDF NPE during structuretree merge
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop-pdf-images/trunk@1810355 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/java/org/apache/fop/render/pdf/pdfbox/StructureTreeMerger.java b/src/java/org/apache/fop/render/pdf/pdfbox/StructureTreeMerger.java
index 2436fc8..2201c9c 100644
--- a/src/java/org/apache/fop/render/pdf/pdfbox/StructureTreeMerger.java
+++ b/src/java/org/apache/fop/render/pdf/pdfbox/StructureTreeMerger.java
@@ -132,8 +132,10 @@
for (COSBase entry : markedContentParents) {
COSObject elemCos = (COSObject)entry;
COSObject elemParent = (COSObject)elemCos.getItem(COSName.P);
- PDFStructElem elem = structElemCache.get((int)elemCos.getObjectNumber());
- createParents(elemCos, elemParent, elem);
+ if (elemParent != null) {
+ PDFStructElem elem = structElemCache.get((int)elemCos.getObjectNumber());
+ createParents(elemCos, elemParent, elem);
+ }
}
}
diff --git a/test/java/org/apache/fop/render/pdf/StructureTreeMergerTestCase.java b/test/java/org/apache/fop/render/pdf/StructureTreeMergerTestCase.java
index 89905fd..bad5ae9 100644
--- a/test/java/org/apache/fop/render/pdf/StructureTreeMergerTestCase.java
+++ b/test/java/org/apache/fop/render/pdf/StructureTreeMergerTestCase.java
@@ -218,4 +218,17 @@
String test = name.getName();
Assert.assertEquals(test, "P");
}
+
+ @Test
+ public void testEmptyDict() throws IOException {
+ adapter = new PDFBoxAdapter(pdfPage, new HashMap(), new HashMap<Integer, PDFArray>());
+ StructureTreeMerger structureTreeMerger = new StructureTreeMerger(null, null, adapter, null);
+ COSArray cosArray = new COSArray();
+ COSObject o = new COSObject(new COSDictionary());
+ o.setObjectNumber(1);
+ o.setGenerationNumber(1);
+ cosArray.add(o);
+ structureTreeMerger.copyStructure(cosArray);
+ structureTreeMerger.addToPageParentTreeArray();
+ }
}