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 2020/06/16 18:23:48 UTC

svn commit: r1878900 - /pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/TrueTypeEmbedder.java

Author: tilman
Date: Tue Jun 16 18:23:48 2020
New Revision: 1878900

URL: http://svn.apache.org/viewvc?rev=1878900&view=rev
Log:
PDFBOX-4887: check whether mark() and reset() are supported

Modified:
    pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/TrueTypeEmbedder.java

Modified: pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/TrueTypeEmbedder.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/TrueTypeEmbedder.java?rev=1878900&r1=1878899&r2=1878900&view=diff
==============================================================================
--- pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/TrueTypeEmbedder.java (original)
+++ pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/TrueTypeEmbedder.java Tue Jun 16 18:23:48 2020
@@ -94,13 +94,21 @@ abstract class TrueTypeEmbedder implemen
             // TrueType collections are not supported
             InputStream is = ttf.getOriginalData();
             byte b[] = new byte[4];
-            is.mark(b.length); // "is" is FileInputStream or ByteArrayInputStream
+            is.mark(b.length);
             if (is.read(b) == b.length && new String(b).equals("ttcf"))
             {
                 is.close();
                 throw new IOException("Full embedding of TrueType font collections not supported");
             }
-            is.reset();
+            if (is.markSupported())
+            {
+                is.reset();
+            }
+            else
+            {
+                is.close();
+                is = ttf.getOriginalData();
+            }
             PDStream stream = new PDStream(document, is, COSName.FLATE_DECODE);
             stream.getCOSObject().setLong(COSName.LENGTH1, ttf.getOriginalDataSize());
             fontDescriptor.setFontFile2(stream);