PDF Image Viewer PDF内嵌图像的查看和无损导出
PDF Image Viewer 是一个神奇的软件它支持PDF内嵌图像的查看和无损导出。支持Flate、LZW、CCITT Fax、JBIG2、Run Length、DCT、JPX、ASCII85、ASCIIHex等编码支持RGB、Gray、CMYK、CalGray、CalRGB、Lab、ICCBased、Indexed、Separation 和 DeviceN等色彩空间。大部分人可能都听说过PDF补丁丁软件如果你用它导出PDF图像用得多了就会发现有的图像无法导出有的图像全黑有的图像全是斜线还有的偏色与PDF查看器渲染出来的图像不一样。我测试过很多免费工具国外比较常用免费工具的是XPDF里面的pdfimages 和 MuPDF中的mutool这两个软件比PDF补丁丁要好很多但是依然存在某些内嵌图像无法识别或者无法导出的问题。如果把全部的内嵌图像当作100的话PDF补丁丁大约可以正确导出40%的图像新版补丁丁打算更换MuPDF内核可以改善导出图像的问题大家可以拭目以待。XPDF的pdfimages 和 MuPDF的mutool 可以正确导出80%~90%的图像。最近实测发现 poppler v26的pdfimages工具可能会好一些。究其原因主要是这些工具对PDF内嵌图像的色彩空间的解析存在限制不能正确处理解码后的数据并根据色彩空间还原图像像素。为了解决网上免费工具无法正确还原图像的问题避免命令行的繁琐操作解决图像的查看和批量导出需求我用了一个多月的时间开发了这个工具。本软件根据提取图像的编码和色彩空间不同使用不同的流程解码。下载 GitHub不少人问我怎么证明你这个软件是无损导出为什么导出的都是png格式。而其它工具导出却是JPG、JPEG2000、TIF之类的图像格式呢这里我简单说一下PDF内嵌图像的导出流程首先从PDF资源对象中读出来的原始数据要进行解码例如Flate、LZW、CCITT Fax、JBIG2、Run Length、DCT、JPX、ASCII85、ASCIIHex。这里需要注意的是有些工具遇到了DCT Decode过滤器就保存成JPG遇到了JPX Decode过滤器就保存成JP2遇到CCITT Fax Decode过滤器就保存成TIF。这个做法是错误的它只对简单色彩空间格式有效。因为解码操作只是色彩空间还原的前置数据处理DCT、JPX、CCITT Fax解码得到的数据可能是Indexed、RGB、CMYK、LAB、Separation等需要进一步处理的数据不一定是最终的图像。然后对解码得到的数据要进行如下操作1、根据需要进行索引还原通过调色板转成Gray、RGB、CMYK、LAB、Separation 、CalGray、CalRGB等各种需要处理的数据。2、根据需要进行Decode映射常用于反相处理。3、根据需要进行色调还原Separation、DeviceN、Cal计算等操作得到初步的图像像素。4、根据需要对图像像素进行ICC色彩校正例如RGB、CMYK、LAB等转成Windows支持的像素格式。5、校正之后的数据才是真正图像的像素数据将其保存成png格式文件。最终保存的图像体积可能会变大但一定是正确的图像像素并且是无损保存的。