2016-06-28 36 views
3

我不能够讲好英语,但我希望有人能帮助我在这一个...Ghostscript的 - PDF文件,与多个托盘,并在此有很多问题

我花了好几天,但我无法自己弄清楚。这里的交易:

我有4000+的PDF文件,TrimBox页边距,每页有16页,颜色。

我需要批量打印出来:在使用上纸盘3纸张

  • 打印页数1-10;
  • 使用纸盒4上的纸张打印第11-15页,两份不合页。使用
  • 打印16页纸张上纸盘3

我使用的是京瓷7550ci,the PPD is here.

我已经安装了Ghostscript的9.19,也与gsprint GSView程序。 Windows 7 SP1。

当我第一次尝试做任何事情,不知道ghostscript或如何使用它,但做一些阅读我设法“种”解决问题。我重复的Windows控制面板上的打印机,设置好的每一个与我想要的配置,并做了GSPRINT以下命令:

gsprint -printer "Kyocera TASKalfa 7550ci KX" -color -dUseTrimBox -dFitPage -from 1 -to 10 s_file0001.pdf 
gsprint -printer "ALT Kyocera" -color -dUseTrimBox -dFitPage -from 11 -to 15 -copies 2 s_file0001.pdf 
gsprint -printer "Kyocera TASKalfa 7550ci KX" -color -dUseTrimBox -dFitPage -from 16 -to 16 s_file0001.pdf 

(我设置好的TASKalfa 7550ci默认的驱动程序才能使用纸盒3,和ALT京瓷使用托盘4和uncollat​​e)。

它工作正常,但对于Windows进程以及要处理的打印机都很痛苦。我很快意识到GSPRINT很慢,因为它必须将整个图像渲染为位图,并开始查看是否可以使用纯GhostScript来完成这项工作。

gswin32c -dBATCH -dNOPAUSE -q -dUseTrimBox -dFitPage -dFirstPage=1 -dLastPage=10 -sDEVICE=mswinpr2 -sOutputFile="%printer%Kyocera TASKalfa 7550ci KX" -f test.pdf 
gswin32c -dBATCH -dNOPAUSE -q -dUseTrimBox -dFitPage -dFirstPage=11 -dLastPage=15 -sDEVICE=mswinpr2 -sOutputFile="%printer%ALT Kyocera" -f test.pdf 
gswin32c -dBATCH -dNOPAUSE -q -dUseTrimBox -dFitPage -dFirstPage=16 -dLastPage=16 -sDEVICE=mswinpr2 -sOutputFile="%printer%Kyocera TASKalfa 7550ci KX" -f test.pdf 

但我还是有很多的问题......我很沮丧,我不能得到它的工作,即使真的已经很努力阅读手册,并四处搜寻。

  • 使用mswinpr2仍然非常慢,给我错误的颜色,并且无法弄清楚如何选择纸盒。
  • 使用任何包含PCL驱动程序,altrought是快速和成功地选择使用dMediaPosition正确的托盘,还有的只有黑色和白色的司机...
  • 使用pdfwrite,不正确的比例裁切框,以适应整个页面,并且无法选择正确的纸盒。
  • 使用ps2write,无法选择纸盘并与页面位置混乱。

我迷路了。有人可以给我一些方向?另外,还有一种方法可以将每个字母作为一个文件发送给打印机?

谢谢大家!

---编辑---

感谢你们的答案!

我设法使其工作:

gswin32c -dBATCH -dNOPAUSE -q -dPDFFitPage -dUseTrimBox -dFirstPage=1 -dLastPage=10 \ 
     -dMediaPosition=7 -sDEVICE=pxlcolor \ 
     -sOutputFile="%printer%Kyocera TASKalfa 7550ci KX" -f in.pdf 

gswin32c -dBATCH -dNOPAUSE -q -dPDFFitPage -dUseTrimBox -dFirstPage=11 -dLastPage=15 \ 
     -dMediaPosition=5 -sDEVICE=pxlcolor -dNumCopies=2 \ 
     -sOutputFile="%printer%Kyocera TASKalfa 7550ci KX" -f in.pdf 

gswin32c -dBATCH -dNOPAUSE -q -dPDFFitPage -dUseTrimBox -dFirstPage=16 -dLastPage=16 \ 
     -dMediaPosition=7 -sDEVICE=pxlcolor \ 
     -sOutputFile="%printer%Kyocera TASKalfa 7550ci KX" -f in.pdf 

的唯一的事情是,网页无法正确缩放到pxlcolor(它在ljet4,但它是黑色和白色)。

