Author: tilman Date: Wed Aug 28 10:25:35 2024 New Revision: 1920244 URL: http://svn.apache.org/viewvc?rev=1920244&view=rev Log: PDFBOX-5873: avoid NPE, support appearance subdictionaries
Modified: pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/pdmodel/ExtractTTFFonts.java Modified: pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/pdmodel/ExtractTTFFonts.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/pdmodel/ExtractTTFFonts.java?rev=1920244&r1=1920243&r2=1920244&view=diff ============================================================================== --- pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/pdmodel/ExtractTTFFonts.java (original) +++ pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/pdmodel/ExtractTTFFonts.java Wed Aug 28 10:25:35 2024 @@ -22,6 +22,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.HashSet; +import java.util.Map; import java.util.Set; import org.apache.pdfbox.Loader; @@ -162,12 +163,17 @@ public final class ExtractTTFFonts if (appearance != null) { PDAppearanceEntry nae = appearance.getNormalAppearance(); - if (nae != null) + if (nae != null && nae.isStream()) { nas = nae.getAppearanceStream(); - if (nas != null) + processResources(nas.getResources(), prefix, addKey); + } + else if (nae != null && nae.isSubDictionary()) + { + Map<COSName, PDAppearanceStream> subDic = nae.getSubDictionary(); + for (PDAppearanceStream as : subDic.values()) { - processResources(nas.getResources(), prefix, addKey); + processResources(as.getResources(), prefix, addKey); } } } @@ -188,7 +194,8 @@ public final class ExtractTTFFonts for (COSName key : resources.getFontNames()) { PDFont font = resources.getFont(key); - System.out.println(font.getName() + " on page " + currentPage); + System.out.println((font == null || font.getName() == null ? "(null)" : font.getName()) + + " on page " + currentPage); if (fontSet.contains(font.getCOSObject())) { continue;