[ 
https://issues.apache.org/jira/browse/PDFBOX-3071?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14983138#comment-14983138
 ] 

Stan R commented on PDFBOX-3071:
--------------------------------

I was passing in a complete HTTP response entity's InputStream from the Apache 
HTTP client, as follows:

 document = PDDocument.load(httpStream);

To avoid any possible problems with chunking buffered streams, I changed the 
above to:

document = PDDOcument.load(IOUtils.toByteArray(httpStream));

which flushes the entire stream to a byte array.  Now, in addition to the 
exception exactly like above, I am also getting a different exception while 
concurrently rendering the pages of the same document I referred to in the 
issue description.  This is the exception:

...
WARN   [15:19:33.229] [pool-3-thread-16] o.a.p.f.FlateFilter -  FlateFilter: 
premature end of stream due to a DataFormatException 
ERROR  [15:19:33.352] [pool-3-thread-16] o.a.p.p.f.PDType1CFont -  Can't read 
the embedded Type1C font ILCMJJ+TimesNewRomanPSMT 
java.io.EOFException: null
        at org.apache.fontbox.cff.DataInput.readUnsignedByte(DataInput.java:99) 
~[fontbox-2.0.0-20151029.222033-1854.jar:2.0.0-SNAPSHOT]
        at org.apache.fontbox.cff.CFFDataInput.readCard8(CFFDataInput.java:45) 
~[fontbox-2.0.0-20151029.222033-1854.jar:2.0.0-SNAPSHOT]
        at org.apache.fontbox.cff.CFFParser.readIndexData(CFFParser.java:166) 
~[fontbox-2.0.0-20151029.222033-1854.jar:2.0.0-SNAPSHOT]
        at org.apache.fontbox.cff.CFFParser.parseFont(CFFParser.java:393) 
~[fontbox-2.0.0-20151029.222033-1854.jar:2.0.0-SNAPSHOT]
        at org.apache.fontbox.cff.CFFParser.parse(CFFParser.java:115) 
~[fontbox-2.0.0-20151029.222033-1854.jar:2.0.0-SNAPSHOT]
        at 
org.apache.pdfbox.pdmodel.font.PDType1CFont.<init>(PDType1CFont.java:101) 
~[pdfbox-2.0.0-20151029.222208-1801.jar:2.0.0-SNAPSHOT]
        at 
org.apache.pdfbox.pdmodel.font.PDFontFactory.createFont(PDFontFactory.java:60) 
[pdfbox-2.0.0-20151029.222208-1801.jar:2.0.0-SNAPSHOT]
        at org.apache.pdfbox.pdmodel.PDResources.getFont(PDResources.java:123) 
[pdfbox-2.0.0-20151029.222208-1801.jar:2.0.0-SNAPSHOT]
        at 
org.apache.pdfbox.contentstream.operator.text.SetFontAndSize.process(SetFontAndSize.java:60)
 [pdfbox-2.0.0-20151029.222208-1801.jar:2.0.0-SNAPSHOT]
        at 
org.apache.pdfbox.contentstream.PDFStreamEngine.processOperator(PDFStreamEngine.java:811)
 [pdfbox-2.0.0-20151029.222208-1801.jar:2.0.0-SNAPSHOT]
        at 
org.apache.pdfbox.contentstream.PDFStreamEngine.processStreamOperators(PDFStreamEngine.java:468)
 [pdfbox-2.0.0-20151029.222208-1801.jar:2.0.0-SNAPSHOT]
        at 
org.apache.pdfbox.contentstream.PDFStreamEngine.processStream(PDFStreamEngine.java:442)
 [pdfbox-2.0.0-20151029.222208-1801.jar:2.0.0-SNAPSHOT]
        at 
org.apache.pdfbox.contentstream.PDFStreamEngine.processPage(PDFStreamEngine.java:149)
 [pdfbox-2.0.0-20151029.222208-1801.jar:2.0.0-SNAPSHOT]
        at org.apache.pdfbox.rendering.PageDrawer.drawPage(PageDrawer.java:179) 
[pdfbox-2.0.0-20151029.222208-1801.jar:2.0.0-SNAPSHOT]
        at 
