用ghostscript 9.0打印一个大的、横向的PDF图纸到a3 LaserJet4(纵向)。

1 人关注

我们想用ghostscript将大的图画(最大到A0,有些时候更长)打印到A3打印机。

gs -o - -sDEVICE=pdfwrite -r1200x1200 -sPAPERSIZE=a3 -f
/S/tmp/SamplePDFnewStamp.pdf | gs -o resized.pcl -sDEVICE=ljet4
-g7012x4961 -dPDFFitPage -

我在一张A3纵向纸上得到了A4横向纸。我还尝试了旋转。

gs -sOutputFile="-" -sDEVICE=pdfwrite -r1200x1200 -sPAPERSIZE=a3 -d
-dBATCH -dNOPAUSE -dAutoRotatePages=/None -dPDFFitPage -c "<</Orientation 1>> setpagedevice 90 rotate 0 -595 translate" -f
/S/tmp/SamplePDFnewStamp.pdf -c quit | gs -o resized.pcl
-sDEVICE=ljet4 -g7012x4961 -dPDFFitPage -

得到同样的结果。

linux
shell
printing
ghostscript
Horst
Horst
发布于 2012-11-26
2 个回答
KenS
KenS
发布于 2012-11-30
已采纳
0 人赞同

在没有看到PDF文件的情况下,真的不可能进行评论,但你在那里使用的一些命令行选项在你的组合中是没有意义的。

The first 我想做的事情是停止这样的管道命令,至少在调查问题的时候。做成2个阶段,这将允许你(和其他人)看一下中间的PDF文件。

第二,我不相信你能做到你似乎想做的事。看起来你是想把第一次调用gs产生的PDF通过第二次调用来处理。我看不出这有什么用,pdfwrite设备需要在文件周围寻找以创建xref表,它不能使用stdout,至少在当前版本中是这样。你使用的是哪个版本的Ghostscript?

我也看不出这有什么意义,为什么要拿一个PDF,用它做一个新的PDF,然后再渲染第二个PDF?为什么不直接渲染原来的?

你所指定的媒体尺寸开关都不会有任何效果,因为你没有告诉 Ghostscript 媒体尺寸是固定的(使用 -dFIXEDMEDIA)。因此,PDF 解释器将把介质尺寸设置为与 PDF 文件中的 MediaBox 相同。类似的问题也适用于发送 PostScript 并期望它在渲染 PDF 文件时改变 Ghostscript 的行为。

为pdfwrite设置分辨率并不是一个好主意,一般来说不会有什么影响。即使它有影响,你可能也不想把它设置成设备的分辨率(-g值似乎表明这也不是一个1200dpi的设备)。分辨率的唯一影响是当对象必须被渲染成图像时,因为它们不能在PDF中表示。你不希望以打印机的分辨率来创建图像,通常在四分之一到二分之一的分辨率之间就足够了。

如果你愿意分享一个PDF文件的例子,我也许能告诉你如何解决你的方向问题。你需要解释一下为什么你要先通过pdfwrite,然后再转到PCL,我看不出有什么原因。

This:

gs -sDEVICE=pdfwrite -sOutputFile=\temp\out.pdf -dDEVICEHEIGHTPOINTS=2386.08 -dDEVICEWIDTHPOINTS=1685.7600 -dFIXEDMEDIA -dPDFFitPage SamplePDFnewStamp.pdf

将采取你的原始PDF文件,并产生一个旋转了90度的PDF文件。如果我再做

gs -sDEVICE=ljet4 -sOutputFile=\temp\out.pcl \temp\out.pdf

我得到一个PCL文件,当被GhostPDL以适当的媒体尺寸处理时,似乎可以做到你想要的。

我没有试过,由于缺乏实际的设备来打印,但我希望如此。

gs -sDEVICE=ljet4 -sOutputFile=\temp\out.pcl -dDEVICEHEIGHTPOINTS=2386.08 -dDEVICEWIDTHPOINTS=1685.7600 -dFIXEDMEDIA -dPDFFitPage SamplePDFnewStamp.pdf

将在一个步骤中产生相同的文件。

我刚刚找到一种方法来转换我的 PDF(DIN A1)到PCL(DIN A3)。 <br/>
对不起,我无法编辑上面的评论。 @KenS: 我刚刚找到一种方法,可以将我的 PDF(DIN A1)到PCL(DIN A3)。 gs -q -o - -sDEVICE=ljet4 -g9921x7015 -dPDFFitPage \ -f /S/tmp/rot_a3.ps -f /S/tmp/SamplePDFnewStamp.pdf \ | sed "s/l0o/l2o/" | sed "s/l-180u/l140u/" > testA3.pcl rot_a3.ps for rotation also in download Could I replace the sed hack directly in Ghostscript ?
KenS
我在我的答案中加入了一个编辑,因为我无法对评论进行格式化。
我在@KenS的回答中加入了一张结果的图片,因为我不能在评论中加入图片。
KenS
那是一张PDF的图片,还是生成的PCL,或者其他什么?
Horst
Horst
发布于 2012-11-30
0 人赞同

我找到了一个解决方案。