GhostScript - 尝试减小 PDF 文件大小 - 错误

GhostScript - 尝试减小 PDF 文件大小 - 错误

我正在尝试使用 GhostScript 减小 PDF 的文件大小。通常,这有效:

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

我认为它会消除书签、注释等。

在某些 PDF 上,我最终得到的是空白 PDF。我得到以下输出:

GPL Ghostscript 9.04 (2011-08-05)
Copyright (C) 2011 Artifex Software, Inc.  All rights reserved.
This software comes with NO WARRANTY: see the file PUBLIC for details.
Error: /rangecheck in --run--
Operand stack:
   15   0   15   --nostringval--   15
Execution stack:
   %interp_exit   .runexec2   --nostringval--   --nostringval--   --nostringval-
-   2   %stopped_push   --nostringval--   --nostringval--   --nostringval--   fa
lse   1   %stopped_push   1926   1   3   %oparray_pop   1925   1   3   %oparray_
pop   1909   1   3   %oparray_pop   --nostringval--   --nostringval--   --nostri
ngval--   --nostringval--   --nostringval--   --nostringval--
Dictionary stack:
   --dict:1166/1684(ro)(G)--   --dict:1/20(G)--   --dict:82/200(L)--   --dict:82
/200(L)--   --dict:108/127(ro)(G)--   --dict:291/300(ro)(G)--   --dict:22/30(L)-
-
Current allocation mode is local
GPL Ghostscript 9.04: Unrecoverable error, exit code 1

错误消息没有什么帮助。有什么建议可以解决此问题吗?

答案1

首先使用 pdfwrite 以外的设备,您可以不带任何参数启动 Ghostscript(使用 Windows 版本 gswin32),然后将文件拖放到上面。这将打开一个窗口来显示结果。

如果这样可行,那么你可能在 pdfwrite 中发现了一个错误。如果这样不可行,那么要么是 Ghostscript 错误,要么是你的 PDF 在某种程度上无效。Acrobat 打开它并不能阻止它无效,Acorbat 打开许多损坏的 PDF 文件....

错误消息对于那些使用 PostScript 的人来说很有帮助 ;-) 对于不懂 PostScript 的人来说,这意味着'出了些问题',但如果您不懂 PostScript,那么这就是您所能想到的最有用的错误。在这种情况下,它会告诉您操作数超出了运算符的允许范围。

您可以尝试运行-dPDFDEBUG,它会告诉您 PDF 文件中的哪个对象导致了问题。但除非您非常了解 PDF,否则这可能对您也没什么帮助。

最好的办法是打开一个错误报告http://bugs.ghostscript.com,您需要附加有问题的 PDF 文件并提供命令行来显示问题。如果它显示展示设备(即启动时打开的窗口,gswin32c.exe没有任何参数来拖放文件),请提供该命令行,而不是 pdfwrite 命令行。假设如果设备是 pdfwrite,那么写入时就会出现问题,这大概不是。

顺便说一句,pdfwrite 不会简单地删除注释和书签,它会将 PDF 文件完全解释为图形基元,然后创建一个包含这些图形基元的全新 PDF 文件。因此,无法保证创建的 PDF 文件的内容与原始内容有任何相似之处。它们应该在外观上匹配,但对象可能会转换为不同的类型。

答案2

除了 KenS 提到的之外,请注意 XFA 注释(使用 Adob​​e LifeCycle 生成的 PDF 表单)Ghostscript 不支持,因此仅包含这些项的文件在通过 gswin32c 处理时可能会产生空白文件。

答案3

使用 :

gswin64c -dQUIET -dBATCH -dNOPAUSE -dSAFER -dMaxSubsetPct=100 -dPDFSETTINGS=/ebook -sDEVICE=pdfwrite -sOutputFile=outputfile.pdf inputfile.pdf

您可以用屏幕或打印机代替上面的电子书 - 这会改变图像的分辨率(72/150/300 dpi)

祝你好运 ;-)

相关内容