You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@pdfbox.apache.org by 风云天空 <10...@qq.com> on 2016/05/23 08:08:06 UTC

multi-thread bug

in my project using spring,we use pdf-box with one PDDocument and one PDFRenderer for one pdf document,then I encounter problem with call renderImageWithDPI:


java.lang.NullPointerException
	at sun.java2d.cmm.ProfileDeferralMgr.activateProfiles(ProfileDeferralMgr.java:93)
	at java.awt.color.ICC_Profile.getInstance(ICC_Profile.java:775)
	at java.awt.color.ICC_Profile.getInstance(ICC_Profile.java:1013)
	at org.apache.pdfbox.pdmodel.graphics.color.PDICCBased.loadICCProfile(PDICCBased.java:119)
	at org.apache.pdfbox.pdmodel.graphics.color.PDICCBased.<init>(PDICCBased.java:89)
	at org.apache.pdfbox.pdmodel.graphics.color.PDColorSpace.create(PDColorSpace.java:182)
	at org.apache.pdfbox.pdmodel.PDResources.getColorSpace(PDResources.java:172)
	at org.apache.pdfbox.pdmodel.PDResources.getColorSpace(PDResources.java:142)
	at org.apache.pdfbox.contentstream.operator.color.SetNonStrokingColorSpace.process(SetNonStrokingColorSpace.java:41)
	at org.apache.pdfbox.contentstream.PDFStreamEngine.processOperator(PDFStreamEngine.java:815)
	at org.apache.pdfbox.contentstream.PDFStreamEngine.processStreamOperators(PDFStreamEngine.java:472)
	at org.apache.pdfbox.contentstream.PDFStreamEngine.processStream(PDFStreamEngine.java:446)
	at org.apache.pdfbox.contentstream.PDFStreamEngine.processPage(PDFStreamEngine.java:149)
	at org.apache.pdfbox.rendering.PageDrawer.drawPage(PageDrawer.java:189)
	at org.apache.pdfbox.rendering.PDFRenderer.renderPage(PDFRenderer.java:208)
	at org.apache.pdfbox.rendering.PDFRenderer.renderImage(PDFRenderer.java:139)
	at org.apache.pdfbox.rendering.PDFRenderer.renderImageWithDPI(PDFRenderer.java:80)
	at com.xiaojukeji.training.admin.docparser.PdfExtractor.getFirstImage(PdfExtractor.java:128)
	at com.xiaojukeji.training.admin.docparser.PdfExtractor$Job.run(PdfExtractor.java:187)
	at com.xiaojukeji.training.admin.docparser.BlockThreadPool$Worker.run(BlockThreadPool.java:53)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
	at java.lang.Thread.run(Thread.java:745)

Re: multi-thread bug

Posted by John Hewson <jo...@jahewson.com>.
This is a known JDK bug in the ICC colour space static initializer. Try doing something minimal with PDFBox on the main thread so that the PDICCBased static initializer runs there. After that's happened hopefully your thread pool code will work.

-- John

> On 23 May 2016, at 01:08, 风云天空 <10...@qq.com> wrote:
> 
> in my project using spring,we use pdf-box with one PDDocument and one PDFRenderer for one pdf document,then I encounter problem with call renderImageWithDPI:
> 
> 
> java.lang.NullPointerException
>    at sun.java2d.cmm.ProfileDeferralMgr.activateProfiles(ProfileDeferralMgr.java:93)
>    at java.awt.color.ICC_Profile.getInstance(ICC_Profile.java:775)
>    at java.awt.color.ICC_Profile.getInstance(ICC_Profile.java:1013)
>    at org.apache.pdfbox.pdmodel.graphics.color.PDICCBased.loadICCProfile(PDICCBased.java:119)
>    at org.apache.pdfbox.pdmodel.graphics.color.PDICCBased.<init>(PDICCBased.java:89)
>    at org.apache.pdfbox.pdmodel.graphics.color.PDColorSpace.create(PDColorSpace.java:182)
>    at org.apache.pdfbox.pdmodel.PDResources.getColorSpace(PDResources.java:172)
>    at org.apache.pdfbox.pdmodel.PDResources.getColorSpace(PDResources.java:142)
>    at org.apache.pdfbox.contentstream.operator.color.SetNonStrokingColorSpace.process(SetNonStrokingColorSpace.java:41)
>    at org.apache.pdfbox.contentstream.PDFStreamEngine.processOperator(PDFStreamEngine.java:815)
>    at org.apache.pdfbox.contentstream.PDFStreamEngine.processStreamOperators(PDFStreamEngine.java:472)
>    at org.apache.pdfbox.contentstream.PDFStreamEngine.processStream(PDFStreamEngine.java:446)
>    at org.apache.pdfbox.contentstream.PDFStreamEngine.processPage(PDFStreamEngine.java:149)
>    at org.apache.pdfbox.rendering.PageDrawer.drawPage(PageDrawer.java:189)
>    at org.apache.pdfbox.rendering.PDFRenderer.renderPage(PDFRenderer.java:208)
>    at org.apache.pdfbox.rendering.PDFRenderer.renderImage(PDFRenderer.java:139)
>    at org.apache.pdfbox.rendering.PDFRenderer.renderImageWithDPI(PDFRenderer.java:80)
>    at com.xiaojukeji.training.admin.docparser.PdfExtractor.getFirstImage(PdfExtractor.java:128)
>    at com.xiaojukeji.training.admin.docparser.PdfExtractor$Job.run(PdfExtractor.java:187)
>    at com.xiaojukeji.training.admin.docparser.BlockThreadPool$Worker.run(BlockThreadPool.java:53)
>    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>    at java.lang.Thread.run(Thread.java:745)

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@pdfbox.apache.org
For additional commands, e-mail: users-help@pdfbox.apache.org