我有几个大的PDF报告(> 500页),网格线和背景阴影覆盖,我在批处理过程中使用GhostScript的ps2pdf从postscript转换。创建的PDF在Adobe Reader中看起来很完美。
但是,当我从Adobe Reader打印PDF时,我的戴尔激光打印机大约需要4-5 ppm,每页之间会有超过10秒的暂停。从另一个专有过程(而不是GhostScript)生成的相同报告PDF在同一台打印机上的速度快25+ ppm。
两者的PDF文件大小几乎相同,每个大约1.5 MB,但是当我将两个版本的PDF打印到文件(即postscript)时,GhostScript生成的PDF postscript输出大约是PDF文件大小的5倍。其他(2.7密耳线对675K)或48 MB对9 MB。查看GhostScript输出,我看到网格线/阴影的背景图案(由“/ PatternType1”标记引用)在整个文件中定义了数千次,其中只在其他PDF输出中定义了一次。我相信这种不断重新定义背景图案的方式正在压制打印机。
是否有切换/设置强制GhostScript仅定义一次图案/图像?我已经尝试过使用-r和-dPdfsettings = / print开关而没有任何缓解。
答案 0 :(得分:1)
模式(实际上是图像)和许多其他结构应该只发出一次,你不需要做任何事情来实现这一点。
但是,表单不会被重用,并且可能是您实际问题的根源。正如Kurt Pfiefle所说,如果没有看到导致问题的文件,就无法判断。
您可以在http://bubgs.ghostscript.com处提出错误报告,这样您就可以附加文件了。如果你这样做,请不附上一个> 500页文件,如果您试图找到时间来创建一个显示相同类型的通货膨胀的较小文件,将不胜感激。
如果没有看到PostScript文件,我根本无法提出任何建议。
答案 1 :(得分:1)
我现在已经查看了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无法真正减少这个问题。
答案 2 :(得分:0)
'[...]当我将两个版本的PDF打印到文件(即postscript)时,GhostScript生成的PDF postscript输出大约是其他版本的5倍(2.7 mil line vs 675K)或48 MB vs 9 MB。'
你使用哪个版本的Ghostscript? (请尝试gs -v
或gswin32c.exe -v
或gswin64c.exe -v
查找。)
如何确切地'打印'文件'PDF? (哪个OS平台,哪个应用程序,哪种设置?)
此外,ps2pdf
可能不是批处理的最佳选择。无论如何,这是一个小的shell /批处理脚本,它在内部调用Ghostscript命令。
直接使用Ghostscript可以让你更好地控制结果(虽然它的命令行'可用性'相当不方便和笨拙 - 这就是为什么像ps2pdf
这样的工具如此受欢迎......)。
最后,如果没有直接访问您的PS输入样本进行测试(以及专有转换器生成的PDF),那么提出好的建议并不容易。