我们希望使用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 -
获得相同的结果。
答案 0 :(得分:1)
如果没有看到PDF文件就无法发表评论,但是你在那里使用的一些命令行选项在你的组合中没有意义。
第一个我要做的就是停止管理这样的命令,至少在调查问题时。将它作为2个阶段,这将允许您(和其他人)查看中间PDF文件。
其次,我不相信你可以做你似乎想做的事情。看起来你试图通过第二次调用来管道第一次调用gs所产生的PDF。我没有看到任何可行的方法,pdfwrite设备需要在文件周围寻找以创建外部参照表,它不能使用stdout,至少在当前版本中。您使用的是什么版本的Ghostscript?
我也看不出这一点,为什么要拿PDF,从中制作一个新的PDF,然后渲染第二个PDF?为什么不渲染原作?
您指定的所有媒体大小开关都没有任何效果,因为您没有告诉Ghostscript媒体大小是固定的(使用-dFIXEDMEDIA)。因此,PDF解释器将媒体大小设置为与PDF文件中的MediaBox相同。类似的问题适用于发送PostScript并希望它在渲染PDF文件时改变Ghostscript的行为。
设置pdfwrite的分辨率不是一个好主意,通常无效。即使它确实有效果,您可能不希望将其设置为设备的分辨率(并且-g值似乎表明这不是1200 dpi设备)。分辨率的唯一影响是必须将对象渲染到图像,因为无法用PDF表示。您不希望以打印机分辨率创建图像,分辨率通常在四分之一到一半之间。
如果您想分享一个示例PDF文件,我可能会告诉您如何解决您的方向问题。你需要在去PCL之前解释为什么你通过pdfwrite运行它,我看不出任何理由。
此:
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
会一步生成相同的文件。
答案 1 :(得分:0)
我找到了解决方案:
gs -q -sDEVICE = ljet4 -sOutputFile = out.pcl -dFIXEDMEDIA -dPDFFitPage -sPAPERSIZE = a3 \ _-c“
<</Install {-1 -1 scale -843 -1192 translate}>>
setpagedevice”
- f SamplePDFnewStamp.pdf -c退出