You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by le...@apache.org on 2017/07/15 12:46:25 UTC

svn commit: r1802021 - in /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font: PDType0Font.java TrueTypeEmbedder.java

Author: lehmi
Date: Sat Jul 15 12:46:25 2017
New Revision: 1802021

URL: http://svn.apache.org/viewvc?rev=1802021&view=rev
Log:
PDFBOX-3826: don't close the given ttf but the self generated one, move the relevant code to PDType0Font

Modified:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType0Font.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/TrueTypeEmbedder.java

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType0Font.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType0Font.java?rev=1802021&r1=1802020&r2=1802021&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType0Font.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType0Font.java Sat Jul 15 12:46:25 2017
@@ -51,6 +51,7 @@ public class PDType0Font extends PDFont
     private boolean isCMapPredefined;
     private boolean isDescendantCJK;
     private PDCIDFontType2Embedder embedder;
+    private TrueTypeFont ttf;
     
     /**
      * Constructor for reading a Type0 font from a PDF file.
@@ -77,13 +78,19 @@ public class PDType0Font extends PDFont
     /**
     * Private. Creates a new TrueType font for embedding.
     */
-    private PDType0Font(PDDocument document, TrueTypeFont ttf, boolean embedSubset)
+    private PDType0Font(PDDocument document, TrueTypeFont ttf, boolean embedSubset,
+            boolean closeOnSubset)
             throws IOException
     {
         embedder = new PDCIDFontType2Embedder(document, dict, ttf, embedSubset, this);
         descendantFont = embedder.getCIDFont();
         readEncoding();
         fetchCMapUCS2();
+        if (closeOnSubset)
+        {
+            this.ttf = ttf;
+        }
+
     }
 
     /**
@@ -96,7 +103,7 @@ public class PDType0Font extends PDFont
     */
     public static PDType0Font load(PDDocument doc, File file) throws IOException
     {
-        return new PDType0Font(doc, new TTFParser().parse(file), true);
+        return new PDType0Font(doc, new TTFParser().parse(file), true, true);
     }
 
     /**
@@ -109,7 +116,7 @@ public class PDType0Font extends PDFont
     */
     public static PDType0Font load(PDDocument doc, InputStream input) throws IOException
     {
-        return new PDType0Font(doc, new TTFParser().parse(input), true);
+        return new PDType0Font(doc, new TTFParser().parse(input), true, true);
     }
 
     /**
@@ -124,7 +131,7 @@ public class PDType0Font extends PDFont
     public static PDType0Font load(PDDocument doc, InputStream input, boolean embedSubset)
             throws IOException
     {
-        return new PDType0Font(doc, new TTFParser().parse(input), embedSubset);
+        return new PDType0Font(doc, new TTFParser().parse(input), embedSubset, true);
     }
 
     /**
@@ -139,7 +146,7 @@ public class PDType0Font extends PDFont
     public static PDType0Font load(PDDocument doc, TrueTypeFont ttf, boolean embedSubset)
             throws IOException
     {
-        return new PDType0Font(doc, ttf, embedSubset);
+        return new PDType0Font(doc, ttf, embedSubset, true);
     }
 
     @Override
@@ -160,6 +167,11 @@ public class PDType0Font extends PDFont
             throw new IllegalStateException("This font was created with subsetting disabled");
         }
         embedder.subset();
+        if (ttf != null)
+        {
+            ttf.close();
+            ttf = null;
+        }
     }
     
     @Override

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/TrueTypeEmbedder.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/TrueTypeEmbedder.java?rev=1802021&r1=1802020&r2=1802021&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/TrueTypeEmbedder.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/TrueTypeEmbedder.java Sat Jul 15 12:46:25 2017
@@ -113,11 +113,6 @@ abstract class TrueTypeEmbedder implemen
         // as the stream was closed within the PDStream constructor, we have to recreate it
         try (InputStream input = stream.createInputStream())
         {
-            if (ttf != null)
-            {
-                // close the replaced TrueType font
-                ttf.close();
-            }
             ttf = new TTFParser().parseEmbedded(input);
             if (!isEmbeddingPermitted(ttf))
             {