我正在使用Ghostscript 9.05
从 PDF 生成图像作为应用程序的一部分(在 Java 中作为进程运行)。
我最近遇到了一个问题,其中一些 PDF 到图像的转换在 linux 机器上失败,并出现以下错误:
**** This file had errors that were repaired or ignored.
**** The file was produced by:
**** >>>> Acrobat Distiller 8.3.1 (Macintosh) <<<<
**** Please notify the author of the software that produced this
**** file that it does not conform to Adobe's published PDF
**** specification.
每个页面都抛出与此类似的错误:
**** Warning: File has insufficient data for an image.
%%BoundingBox: 77 36 797 1082
%%HiResBoundingBox: 77.760003 36.720001 796.320030 1081.440041
Page 141
warning: ignoring invalid option raw
error: cannot decode code stream
unable to decode JPX image data.
但是,当在 Win7 机器上本地运行相同的转换时,不会发生错误。
我知道它的短而窄是“发回 PDF 并让他们给你发一份工作” - 但我很想知道为什么这会在 linux 机器上失败但成功而没有错误(并产生无错误的图像) 在 Windows 机器上?
有任何想法吗?
我现在不愿意打开错误报告,因为我不知道的 Linux 和 WIndows 版本之间可能存在显着差异。
更新
在查看了如何在我们的 Linux 机器上构建 Ghostscript(我们正在运行 Ubuntu 12.04 64 位长期支持版本)之后,我收集了以下信息:
对于 jpeg2000 操作,Ghostscript 使用 JasPer JPEG-2000 运行时库版本 1.900.1-13(JPEG-2000 第 1 部分的 ISO 参考实现)。
JasPer 是使用 libjpeg-turbo8 库构建的。
JasPer 软件已包含在 JPEG-2000 Part-5 标准(即 ISO/IEC 15444-5)中,作为 JPEG-2000 Part-1 编解码器的官方参考实现。
Ghostscript 被列为已知使用 JasPer 的项目之一。看来 Ubuntu 正在使用 JasPer,ISO 参考实现,并且 Ghostscript 的 Ubuntu 包源将 JasPer (libjasper-dev) 列为构建的依赖项,而不是 openJPEG。[来源]
目前看来唯一的选择是尝试不同版本的 linux,构建 ghostscript 版本并对其进行测试。