【问题标题】:PDF to PostScript Using Ghostscript: large files having issues printingPDF 到 PostScript 使用 Ghostscript:大文件有打印问题
【发布时间】:2015-07-19 19:39:17
【问题描述】:

我目前正在使用 Ghostscript 将 500 页 PDF 文件转换为 PostScript。

我使用的是 Windows 7、Ghostscript x64 v 9.16 和 Kodak Digimaster Commercial Printer。

我对 GhostScript 使用以下参数将 PDF 转换为 PS:

C:\Program Files\gs\gs9.16\bin\gswin64c.exe" 
-dCompressFonts=true 
-dSubsetFonts=true 
-dEmbedAllFonts=true 
-sFONTPATH=C:\Windows\Fonts\ 
-dNOPAUSE 
-dBATCH 
-sDEVICE=ps2write 
-sOutputFile="PostScript.ps" 
"MyPdf.pdf"

然后我添加%KDK(专有)命令,通过使用基于打印机文档的%KDKSlip 命令来规定哪些页面需要在哪些纸张上打印。

以下示例将以 Letter 双面打印所有页面,但第 1/2 和 5/6 页除外。第 1/2 页将打印在名为“YellowPerf”的纸张上,而 5/6 页将打印在“TriPerf”上:

 %!PS-Adobe-3.0
 %%BoundingBox: 0 0 612 792
 %%HiResBoundingBox: 0 0 612.00 792.00
 %%Creator: GPL Ghostscript 916 (ps2write)
 %%LanguageLevel: 2
 %%CreationDate: D:20150506143059-05'00'
 %%Pages: 8
 %%DocumentMedia: Letter 612 792 0 white ()
 %%+ YellowPerf 612 792 0 yellow ()
 %%+ TriPerf 612 792 0 white ()
 %KDKRequirements: duplex
 %KDKSlip: YellowPerf duplex 1
 %%+ TriPerf duplex 5
 %%EndComments
 %%BeginProlog

然后使用 Windows 命令将其发送到柯达 Digimaster 打印机:

> COPY PostScript.ps PrinterName

这适用于较小的文档,但我遇到较大的页面集问题。

当我尝试使用 500 页 PDF 到 Postscript 文件打印到 Digimaster 时,出现错误:“忙,不要重置 RIP”。

那些不起作用的文件大小:

PostScript 文件大小:52 MB
PDF 文件大小:41 MB

有效的文件大小:

PostScript 文件大小 1MB
PDF 文件大小:.8 MB

为什么这适用于较小的文件,但在较大的文件上却无法使用?

有人有什么建议吗?

【问题讨论】:

  • 获取 PostScript 并通过 Ghostscript 运行它,看看会发生什么。如果可行,则 PostScript 几乎肯定是有效的。但是,我们已经看到许多不喜欢 ps2write 输出的 PostScript 打印机(这些实现在每种情况下都存在错误)。您可以尝试使用 -dFirstPage 和 -dLastPage 创建页面的子集,看看是它的特定页面还是纯粹的数量有问题。如果它的特定页面,我们也许可以对它做点什么。例如,有一个 NoT3CCITT 开关来修复特定的打印机错误。
  • 嗨,Ken,我确认可以将文件发送回 PDF。我已经查看了它,它似乎与原版相同。这些页面都非常相似,所以如果打印机对某个页面有问题,我会感到震惊,因为我基本上只更改了每个 PDF 中的几个字段。您对使用 COPY 命令将 Postscript 发送到打印机有任何意见吗?我怀疑将如此大的 Postscript 文件发送到打印机时,FTP 命令可能会出现问题。
  • copy 应该可以正常工作,但您应该使用 /b 开关以二进制形式进行复制。由于 PostScript 是有效的,这可能是由于资源不足造成的,ps2write 输出可能会定义很多字体(取决于输入),这可能会耗尽打印机上的 VM。您可以尝试设置 -dSubsetFonts=false。当然你也可以问柯达 :-)

标签: pdf printing ghostscript postscript


【解决方案1】:

导致您的问题的不一定是 PostScript 的 文件大小

  • 可能是 PostScript 本身,也可能是
  • 可能是您在插入(专有)%KDK-cmets 时编辑 PS 文件时出错。

您确定您的文本编辑器不会默默地更改换行符吗?!这也可能改变 PostScript 的二进制部分!

另外,我不确定copy 命令是否能按应有的方式处理打印作业。我更喜欢lpr 命令(啊...在您的 Windows 版本上仍然可用吗?!)

为了调试它并探索成功打印的几种不同途径,我会尝试几个不同的步骤:

调试

  • 将没有添加%%KDK DSC 标头cmets 的原始PostScript 发送到打印机。

    该打印机型号有一个不错的功能可供您使用:您可以检查其 RIP 是否完全成功地处理了输入文件,而无需在(错误的)纸张上输出 500 页并因此浪费它(您还需要事后丢弃它——工作量也太大了)。只需点击其用户界面监视器上的红色“停止”按钮。

    那个人是否成功完成了 RIP 过程?

    是吗?现在您甚至可以打印它。在您这样做之前,您甚至可以修改作业设置以选择特定的纸盘,方法是单击界面上的某个按钮(虽然无法回忆确切的按钮标签)。然后“释放”作业,它就会打印出来。

    如果有效,您可以再次将注意力转移到正确的%%KDK 行。

    如果没有,您必须尝试另一条路线。

