0

我有几个带有网格线和背景阴影覆盖的大型 PDF 报告(>500 页),这些报告是我在批处理中使用 GhostScript 的 ps2pdf 从 postscript 转换而来的。创建的 PDF 在 Adob​​e Reader 中看起来很完美。

但是,当我从 Adob​​e Reader 打印 PDF 时,我会从我们的戴尔激光打印机获得大约 4-5 ppm,每页之间有 10 多秒的长时间停顿。从另一个专有过程(不是 GhostScript)生成的相同报告 PDF 在同一台打印机上产生 25+ ppm 的快速。

两者上的 PDF 文件大小几乎相同,每个大约 1.5 MB,但是当我将两个版本的 PDF 打印到文件(即 postscript)时,GhostScript 生成的 PDF postscript 输出大约是另一个的 5 倍(2.7 mil 行 vs 675K) 或 48 MB vs 9 MB。查看 GhostScript 输出,我看到网格线/阴影的背景图案(由“/PatternType1”标签引用)在整个文件中定义了数千次,而在其他 PDF 输出中只定义了一次。我相信这种不断重新定义背景图案是让打印机陷入困境的原因。

是否有开关/设置强制 GhostScript 只定义一次模式/图像?我试过使用 -r 和 -dPdfsettings=/print 开关,但没有任何缓解。

4

3 回答 3

1

模式(实际上是图像)和许多其他构造应该只发出一次,你不需要做任何事情来发生这种情况。

但是,表单不会被重用,这可能是您实际问题的根源。正如 Kurt Pfiefle 上面所说,如果没有看到导致问题的文件,就无法判断。

您可以在http://bubgs.ghostscript.com提出错误报告,这将使您有机会附加文件。如果您这样做,请不要附加超过 500 页的文件,如果您能抽出时间创建一个显示相同大小膨胀的较小文件,我们将不胜感激。

如果没有看到 PostScript 文件,我根本无法提出任何建议。

于 2012-07-19T07:22:51.603 回答
1

我现在查看了源 PostScript,并且怀疑问题确实是表单的使用。这是 PostScript 中一个相对不寻常的领域,更不寻常的是看到它实际上被正确使用。

由于它很少使用,我们没有任何动力去实现在输出 PDF 中保留表单的功能,这就是导致 PDF 大的原因。在表单中定义模式的方式也无济于事。您可以尝试单独定义模式,至少这样 pdfwrite 可能能够检测到多个模式的使用并且只发出一次(模式包含一个图像掩码,所以这可能是值得的)。

这种结构:

GS C20 setpattern 384 151 32 1024 RF GR
GS C20 setpattern 384 1175 32 1024 RF GR

效率低下,你不断重新实例化模式,这很昂贵,这个:

GS C20 setpattern 
384 151 32 1024 RF
384 1175 32 1024 RF 
GR

更高效

无论如何,您无法使用 pdfwrite 来真正减少此问题。

于 2012-07-21T08:51:06.387 回答
0

'[...] 当我将两个版本的 PDF 打印到文件(即 postscript)时,GhostScript 生成的 PDF postscript 输出大约是其他版本的 5 倍(270 万行 vs 675K)或 48 MB vs 9 MB 。

  • 您使用哪个版本的 Ghostscript?(尝试gs -vgswin32c.exe -vgswin64c.exe -v找出。)

  • 您究竟如何“打印以归档”PDF?(哪个操作系统平台,哪个应用程序,哪种设置?)

还,ps2pdf可能不是批处理的最佳选择。无论如何,它是一个小的 shell/批处理脚本,它在内部调用了一个 Ghostscript 命令。

直接使用 Ghostscript 可以让您更好地控制结果(尽管它的命令行“可用性”相当不方便和尴尬——这就是为什么像这样的工具ps2pdf如此受欢迎......)。

最后,如果不直接访问您的 PS 输入样本之一进行测试(以及专有转换器生成的 PDF),就不容易提出好的建议。

于 2012-07-18T20:25:13.997 回答