Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用iText 5提取图像时出错:“0”;不支持颜色空间";_Java_Pdf_Itext - Fatal编程技术网

Java 使用iText 5提取图像时出错:“0”;不支持颜色空间";

Java 使用iText 5提取图像时出错:“0”;不支持颜色空间";,java,pdf,itext,Java,Pdf,Itext,我正试图编写一个程序,从PDF文件中提取所有嵌入的图像。不幸的是,许多输入文件会导致类似的异常: com.itextpdf.text.exceptions.UnsupportedPdfException: The color space [blah blah blah] is not supported. 生成回溯的文件受密码保护,我恐怕无法取消保护,也无法共享密码。但是,我遇到了来自多个源的多个文件的错误。这些文件在OSX预览版和AcrobatReader中都是完全可以查看和打印的,所以我很

我正试图编写一个程序,从PDF文件中提取所有嵌入的图像。不幸的是,许多输入文件会导致类似的异常:

com.itextpdf.text.exceptions.UnsupportedPdfException: The color space [blah blah blah] is not supported.
生成回溯的文件受密码保护,我恐怕无法取消保护,也无法共享密码。但是,我遇到了来自多个源的多个文件的错误。这些文件在OSX预览版和AcrobatReader中都是完全可以查看和打印的,所以我很确定问题出在iText上,而不是文件

我在OSX10.10.3上使用iText5.5.6和OracleJDK1.8.031,但在几个iText、JDK和OS版本上也出现了相同的错误;我刚刚抽出时间来问这件事

代码(主循环仅使用此类的实例调用
PdfReaderContentParser.processContent
):

异常回溯示例:

com.itextpdf.text.exceptions.UnsupportedPdfException: The color space [/DeviceN, [/Black], /DeviceCMYK, 1153 0 R, 1152 0 R] is not supported.
    at com.itextpdf.text.pdf.parser.PdfImageObject.decodeImageBytes(PdfImageObject.java:323)
    at com.itextpdf.text.pdf.parser.PdfImageObject.<init>(PdfImageObject.java:200)
    at com.itextpdf.text.pdf.parser.PdfImageObject.<init>(PdfImageObject.java:169)
    at com.itextpdf.text.pdf.parser.ImageRenderInfo.prepareImageObject(ImageRenderInfo.java:124)
    at com.itextpdf.text.pdf.parser.ImageRenderInfo.getImage(ImageRenderInfo.java:114)
    at info.metalfatigue.MyImageRenderListener.renderImage(MyImageRenderListener.java:42)
    at com.itextpdf.text.pdf.parser.PdfContentStreamProcessor$ImageXObjectDoHandler.handleXObject(PdfContentStreamProcessor.java:1268)
    at com.itextpdf.text.pdf.parser.PdfContentStreamProcessor.displayXObject(PdfContentStreamProcessor.java:352)
    at com.itextpdf.text.pdf.parser.PdfContentStreamProcessor.access$6100(PdfContentStreamProcessor.java:60)
    at com.itextpdf.text.pdf.parser.PdfContentStreamProcessor$Do.invoke(PdfContentStreamProcessor.java:988)
    at com.itextpdf.text.pdf.parser.PdfContentStreamProcessor.invokeOperator(PdfContentStreamProcessor.java:286)
    at com.itextpdf.text.pdf.parser.PdfContentStreamProcessor.processContent(PdfContentStreamProcessor.java:429)
    at com.itextpdf.text.pdf.parser.PdfReaderContentParser.processContent(PdfReaderContentParser.java:80)
    at info.metalfatigue.PdfImgEx.main(PdfImgEx.java:23)