检查其他 PDF 到 PS 转换器是否在工作

  • pdftops 的帮助下创建一个 PostScript 文件(请参阅此处了解pdftops.exe 版本——阅读自述文件以了解哪些选项可用)。

    类似上述:首先看它是否完成了 RIP 过程。然后继续您的%KDK 操作....

检查直接 PDF 打印是否正常

  • Digimaster 模型可以直接使用 PDF。 (嗯,它在内部使用自己的 PDF 到 PS 转换器,但外部看不到 - 所以它不真的算作 PDF RIP...)

  • 如果可行,您甚至可以将适当的%KDK cmets 添加到 PDF 文件中,类似于下面的几行(不要依赖我的详细信息,这是我的想法,记忆力是几十年了!):

    %!PS-Adobe-3.0
    %%.........................
    %%DocumentMedia: ..........
    %KDKRequirements: .........
    %KDKInserts: ..............
    %KDKSlip: .................
    %KDKBody: .................
    %KDKCovers: ...............
    %KDKPDFPrintAnnotations: on 
    %KDKPDFFitToPage: on
    %KDKBinaryOK: on 
    <esc>%-12345X
    %%Emulation: pdf
    %PDF-1.5
    %...here follow the lines of the original PDF file...
    ...
    

通过“Kodak Printfile Downloader”发送作业 (KPD)

  • 对于 Windows,曾经有所谓的“柯达打印文件下载器”(KPD)。 KPD 是一个应用程序,而不是打印机驱动程序。不确定它是否仍然可用。

  • 您可以打开其 GUI,然后将 PS、PDF、PCL 或 TIFF 文件加载到其要打印的作业列表中。然后选择一些作业选项(如托盘、装订、分类等)。最后,将作业发送给 Digimaster...

  • KPD 基本上做同样的事情,正如您想要实现的那样:将%KDK 命令插入文件头。但是您想使用脚本或编辑器来完成(并且可能通过批处理自动完成,一旦它工作)。

  • KPD 需要交互式用户活动,并且无法编写脚本。

  • 但是您可以(ab-)使用它来拦截它从 Windows 假脱机系统创建的文件,研究它们,然后调整您的脚本工作,以便它们也可以工作....

    李>

更新

(我本来想在最初的答案中添加这个。但是时间用完了,所以我暂时跳过了它。。)

直接在打印机 UI 上观察 RIP 处理

  • Digimaster 打印机有自己的内置触摸屏或平板显示器或电子管显示器(取决于型号的使用年限)。他们通常还有一个全职操作员,他非常了解机器及其调整和特性。机器可能与发送作业的用户相距甚远。

  • 所以在调试打印问题时应该做到以下几点:

    • 要求操作员将打印机设置为“停止打印”,但仍“接收新作业”。
    • 提交您想要的任何工作。
    • 走向打印机及其操作员。
    • 为 RIP-ping 释放作业并观察会发生什么:
      • 您可能会看到一切正常并完成,直到最后一页(您知道您提交了多少页,对吧?)
      • 或者您可能会看到作业在某个页码处中止。
      • 或者您可能会看到打印机 RIP 在某一页(或几页)上的咀嚼时间过长,但最终还是完成了作业。
      • 或者您可能会看到打印机 RIP 永远挂在某个页面上。
      • 或者……

    无论如何,这里可以观察到的细节可能会提供重要的线索,让我们知道下一步该去哪里......

【讨论】:

  • 谢谢库尔特!每当我在打印机上遇到另一个问题时,我都会给你一个更新。我怀疑 COPY 适用于较小的 PostScript 文件,但在打印时会遇到较大的问题。使用 COPY 用于 FTP 而不是打印。接下来我将尝试lpr。我还将尝试使用 PostScript 打印实用程序,看看这是否会产生影响,以及我会根据您的列表进行操作。再次感谢!
  • 嘿库尔特,快速更新。我通过将 Postscript 发送回 PDF 来验证它是正确的。我正在为打印机安排时间来尝试 lpr 命令。我与操作员交谈,他说使用 COPY 命令有效,但 RIP 需要 30 多分钟。他取消了这项工作,因为它要几个小时才能完成。
  • 我们使用了 LPR 和 PrintFile 实用程序(不是 KPD)。两者都花了 10 分钟才打印出任何东西。他们都打印了 10 页,然后暂停以 RIP 下一页……
  • @ribald:KPD 对 Digimaster 客户是免费的。优点是您可以使用它来创建 作业设置,即使是 PDF 假脱机作业!如果您设法拦截带有前置 %KDK 作业设置的 KPD 提交的作业,则很容易逆向工程您的脚本应该做什么......(也许“打印文件实用程序”是前者的新名称KPD?)
  • 在我们尝试过的所有 postscript 文件上(无论是使用 COPY 或 LPR 命令打印 .ps 文件,还是使用 PS 驱动程序打印 .PDF 或使用 PrintFile 实用程序)打印方法 我最终看到了一种以前从未见过的奇怪的“绿屏”类型的屏幕:它被标记为“PS_or_PDF 状态监视器”。这个“监控”屏幕会在离开前 5-10 分钟显示。
猜你喜欢
  • 2012-07-17
  • 2019-05-24
  • 1970-01-01
  • 2016-12-02
  • 1970-01-01
  • 2017-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多