[ https://issues.apache.org/jira/browse/PDFBOX-2824?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14580917#comment-14580917 ]
Kenneth Kirk commented on PDFBOX-2824: -------------------------------------- Added the synchronized keyword the getPath method of TrueTypeFont.java and still got the error. Below in the stack trace you can see the three threads error out. java.lang.ArrayIndexOutOfBoundsException: Array index out of range: 62558 java.lang.ArrayIndexOutOfBoundsException: Array index out of range: 8 at org.apache.fontbox.ttf.GlyfSimpleDescript.readFlags(GlyfSimpleDescript.java:202) at org.apache.fontbox.ttf.GlyfSimpleDescript.<init>(GlyfSimpleDescript.java:77) at org.apache.fontbox.ttf.GlyphData.initData(GlyphData.java:58) at org.apache.fontbox.ttf.GlyphTable.getGlyph(GlyphTable.java:161) at org.apache.pdfbox.rendering.TTFGlyph2D.getPathForGID(TTFGlyph2D.java:140) at org.apache.pdfbox.rendering.TTFGlyph2D.getPathForCharacterCode(TTFGlyph2D.java:92) at org.apache.pdfbox.rendering.PageDrawer.drawGlyph2D(PageDrawer.java:333) at org.apache.pdfbox.rendering.PageDrawer.showFontGlyph(PageDrawer.java:314) at org.apache.pdfbox.contentstream.PDFStreamEngine.showGlyph(PDFStreamEngine.java:731) at org.apache.pdfbox.contentstream.PDFStreamEngine.showText(PDFStreamEngine.java:690) at org.apache.pdfbox.rendering.PageDrawer.showText(PageDrawer.java:296) at org.apache.pdfbox.contentstream.PDFStreamEngine.showTextStrings(PDFStreamEngine.java:600) at org.apache.pdfbox.contentstream.operator.text.ShowTextAdjusted.process(ShowTextAdjusted.java:38) at org.apache.pdfbox.contentstream.PDFStreamEngine.processOperator(PDFStreamEngine.java:802) at org.apache.pdfbox.contentstream.PDFStreamEngine.processStreamOperators(PDFStreamEngine.java:464) at org.apache.pdfbox.contentstream.PDFStreamEngine.processStream(PDFStreamEngine.java:438) at org.apache.pdfbox.contentstream.PDFStreamEngine.processPage(PDFStreamEngine.java:149) at org.apache.pdfbox.rendering.PageDrawer.drawPage(PageDrawer.java:179) at org.apache.pdfbox.rendering.PDFRenderer.renderPage(PDFRenderer.java:205) at org.apache.pdfbox.rendering.PDFRenderer.renderImage(PDFRenderer.java:136) at org.apache.pdfbox.rendering.PDFRenderer.renderImageWithDPI(PDFRenderer.java:95) at org.ilsos.cm.export.client.workers.Pdf2SinglePageTiff.processResult(Pdf2SinglePageTiff.java:139) at org.ilsos.cm.export.client.ExportWorker.run(ExportWorker.java:69) at java.lang.Thread.run(Thread.java:784) at org.apache.fontbox.ttf.GlyfSimpleDescript.readFlags(GlyfSimpleDescript.java:202) at org.apache.fontbox.ttf.GlyfSimpleDescript.<init>(GlyfSimpleDescript.java:77) at org.apache.fontbox.ttf.GlyphData.initData(GlyphData.java:58) at org.apache.fontbox.ttf.GlyphTable.getGlyph(GlyphTable.java:161) at org.apache.pdfbox.rendering.TTFGlyph2D.getPathForGID(TTFGlyph2D.java:140) at org.apache.pdfbox.rendering.TTFGlyph2D.getPathForCharacterCode(TTFGlyph2D.java:92) at org.apache.pdfbox.rendering.PageDrawer.drawGlyph2D(PageDrawer.java:333) at org.apache.pdfbox.rendering.PageDrawer.showFontGlyph(PageDrawer.java:314) at org.apache.pdfbox.contentstream.PDFStreamEngine.showGlyph(PDFStreamEngine.java:731) at org.apache.pdfbox.contentstream.PDFStreamEngine.showText(PDFStreamEngine.java:690) at org.apache.pdfbox.rendering.PageDrawer.showText(PageDrawer.java:296) at org.apache.pdfbox.contentstream.PDFStreamEngine.showTextStrings(PDFStreamEngine.java:600) at org.apache.pdfbox.contentstream.operator.text.ShowTextAdjusted.process(ShowTextAdjusted.java:38) at org.apache.pdfbox.contentstream.PDFStreamEngine.processOperator(PDFStreamEngine.java:802) at org.apache.pdfbox.contentstream.PDFStreamEngine.processStreamOperators(PDFStreamEngine.java:464) at org.apache.pdfbox.contentstream.PDFStreamEngine.processStream(PDFStreamEngine.java:438) at org.apache.pdfbox.contentstream.PDFStreamEngine.processPage(PDFStreamEngine.java:149) at org.apache.pdfbox.rendering.PageDrawer.drawPage(PageDrawer.java:179) at org.apache.pdfbox.rendering.PDFRenderer.renderPage(PDFRenderer.java:205) at org.apache.pdfbox.rendering.PDFRenderer.renderImage(PDFRenderer.java:136) at org.apache.pdfbox.rendering.PDFRenderer.renderImageWithDPI(PDFRenderer.java:95) at org.ilsos.cm.export.client.workers.Pdf2SinglePageTiff.processResult(Pdf2SinglePageTiff.java:139) at org.ilsos.cm.export.client.ExportWorker.run(ExportWorker.java:69) at java.lang.Thread.run(Thread.java:784) java.lang.ArrayIndexOutOfBoundsException: Array index out of range: 8 at org.apache.fontbox.ttf.GlyfSimpleDescript.readFlags(GlyfSimpleDescript.java:202) at org.apache.fontbox.ttf.GlyfSimpleDescript.<init>(GlyfSimpleDescript.java:77) at org.apache.fontbox.ttf.GlyphData.initData(GlyphData.java:58) at org.apache.fontbox.ttf.GlyphTable.getGlyph(GlyphTable.java:161) at org.apache.pdfbox.rendering.TTFGlyph2D.getPathForGID(TTFGlyph2D.java:140) at org.apache.pdfbox.rendering.TTFGlyph2D.getPathForCharacterCode(TTFGlyph2D.java:92) at org.apache.pdfbox.rendering.PageDrawer.drawGlyph2D(PageDrawer.java:333) at org.apache.pdfbox.rendering.PageDrawer.showFontGlyph(PageDrawer.java:314) at org.apache.pdfbox.contentstream.PDFStreamEngine.showGlyph(PDFStreamEngine.java:731) at org.apache.pdfbox.contentstream.PDFStreamEngine.showText(PDFStreamEngine.java:690) at org.apache.pdfbox.rendering.PageDrawer.showText(PageDrawer.java:296) at org.apache.pdfbox.contentstream.PDFStreamEngine.showTextStrings(PDFStreamEngine.java:600) at org.apache.pdfbox.contentstream.operator.text.ShowTextAdjusted.process(ShowTextAdjusted.java:38) at org.apache.pdfbox.contentstream.PDFStreamEngine.processOperator(PDFStreamEngine.java:802) at org.apache.pdfbox.contentstream.PDFStreamEngine.processStreamOperators(PDFStreamEngine.java:464) at org.apache.pdfbox.contentstream.PDFStreamEngine.processStream(PDFStreamEngine.java:438) at org.apache.pdfbox.contentstream.PDFStreamEngine.processPage(PDFStreamEngine.java:149) at org.apache.pdfbox.rendering.PageDrawer.drawPage(PageDrawer.java:179) at org.apache.pdfbox.rendering.PDFRenderer.renderPage(PDFRenderer.java:205) at org.apache.pdfbox.rendering.PDFRenderer.renderImage(PDFRenderer.java:136) at org.apache.pdfbox.rendering.PDFRenderer.renderImageWithDPI(PDFRenderer.java:95) at org.ilsos.cm.export.client.workers.Pdf2SinglePageTiff.processResult(Pdf2SinglePageTiff.java:139) at org.ilsos.cm.export.client.ExportWorker.run(ExportWorker.java:69) at java.lang.Thread.run(Thread.java:784) java.lang.ArrayIndexOutOfBoundsException: Array index out of range: 62558 at org.apache.fontbox.ttf.GlyfSimpleDescript.readFlags(GlyfSimpleDescript.java:202) at org.apache.fontbox.ttf.GlyfSimpleDescript.<init>(GlyfSimpleDescript.java:77) at org.apache.fontbox.ttf.GlyphData.initData(GlyphData.java:58) at org.apache.fontbox.ttf.GlyphTable.getGlyph(GlyphTable.java:161) at org.apache.pdfbox.rendering.TTFGlyph2D.getPathForGID(TTFGlyph2D.java:140) at org.apache.pdfbox.rendering.TTFGlyph2D.getPathForCharacterCode(TTFGlyph2D.java:92) at org.apache.pdfbox.rendering.PageDrawer.drawGlyph2D(PageDrawer.java:333) at org.apache.pdfbox.rendering.PageDrawer.showFontGlyph(PageDrawer.java:314) at org.apache.pdfbox.contentstream.PDFStreamEngine.showGlyph(PDFStreamEngine.java:731) at org.apache.pdfbox.contentstream.PDFStreamEngine.showText(PDFStreamEngine.java:690) at org.apache.pdfbox.rendering.PageDrawer.showText(PageDrawer.java:296) at org.apache.pdfbox.contentstream.PDFStreamEngine.showTextStrings(PDFStreamEngine.java:600) at org.apache.pdfbox.contentstream.operator.text.ShowTextAdjusted.process(ShowTextAdjusted.java:38) at org.apache.pdfbox.contentstream.PDFStreamEngine.processOperator(PDFStreamEngine.java:802) at org.apache.pdfbox.contentstream.PDFStreamEngine.processStreamOperators(PDFStreamEngine.java:464) at org.apache.pdfbox.contentstream.PDFStreamEngine.processStream(PDFStreamEngine.java:438) at org.apache.pdfbox.contentstream.PDFStreamEngine.processPage(PDFStreamEngine.java:149) at org.apache.pdfbox.rendering.PageDrawer.drawPage(PageDrawer.java:179) at org.apache.pdfbox.rendering.PDFRenderer.renderPage(PDFRenderer.java:205) at org.apache.pdfbox.rendering.PDFRenderer.renderImage(PDFRenderer.java:136) at org.apache.pdfbox.rendering.PDFRenderer.renderImageWithDPI(PDFRenderer.java:95) at org.ilsos.cm.export.client.workers.Pdf2SinglePageTiff.processResult(Pdf2SinglePageTiff.java:139) at org.ilsos.cm.export.client.ExportWorker.run(ExportWorker.java:69) at java.lang.Thread.run(Thread.java:784) > ArrayIndexOutOfBoundsException in GlyfSimpleDescript.readFlags() when > multithreading > ------------------------------------------------------------------------------------ > > Key: PDFBOX-2824 > URL: https://issues.apache.org/jira/browse/PDFBOX-2824 > Project: PDFBox > Issue Type: Bug > Components: FontBox > Affects Versions: 2.0.0 > Reporter: Tilman Hausherr > Priority: Critical > > From Kenneth K. in the mailing list: > I have a client application that convert pdf documents into single page tiff > images. Since the user export large quantities of documents I use a > multithreaded approach. Each thread loads it own document and converts the > pages one by one. > The pdf file is serialized to the client thread and then each thread executes > the following code. If I only use 1 thread there is no problem. I checked > to make sure objects are shared between threads. > {code} > docin = PDDocument.load(new > ByteArrayInputStream(documentResult.getImage().getContent()),true); > if(null==docin) > throw new Exception("Invalid PDF document or an occured during > retrieval"); > int numPages = docin.getNumberOfPages(); > String strPath = getPath(numPages); > int iPage = 0; > PDFRenderer renderer = new PDFRenderer(docin); > for (int i=0;i<numPages;i++) > { > PDPage page = docin.getPage(i); > PDRectangle rect = page.getMediaBox(); > BufferedImage pageImage = null; > pageImage = renderer.renderImageWithDPI(i, 200f, > ImageType.BINARY); > ... > } > {code} > {code} > Array index out of range: 8 > at > org.apache.fontbox.ttf.GlyfSimpleDescript.readFlags(GlyfSimpleDescript.java:202) > at > org.apache.fontbox.ttf.GlyfSimpleDescript.<init>(GlyfSimpleDescript.java:77) > at org.apache.fontbox.ttf.GlyphData.initData(GlyphData.java:58) > at org.apache.fontbox.ttf.GlyphTable.getGlyph(GlyphTable.java:161) > at > org.apache.pdfbox.rendering.TTFGlyph2D.getPathForGID(TTFGlyph2D.java:140) > at > org.apache.pdfbox.rendering.TTFGlyph2D.getPathForCharacterCode(TTFGlyph2D.java:92) > at > org.apache.pdfbox.rendering.PageDrawer.drawGlyph2D(PageDrawer.java:333) > at > org.apache.pdfbox.rendering.PageDrawer.showFontGlyph(PageDrawer.java:314) > at > org.apache.pdfbox.contentstream.PDFStreamEngine.showGlyph(PDFStreamEngine.java:731) > at > org.apache.pdfbox.contentstream.PDFStreamEngine.showText(PDFStreamEngine.java:690) > at org.apache.pdfbox.rendering.PageDrawer.showText(PageDrawer.java:296) > at > org.apache.pdfbox.contentstream.PDFStreamEngine.showTextStrings(PDFStreamEngine.java:600) > at > org.apache.pdfbox.contentstream.operator.text.ShowTextAdjusted.process(ShowTextAdjusted.java:38) > at > org.apache.pdfbox.contentstream.PDFStreamEngine.processOperator(PDFStreamEngine.java:802) > at > org.apache.pdfbox.contentstream.PDFStreamEngine.processStreamOperators(PDFStreamEngine.java:464) > at > org.apache.pdfbox.contentstream.PDFStreamEngine.processStream(PDFStreamEngine.java:438) > at > org.apache.pdfbox.contentstream.PDFStreamEngine.processPage(PDFStreamEngine.java:149) > at org.apache.pdfbox.rendering.PageDrawer.drawPage(PageDrawer.java:179) > at > org.apache.pdfbox.rendering.PDFRenderer.renderPage(PDFRenderer.java:205) > at > org.apache.pdfbox.rendering.PDFRenderer.renderImage(PDFRenderer.java:136) > at > org.apache.pdfbox.rendering.PDFRenderer.renderImageWithDPI(PDFRenderer.java:95) > at > org.ilsos.cm.export.client.rmi.workers.Pdf2SinglePageTiff.processResult(Pdf2SinglePageTiff.java:142) > at > org.ilsos.cm.export.client.rmi.ExportWorker.run(ExportWorker.java:72) > at java.lang.Thread.run(Thread.java:784) > {code} -- This message was sent by Atlassian JIRA (v6.3.4#6332) --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@pdfbox.apache.org For additional commands, e-mail: dev-h...@pdfbox.apache.org