将包含 jpeg2000 图像的 pdf 文件转换为包含非 jpeg2000 图像的 pdf

将包含 jpeg2000 图像的 pdf 文件转换为包含非 jpeg2000 图像的 pdf

我有一个 pdf 文件,其中的图像使用 jpeg2000 压缩。iPad 无法在 pdf 中显示这些图像。是否有免费的实用程序可以将 pdf 文件转换为所有图像均未使用 jpeg2000 压缩的 pdf 版本?正在寻找一种快速解决方案,例如打开 pdf 文件,更改一些设置,另存为..

答案1

我对这个建议持保留态度,因为我目前还没有办法验证它……

不过,我可以肯定的是:Ghostscript 确实支持 JPEG2000 图像压缩(但你可能需要专门以这种方式构建它;请参阅http://svn.ghostscript.com/ghostscript/trunk/gs/doc/Make.htm)。

现在,我不确定的是:有这个-dAutoFilterColorImages=...命令行参数。您可以像这样使用它:

gswin32c.exe ^
    -dBATCH ^
    -dNOPAUSE ^
    -dSAFER ^
    -sDEVICE=pdfwrite ^
    -dAutoFilterColorImages=false ^
    -dUseFlateCompression=true ^
    -sOutputFile=output-pdf-flate.pdf ^
    c:/path/to/input-jpeg2000.pdf

如果它像我一样工作思考确实如此,支持 JPEG2000 的 Ghostscript 构建将会准确无误地读取有问题的 PDF,并使用 flate 压缩而不是 JPEG2000 在输出 PDF 中写入图片。


更新:发现了一些额外的信息。

  1. 最新的 Ghostscript 版本(当前为 8.71)默认启用 JPEG2000。
  2. “启用 JPEG2000”的意思是:“可以读取和处理输入 PDF 中的 JPEG2000”。
  3. Ghostscript 没有JPEG2000 为其输出 PDF [*].

[*]原因:不支持创造JPEG2000 图像,因为编码器需要花费许可费用(并且受到专利限制,因此编写自己的实现是有风险的)。

这意味着您甚至不需要在命令行中添加-dAutoFilterColorImages=...-dUseFlateCompression=...参数。简单地重新提取 PDF 应该就可以了:

gswin32c .... -sDEVICE=pdfwrite -sOutputFile=out.pdf input.pdf

更新 2:

答案2

对于拥有 Windows PC 而无法使用 Mac 的用户:

  1. 下载 GSView 和 Ghostscript。
  2. 安装 Ghostscript,然后安装 GSView。
  3. 在 GSView 中打开您的 PDF
  4. 从文件菜单中,选择转换。
  5. 在对话框中的设备下,选择 PDFWrite,然后选择确定

结果输出应该可以在 iOS 设备上正确显示。

答案3

如果您有 Mac,则只需在预览中打开文件并保存即可。保存的 PDF 通常大 5 倍左右,但没有 JPEG200 压缩。

相关内容