You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ti...@apache.org on 2019/04/09 10:17:44 UTC

svn commit: r1857156 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDResources.java

Author: tilman
Date: Tue Apr  9 10:17:44 2019
New Revision: 1857156

URL: http://svn.apache.org/viewvc?rev=1857156&view=rev
Log:
PDFBOX-4509: check for indirect fonts too

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

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDResources.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDResources.java?rev=1857156&r1=1857155&r2=1857156&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDResources.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDResources.java Tue Apr  9 10:17:44 2019
@@ -674,6 +674,22 @@ public final class PDResources implement
             return dict.getKeyForValue(object.getCOSObject());
         }
 
+        // PDFBOX-4509: It could exist as an indirect object, happens when a font is taken from the 
+        // AcroForm default resources of a loaded PDF.
+        if (dict != null && COSName.FONT.equals(kind))
+        {
+            for (Map.Entry<COSName, COSBase> entry : dict.entrySet())
+            {
+                if (entry.getValue() instanceof COSObject)
+                {
+                    if (object.getCOSObject() == ((COSObject) entry.getValue()).getObject())
+                    {
+                        return entry.getKey();
+                    }
+                }
+            }
+        }
+
         // add the item with a new key
         COSName name = createKey(kind, prefix);
         put(kind, name, object);