首页 文章

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

提问于
浏览
3

我目前正在使用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命令将其发送到柯达Digimaster打印机:

> COPY PostScript.ps PrinterName

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

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

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

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

那些工作的文件大小:

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

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

有人会有什么建议吗?

1 回答

  • 3

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

    • 可能是PostScript本身,或者

    • 当您插入(专有) %KDK -comments时,可能是您在编辑PS文件时出错了 .

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

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

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

    进行调试

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

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

    那个成功完成RIP过程吗?

    是?现在你甚至可以打印它了 . 在此之前,您甚至可以通过单击界面上的某个按钮来修改作业设置以选择特定的纸盘(尽管无法调用确切的按钮标签) . 然后“释放”该作业,它将打印出来 .

    如果它有效,你可以再次注意让你的 %%KDK 线正确 .

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

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

    • pdftops 的帮助下创建PostScript文件(有关 pdftops.exe 版本,请参阅 here - 阅读自述文件以查看可用的选项) .

    按上述方式进行操作:首先查看是否完成了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...
    ...
    

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

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

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

    • KPD基本上做了同样的事情,就像你想要实现的那样:在文件头中插入 %KDK 命令 . 但是你想用脚本或编辑器(一旦它工作,可能通过批处理自动完成) .

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

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


    更新

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

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

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

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

    • 要求操作员将打印机设置为"stop printing",但仍为"receiving new jobs" .

    • 提交您想要的任何工作 .

    • 走到打印机及其操作员 .

    • 释放RIP-ping作业并观察发生的情况:

    • 你可能会看到一切顺利,直到最后一页完成(你知道你提交了多少页,对吗?)

    • 或者您可能会看到作业在某个页码处中止 .

    • 或者您可能会看到打印机RIP在特定页面(或多页)上咀嚼的时间非常长,但最终完成了作业 .

    • 或者您可能会看到打印机RIP永久挂在某个页面上 .

    • 或......

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

相关问题