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))
{