如果不查看 PDF 文件就不可能发表评论,但是您在那里使用的许多命令行选项在您拥有的组合中没有意义。
我要做的第一件事就是停止像这样的命令,至少在调查问题时是这样。分两个阶段进行,这将允许您(和其他人)查看中间 PDF 文件。
其次,我不相信你可以做你似乎想做的事情。看起来您正试图通过第二次调用通过管道传输第一次调用 gs 生成的 PDF。我没有看到任何可行的方法,pdfwrite 设备需要在文件周围寻找才能创建外部参照表,它不能使用标准输出,至少在当前版本中是这样。您使用的是什么版本的 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
将在一个步骤中生成相同的文件。
![这是结果](https://i.stack.imgur.com/rila3.png)