com.itextpdf.text.exceptions.UnsupportedPdfException:不支持颜色空间[/DeviceN,[/Black],/DeviceCMYK,1153 0 R,1152 0 R]。
位于com.itextpdf.text.pdf.parser.PdfImageObject.decodeImageBytes(PdfImageObject.java:323)
位于com.itextpdf.text.pdf.parser.PdfImageObject.(PdfImageObject.java:200)
位于com.itextpdf.text.pdf.parser.PdfImageObject.(PdfImageObject.java:169)
位于com.itextpdf.text.pdf.parser.ImageRenderInfo.prepareImageObject(ImageRenderInfo.java:124)
位于com.itextpdf.text.pdf.parser.ImageRenderInfo.getImage(ImageRenderInfo.java:114)
位于info.metalfeague.MyImageRenderListener.renderImage(MyImageRenderListener.java:42)
在com.itextpdf.text.pdf.parser.PdfContentStreamProcessor$ImageXObjectDoHandler.handleXObject(PdfContentStreamProcessor.java:1268)
位于com.itextpdf.text.pdf.parser.PdfContentStreamProcessor.displayXObject(PdfContentStreamProcessor.java:352)
com.itextpdf.text.pdf.parser.PdfContentStreamProcessor.access$6100(PdfContentStreamProcessor.java:60)
位于com.itextpdf.text.pdf.parser.PdfContentStreamProcessor$Do.invoke(PdfContentStreamProcessor.java:988)
位于com.itextpdf.text.pdf.parser.PdfContentStreamProcessor.invokeOperator(PdfContentStreamProcessor.java:286)
位于com.itextpdf.text.pdf.parser.PdfContentStreamProcessor.processContent(PdfContentStreamProcessor.java:429)
位于com.itextpdf.text.pdf.parser.PdfReaderContentParser.processContent(PdfReaderContentParser.java:80)
main(PdfImgEx.java:23)

考虑到[blah blah blah]实际上是[/DeviceN,[/Black],/DeviceCMYK,1153 0 R,1152 0 R],我认为颜色空间确实不受iText支持用于图像渲染。确实如此。错误信息很清楚,不是吗?有什么问题吗?如果metalfatigue是客户,则可以在我们的问题跟踪器中创建问题单。如果metalfatigue不是客户,metalfatigue可以实现不受支持的功能,并将代码贡献回社区。@我建议围绕您的
renderInfo.getImage()来执行metalfatigue
通过适当的
尝试catch
处理具有有趣颜色空间的图像。@mkl不是我见过的唯一一个未实现的颜色空间,因此省略。不仅仅是iText:图像(如PNG)的实际创建是由Java SDK完成的。如果Java SDK不支持它,那么iText中也不支持它(除非我们编写自定义图像创建功能)。
com.itextpdf.text.exceptions.UnsupportedPdfException: The color space [/DeviceN, [/Black], /DeviceCMYK, 1153 0 R, 1152 0 R] is not supported.
    at com.itextpdf.text.pdf.parser.PdfImageObject.decodeImageBytes(PdfImageObject.java:323)
    at com.itextpdf.text.pdf.parser.PdfImageObject.<init>(PdfImageObject.java:200)
    at com.itextpdf.text.pdf.parser.PdfImageObject.<init>(PdfImageObject.java:169)
    at com.itextpdf.text.pdf.parser.ImageRenderInfo.prepareImageObject(ImageRenderInfo.java:124)
    at com.itextpdf.text.pdf.parser.ImageRenderInfo.getImage(ImageRenderInfo.java:114)
    at info.metalfatigue.MyImageRenderListener.renderImage(MyImageRenderListener.java:42)
    at com.itextpdf.text.pdf.parser.PdfContentStreamProcessor$ImageXObjectDoHandler.handleXObject(PdfContentStreamProcessor.java:1268)
    at com.itextpdf.text.pdf.parser.PdfContentStreamProcessor.displayXObject(PdfContentStreamProcessor.java:352)
    at com.itextpdf.text.pdf.parser.PdfContentStreamProcessor.access$6100(PdfContentStreamProcessor.java:60)
    at com.itextpdf.text.pdf.parser.PdfContentStreamProcessor$Do.invoke(PdfContentStreamProcessor.java:988)
    at com.itextpdf.text.pdf.parser.PdfContentStreamProcessor.invokeOperator(PdfContentStreamProcessor.java:286)
    at com.itextpdf.text.pdf.parser.PdfContentStreamProcessor.processContent(PdfContentStreamProcessor.java:429)
    at com.itextpdf.text.pdf.parser.PdfReaderContentParser.processContent(PdfReaderContentParser.java:80)
    at info.metalfatigue.PdfImgEx.main(PdfImgEx.java:23)