2012-06-26 73 views
0

我有使用GhostScript(V9.05)打印不同大小的PDF的问题。Ghostscript打印PDF dPDFFitPage不正确的尺寸

有问题的PDF文件是A3格式,但是当使用ghost脚本使用以下命令行参数进行打印时,结果将以A4格式打印并切断一半内容。

Commad行参数:

“-sDEVICE = mswinpr2 -dPDFFitPage -dPrinted =假-dNoCancel -dBATCH -dNOPAUSE -sOutputFile =” \阀芯\的HP LaserJet P2050系列PCL6(A4)”,“C:\用户\ dmeggs \ AppData \ Local \ Temp \ iPlan_Printing_k4gjaoip.pdf“”

我试过许多参数组合,大多数似乎没有效果。理想情况下,我希望打印机基于PDF属性打印PDF,因为这将用于打印A4,A3,纵向和横向文档。

感谢 丹

回答

1

添加一个新的答案,因为它的评论太大。

如果pswrite和epswrite的输出工作,那么打印机是PostScript打印机。

Pdfwrite生成PDF文件,所以可能你不想这样做,因为输入是PDF文件:-)一些PostScript打印机实际上也可以打印PDF文件,但这是相当不寻常的。

而不是使用psweite(或epswrite)我建议您使用ps2write(它将生成PostScript语言级别2作为输出)并将生成的文件发送到打印机。

在一个理想的世界中,您的打印机会根据PostScript程序中的介质请求来选择介质),但并非所有的打印机都能管理这个。部分原因是,如果有多个介质可用,打印机并不总是知道哪个介质在哪个托盘中。

但是,您可以编写合理简单的PostScript代码,您可以将其预先添加到文件中,以便确定所需的页面大小。假设你知道如何控制打印机中的托盘/介质选择,你可以让PostScritp程序为你做。

不幸的是我不能告诉你如何做到这一点,因为它取决于特定的打印机。

+0

谢谢Ken,最后我选择了-sDEVICE = mswinpr2 -sPAPERSIZE = a4 -dFIXEDMEDIA -dPDFFitPage -dPrinted = false -dNoCancel -dBATCH -dNOPAUSE -sOutputFile =这似乎是在A4和A4打印机上工作的A4和A3尺寸的PDF,现在可以。我确信在某些时候,他们会要求它能够以A4和A3尺寸打印出来,在这一点上,我将不得不查找悬而未决的postscript代码文件并选择正确的打印机托盘。谢谢你的帮助。 –

1

我假定打印机是打印机A4?为了让GS正确缩放页面,您需要告诉它页面大小是多少。它不能从打印机名称中知道。尝试设置-sPAPERSIZE = a4 -dFIXEDMEDIA

将媒体设置为A4,并告知GS它不能更改,然后-dPDFFITPAGE切换器将通过缩放将PDF媒体请求放入声明的媒体。

如果这不起作用,那么我需要看你的PDF文件。

+0

谢谢肯工作的一种享受。是的,测试打印机是A4。然而,在现场环境中,他们使用的是既能进行A4打印又能进行A3打印的打印机。我需要能够处理这两种情况,但如果PDF具有A4内容或A3内容,我不会知道。是否有可能允许打印机决定? –

+0

恐怕不是,不。 Ghostscript在创建位图之前需要知道。 mswinpr2设备的工作方式是创建一个打印机设备上下文,将位图渲染到上下文中,然后告诉它打印自己。您打印的打印机是否不接受任何PCL,PDF,PostScript或XPS作为输入?注意,PDF中介质的大小只有打印机介质无关紧要。除非您告诉它,否则GS会为PDF文件中声明的媒体创建足够大的位图,但我不知道如何在打印机上选择正确的媒体。 – KenS

+0

我试过改变-sDEVICE参数,它似乎可以打印到同一台打印机。我已经尝试了-sDEVICE = pswrite,sDEVICE = epswrite哪些工作(它打印),-sDEVICE = pdfwrite没有发送任何东西到打印机。你是说如果我可以使用不同的设备驱动程序,那么我可以做到这一点? –