PDF到PostScript使用Ghostscript:打印时出现问题的大文件

时间:2015-05-08 19:26:35

标签: pdf printing ghostscript postscript

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

我使用的是Windows 7,Ghostscript x64 v 9.16和柯达Digimaster商用打印机。

我使用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命令将其发送到Kodak Digimaster打印机:

> COPY PostScript.ps PrinterName

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

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

那些没有用的文件大小:

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

有效的文件大小:

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

为什么这对较小的文件工作正常但是在较大的文件上使用?

有人会有任何建议吗?

1 个答案:

答案 0 :(得分:3)

PostScript的 filesize 不一定会导致您的问题:

  • 可能是PostScript本身,或
  • 当您插入(专有)%KDK - 评论时,您可能因编辑PS文件而犯了错误。

你确定你的文本编辑器没有默默地更改你的换行符吗?!这也可以改变PostScript的二进制部分!

另外,我不确定copy命令是否确实处理打印作业。我更喜欢lpr命令(啊...甚至可以在您的Windows版本上使用?)

为了调试这个并探索成功打印的几条不同道路,我会尝试几个不同的步骤:

调试

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

    该打印机型号具有您可以利用的一个很好的功能:您可以检查其RIP是否完整且成功地处理输入文件,而无需在(错误的)纸张上输出500页并因此浪费它(您还可以之后需要丢弃它 - 太多工作了)。只需点击红色"停止"用户界面监视器上的按钮。

    那个成功完成RIP过程吗?

    是?现在你甚至可以打印出来了。在此之前,您甚至可以通过单击界面上的某个按钮来修改作业设置以选择特定的纸盘(尽管无法调出确切的按钮标签)。然后"发布"这份工作将打印出来。

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

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

检查其他PDF-to-PS转换器是否正常工作

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

    继续上述模拟:首先看看它是否完成了RIP过程。然后继续进行%KDK操作....

检查直接PDF打印是否正常工作

  • Digimaster模型可以直接使用PDF。 (好吧,在内部它使用自己的PDF-to-PS转换器,但外部不可见 - 因此它不会真正计为PDF RIP。 。)

  • 如果可行,您甚至可以在PDF文件中添加适当的%KDK条评论,类似于以下几行(不要依赖我获取正确的详细信息,而且'从我的头顶开始,记忆已有几十年了!):

    %!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...
    ...
    

通过&#34; Kodak Printfile Downloader&#34; (KPD)

发送工作
  • 对于Windows来说,曾经是所谓的柯达打印文件下载程序&#39; (KPD)。 KPD是一个应用程序,而不是打印机驱动程序。不确定它是否仍然可用。

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

  • KPD基本上做了同样的事情,就像你想要实现的那样:在文件头中插入%KDK命令。但您希望使用脚本或编辑器(并且可能通过批处理自动完成)。

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

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

更新

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

直接在打印机UI

中观察RIP处理
  • Digimaster打印机有自己的内置触摸屏或平板或管式显示器(取决于型号的年龄)。他们通常还有一名全职操作员,他们了解机器及其调整和特性。机器可能与发送作业的用户相距很远。

  • 因此,在调试打印问题时应执行以下操作:

    • 要求操作员将打印机设置为&#34;停止打印&#34;,但仍然&#34;接收新作业&#34;。
    • 提交您想要的任何工作。
    • 走到打印机及其操作员处。
    • 释放RIP-ping的作业并观察发生的情况:
      • 你可能会看到一切顺利并完成到最后一页(你知道你提交了多少页,对吗?)
      • 或者您可能会看到作业在特定页码处中止。
      • 或者您可能会看到打印机RIP在某个页面(或多个页面)上咀嚼的时间非常长,但最终完成了这项工作。
      • 或者您可能会看到打印机RIP永远挂在某个页面上。
      • 或者...

    在任何情况下,这里可以观察到的细节可能会提供关于下一步观察的重要线索......