From 142ae43d6333de7bbd17aa98d6a3107a02c759c8 Mon Sep 17 00:00:00 2001 From: Simon Steiner Date: Fri, 9 Sep 2022 14:52:08 +0000 Subject: FOP-3092: PDF/UA NPE when using external pdf git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@1903941 13f79535-47bb-0310-9956-ffa450edef68 --- .../src/main/java/org/apache/fop/pdf/PDFStructElem.java | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) (limited to 'fop-core/src/main') diff --git a/fop-core/src/main/java/org/apache/fop/pdf/PDFStructElem.java b/fop-core/src/main/java/org/apache/fop/pdf/PDFStructElem.java index 603402ac2..8386241c8 100644 --- a/fop-core/src/main/java/org/apache/fop/pdf/PDFStructElem.java +++ b/fop-core/src/main/java/org/apache/fop/pdf/PDFStructElem.java @@ -37,6 +37,8 @@ import org.apache.fop.util.LanguageTags; */ public class PDFStructElem extends StructureHierarchyMember implements StructureTreeElement, CompressedObject, Serializable { + private static final List BLSE = Arrays.asList(StandardStructureTypes.Table.TABLE, + StandardStructureTypes.List.L, StandardStructureTypes.Paragraphlike.P); private static final long serialVersionUID = -3055241807589202532L; private StructureType structureType; @@ -253,12 +255,9 @@ public class PDFStructElem extends StructureHierarchyMember put("Alt", "No alternate text specified"); } else if (kids != null) { for (PDFObject kid : kids) { - if (kid instanceof PDFStructElem - && !(kid instanceof Placeholder) - && structureType.toString().equals("P") - && isBSLE(((PDFStructElem) kid).getStructureType().toString())) { + if (kid instanceof PDFStructElem && isBSLE(((PDFStructElem) kid))) { structureType = StandardStructureTypes.Grouping.DIV; - put("S", StandardStructureTypes.Grouping.DIV.getName()); + put("S", structureType.getName()); break; } } @@ -267,9 +266,9 @@ public class PDFStructElem extends StructureHierarchyMember return super.output(stream); } - private boolean isBSLE(String type) { - String[] blseValues = {"Table", "L", "P"}; - return Arrays.asList(blseValues).contains(type); + private boolean isBSLE(PDFStructElem kid) { + boolean pType = !(kid instanceof Placeholder) && structureType == StandardStructureTypes.Paragraphlike.P; + return pType && BLSE.contains(kid.getStructureType()); } /** -- cgit v1.2.3