我快到了!谢谢^^。如果有人知道这个问题,我将不胜感激。

回答

0

有没有简单的方法来做到这一点。虽然PDF本身不提供切换纸盒的设施,但您需要将此流转换为另一个PDL。 PostScript是一个不错的选择。

虽然转换成PostScript你可以注入像那些在PPD发现PostScript纸盘切换命令:

<< /ManualFeed false >> setpagedevice statusdict begin 5 setpapertray end 

在Windows平台上,你对实现选择:

  1. 改变PPD使它在每个页面之前注入PostScript代码。代码应该保持一个页面计数器并相应地执行托盘切换命令。
  2. 购买提供此功能的第三方软件。
  3. 使用注入PostScript代码的DLL扩展打印机驱动程序。

第一个可能不适用于您的打印机潜水员。然后,您可以尝试在作业开始时注入PostScript代码。代码应该覆盖showpage,并使用第一个选项中描述的功能进行扩展。

相同的代码重载showpage如果您有权访问控制器的内部,则可以在PostScript解释器启动顺序中注入该代码。

+0

你知道的任何支付程序,做到这一点? –

+0

不幸的是没有。我的企业正在按需实施这三种解决方案中的任何一种。 –

3

你问了一个很多的问题,一次,这不是一个真正的好方法得到有用的答案。另外你对于一些问题并没有太清楚。

1)如果你想使用TrimBox作为媒体大小,那么你必须告诉Ghostscript你想使用TrimBox,你可以通过-dUseTrimBox来做到这一点,不管你想用什么设备。

2)mswinpr2设备通过为打印机创建Windows DeviceContext,将输入呈现为(RGB)位图,然后将位图传送给DeviceContext并告诉其打印自身来工作。这很慢,因为它会涉及将大位图(大小取决于打印机分辨率)渲染到内存,然后将大位图发送到设备。

它的一个很大的优点是它可以工作,不管你有什么打印机。

GSPrint使用'相似'但有点不同的技术,并声称速度更快。

请注意,这两个设备都使用打印机的默认设置,这可能不适合您的复杂需求。

色彩管理,当然,最多到Windows在这种情况下,但如果说CMYK指定您的原始PDF那么这将涉及转换的CMYK-> RGB->这势必会造成色差CMYK。

3)有在Ghostscript的可用的颜色PCL设备,例如cdeskjet设备。如果选择-dUseTrimBox

4)pdfwrite将使用裁切框。由于它创建了一个PDF文件,所以很难看到它如何“选择正确的纸盒”。如果您要将PDF文件发送到打印机,那么您可以简单地使用原始PDF文件。 PDF文件不能包含设备相关标准,如纸盒选择。 5)使用当前版本的ps2write,您可以添加特定于设备的操作,请参阅ghostpdl/doc/VectorDevices.htm(也可在ghostscript.com网站上获得)第6.5节“PostScript文件输出”并查找PSDocOptionsPSPageOptions键。您可以使用PSPageOptions阵列向每个页面引入单独的媒体选择命令。我不知道你说“弄乱了页面位置”的意思,但是再一次,如果你不选择-dUseTrimBox那么它将不会使用裁切框........

哦,如果你要“缩放裁切框,以适应整个页面”(你只关于pdfwrite提),那么你将不得不设置要扩展到(-dFIXEDMEDIA-dDEVICEHEIGHTPOINTS=-dDEVICEWIDTHPOINTS=)的页面大小的一个固定的媒体,选择-dUseTrimBox-dPDFFitPage

+0

谢谢!我更新了我的帖子,只剩下一个问题... –

+0

PDFFitPage不会做任何有用的**除非**您设置了固定的页面大小。这样做的方式是,PDF解释器为每个页面请求特定的媒体大小,如果确切的媒体不可用,那么有些策略定义要做什么,我不想现在进入。但是,您可以使用-dFIXEDWIDTHPOINTS和-dFIXEDHEIGHTPOINTS声明特定的介质大小,然后使用-dFIXEDMEDIA使其不可更改。如果你这样做,那么-dPDFFitPage将缩放内容以适应规定的媒体大小。否则它不会做任何事情。 – KenS

+0

'gswin32c -dBATCH -dNOPAUSE -q -dFIXEDWIDTHPOINTS = 595 -dFIXEDHEIGHTPOINTS = 842 -dFIXEDMEDIA -dUseTrimBox -dPDFFitPage -dFirstPage = 1 -dLastPage = 1 -dMediaPosition = 7 -sDEVICE = pxlcolor -sOutputFile =“%printer%Kyocera TASKalfa 7550ci KX “-f in.pdf' 还是不工作... –