org.apache.pdfbox.rendering.PDFRenderer.renderPage(PDFRenderer.java:208) 
[pdfbox-2.0.0-20151029.222208-1801.jar:2.0.0-SNAPSHOT]
        at 
org.apache.pdfbox.rendering.PDFRenderer.renderImage(PDFRenderer.java:139) 
[pdfbox-2.0.0-20151029.222208-1801.jar:2.0.0-SNAPSHOT]
        at 
org.apache.pdfbox.rendering.PDFRenderer.renderImage(PDFRenderer.java:68) 
[pdfbox-2.0.0-20151029.222208-1801.jar:2.0.0-SNAPSHOT]
        at 
org.apache.pdfbox.rendering.PDFRenderer.renderImage(PDFRenderer.java:55) 
[pdfbox-2.0.0-20151029.222208-1801.jar:2.0.0-SNAPSHOT]
        at 
com.cleverium.filltheseforms.core.pdf.AsyncPDFRenderer$RenderPDFPageTask.call(AsyncPDFRenderer.java:112)
 [classes/:na]
        at 
com.cleverium.filltheseforms.core.pdf.AsyncPDFRenderer$RenderPDFPageTask.call(AsyncPDFRenderer.java:91)
 [classes/:na]
        at java.util.concurrent.FutureTask.run(FutureTask.java:262) 
[na:1.7.0_79]
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
[na:1.7.0_79]
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
[na:1.7.0_79]
        at java.lang.Thread.run(Thread.java:745) [na:1.7.0_79]
WARN   [15:19:33.754] [pool-3-thread-16] o.a.p.p.f.FileSystemFontProvider -  
New fonts found, font cache will be re-built 
WARN   [15:19:33.754] [pool-3-thread-16] o.a.p.p.f.FileSystemFontProvider -  
Building font cache, this may take a while 
...

Using the byte array should preclude any issues with the implementation of the 
input stream, right?

Another maybe relevant observation is that, I think, every time this exception 
occurs I get the log entry about font caching being rebuilt.

