【问题标题】:PostScript to PDF conversion/slow print issue [GhostScript]PostScript 到 PDF 转换/打印缓慢问题 [GhostScript]
【发布时间】:2012-07-17 17:33:57
【问题描述】:

我有几份带有网格线和背景阴影覆盖的大型 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 倍其他(270 万行 vs 675K)或 48 MB vs 9 MB。查看 GhostScript 输出,我看到网格线/阴影的背景图案(由“/PatternType1”标签引用)在整个文件中定义了数千次,而在其他 PDF 输出中只定义了一次。我相信这种不断重新定义背景图案是让打印机陷入困境的原因。

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

【问题讨论】:

    标签: ghostscript postscript


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 我创建了一个错误报告并尝试附加一些确实会重现问题的示例文件,但由于某种原因它不允许我附加这些文件。仍在尝试弄清楚如何上传文件。同时,您对表单的建议似乎更准确,因为我实际上是在我的 post 脚本文件的顶部嵌入了表单定义。
    【解决方案2】:

    我现在查看了源 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 来真正减少此问题。

    【讨论】:

      【解决方案3】:

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

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

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

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

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

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

      【讨论】:

      • 在 Win 2008 服务器 (x64) 上运行的版本是 9.04,但我可以在我的桌面上重新创建 win 7 Ult。 x64。另外,在服务器上,我使用 C# 包装器调用 gswin32.dll,我使用 ps2pdf 进行快速测试,但结果相同。
      • 在 Adob​​e Reader 中,有一个“打印到文件”选项,它将输出写入 postscript 文件。
      • @user1535044:我问过'哪种设置',我问这个是有原因的:你可以选择不同的 PostScript 语言级别,你可以告诉 AcroRead '下载亚洲字体”或“将 TrueType 字体转换为 Type1”,您可以“打印为图像”等等......
      • 语言:3 级,色彩管理:将灰色视为仅 K 的灰色 + 保留黑色,字体资源策略:开始发送,下载亚洲字体:未选中
      猜你喜欢
      • 2015-07-19
      • 2016-12-02
      • 1970-01-01
      • 2016-05-09
      • 2017-09-14
      • 2014-03-17
      • 2017-11-24
      • 2017-04-07
      • 1970-01-01
      相关资源
      最近更新 更多