PostScript到PDF的转换/慢速打印问题[GhostScript]



我有几个带有网格线和背景着色覆盖的大型PDF报告(>500页),这些报告是我在批处理过程中使用GhostScript的ps2pdf从postscript转换而来的。创建的PDF在Adobe Reader中看起来非常完美。

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

两者的PDF文件大小几乎相同,每个大约1.5 MB,但当我将两个版本的PDF打印到文件(即postscript)时,GhostScript生成的PDF postscript输出大约是其他版本的5倍(2.7密耳行对675K)或48 MB对9 MB。查看GhostScript输出,我发现网格线/着色的背景图案(由"/PatternType1"标记引用)在整个文件中定义了数千次,而在其他PDF输出中只定义了一次。我相信这种对背景图案的不断重新定义是困扰打印机的原因。

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

模式(实际上是图像)和许多其他构造应该只发出一次,您不需要做任何事情就可以实现这一点。

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

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

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

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

因为它的使用很少,我们没有任何动力来实现在输出PDF中保留表单的功能,这就是产生大PDF的原因。在表单中定义模式的方式也没有帮助。您可以尝试单独定义模式,至少这样pdfwrite就可以检测多个模式的使用情况,并且只发出一次(该模式包含一个imagemask,因此这可能是值得的)。

此结构:

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无法真正减少这个问题。

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

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

  • 您究竟是如何"打印到文件"PDF的?(哪个操作系统平台,哪个应用程序,哪种设置?)

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

直接使用Ghostscript可以让你更好地控制结果(尽管它的命令行"可用性"相当不方便和尴尬——这就是为什么像ps2pdf这样的工具如此流行的原因…)

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

最新更新