> Possible thread safety issue RE: Can't read the embedded Type1C font 
> ILCMJJ+TimesNewRomanPSMT
> ---------------------------------------------------------------------------------------------
>
>                 Key: PDFBOX-3071
>                 URL: https://issues.apache.org/jira/browse/PDFBOX-3071
>             Project: PDFBox
>          Issue Type: Bug
>          Components: FontBox
>    Affects Versions: 2.0.0
>         Environment: JDK 1.7.0_79 on RHEL7 x86_64
>            Reporter: Stan R
>         Attachments: PDFBOX-3071.pdf
>
>
> Further testing reveals that this specific error crops up randomly, and 
> sometimes simultaneously, while rendering multiple pages from the same 
> document concurrently. Possibly a thread safety issue with Fontbox?
> The rendering happens inside a batch of Callable's running inside a 32-thread 
> Executor. The code snippet from inside the body of the Callable.call() is 
> really trivial:
> ...
> PDFRenderer renderer = new PDFRenderer(document); // referring to the same 
> document object
> BufferedImage image = renderer.renderImage(pageIdx); // exception thrown from 
> here
> ...
> ===== ORIGINAL ISSUE REPORT FOLLOWS ====
> Got an exception when rendering page 2 of the file.
> The file shows up fine in evince and pdfjs;  it appears to be the same font 
> as everywhere else in the file (but I haven't looked inside the PDF).
> The exception is listed below:
> WARN   [11:19:10.057] [pool-3-thread-3] o.a.p.f.FlateFilter -  FlateFilter: 
> premature end of stream due to a DataFormatException 
> ERROR  [11:19:10.073] [pool-3-thread-3] o.a.p.p.f.PDType1CFont -  Can't read 
> the embedded Type1C font ILCMJJ+TimesNewRomanPSMT 
> java.io.IOException: illegal offset value 8238 in CFF font
>       at org.apache.fontbox.cff.CFFParser.readIndexData(CFFParser.java:158) 
> ~[fontbox-2.0.0-20151027.193416-1850.jar:2.0.0-SNAPSHOT]
>       at org.apache.fontbox.cff.CFFParser.parseFont(CFFParser.java:393) 
> ~[fontbox-2.0.0-20151027.193416-1850.jar:2.0.0-SNAPSHOT]
>       at org.apache.fontbox.cff.CFFParser.parse(CFFParser.java:115) 
> ~[fontbox-2.0.0-20151027.193416-1850.jar:2.0.0-SNAPSHOT]
>       at 
> org.apache.pdfbox.pdmodel.font.PDType1CFont.<init>(PDType1CFont.java:101) 
> ~[pdfbox-2.0.0-20151027.193546-1797.jar:2.0.0-SNAPSHOT]
>       at 
> org.apache.pdfbox.pdmodel.font.PDFontFactory.createFont(PDFontFactory.java:60)
>  [pdfbox-2.0.0-20151027.193546-1797.jar:2.0.0-SNAPSHOT]
>       at org.apache.pdfbox.pdmodel.PDResources.getFont(PDResources.java:123) 
> [pdfbox-2.0.0-20151027.193546-1797.jar:2.0.0-SNAPSHOT]
>       at 
> org.apache.pdfbox.contentstream.operator.text.SetFontAndSize.process(SetFontAndSize.java:60)
>  [pdfbox-2.0.0-20151027.193546-1797.jar:2.0.0-SNAPSHOT]
>       at 
> org.apache.pdfbox.contentstream.PDFStreamEngine.processOperator(PDFStreamEngine.java:811)
>  [pdfbox-2.0.0-20151027.193546-1797.jar:2.0.0-SNAPSHOT]
>       at 
> org.apache.pdfbox.contentstream.PDFStreamEngine.processStreamOperators(PDFStreamEngine.java:468)
>  [pdfbox-2.0.0-20151027.193546-1797.jar:2.0.0-SNAPSHOT]
>       at 
> org.apache.pdfbox.contentstream.PDFStreamEngine.processStream(PDFStreamEngine.java:442)
>  [pdfbox-2.0.0-20151027.193546-1797.jar:2.0.0-SNAPSHOT]
>       at 
> org.apache.pdfbox.contentstream.PDFStreamEngine.processPage(PDFStreamEngine.java:149)
>  [pdfbox-2.0.0-20151027.193546-1797.jar:2.0.0-SNAPSHOT]
>       at org.apache.pdfbox.rendering.PageDrawer.drawPage(PageDrawer.java:179) 
> [pdfbox-2.0.0-20151027.193546-1797.jar:2.0.0-SNAPSHOT]
>       at 
> org.apache.pdfbox.rendering.PDFRenderer.renderPage(PDFRenderer.java:208) 
> [pdfbox-2.0.0-20151027.193546-1797.jar:2.0.0-SNAPSHOT]
>       at 
> org.apache.pdfbox.rendering.PDFRenderer.renderImage(PDFRenderer.java:139) 
> [pdfbox-2.0.0-20151027.193546-1797.jar:2.0.0-SNAPSHOT]
>       at 
> org.apache.pdfbox.rendering.PDFRenderer.renderImage(PDFRenderer.java:68) 
> [pdfbox-2.0.0-20151027.193546-1797.jar:2.0.0-SNAPSHOT]
>       at 
> org.apache.pdfbox.rendering.PDFRenderer.renderImage(PDFRenderer.java:55) 
> [pdfbox-2.0.0-20151027.193546-1797.jar:2.0.0-SNAPSHOT]
>       at 
> com.example.core.pdf.AsyncPDFRenderer$RenderPDFPageTask.call(AsyncPDFRenderer.java:109)
>  [classes/:na]
>       at 
> com.example.core.pdf.AsyncPDFRenderer$RenderPDFPageTask.call(AsyncPDFRenderer.java:90)
>  [classes/:na]
>       at java.util.concurrent.FutureTask.run(FutureTask.java:262) 
> [na:1.7.0_79]
>       at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>  [na:1.7.0_79]
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>  [na:1.7.0_79]
>       at java.lang.Thread.run(Thread.java:745) [na:1.7.0_79]
> WARN   [11:19:10.350] [pool-3-thread-3] o.a.p.p.f.FileSystemFontProvider -  
> New fonts found, font cache will be re-built 
> WARN   [11:19:10.350] [pool-3-thread-3] o.a.p.p.f.FileSystemFontProvider -  
> Building font cache, this may take a while
> ...



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to