如何更改 Ghostscript 输出文件(在打印机后台处理程序中)
Posted
技术标签:
【中文标题】如何更改 Ghostscript 输出文件(在打印机后台处理程序中)【英文标题】:How to change Ghostscript output file (in printer spooler) 【发布时间】:2012-09-10 09:29:30 【问题描述】:我正在使用 Ghostscript 通过命令行参数打印 PDF。但它在打印机假脱机程序中将打印文档的名称显示为 Ghostscript 输出。我想将其更改为自定义名称(作为字母的名称)。
【问题讨论】:
【参考方案1】:请参考http://www.ghostscript.com/doc/9.06/Devices.htm#Win中的文档
特别是第 10.2 节中有一个示例,其中解释了可以在第 10.3 节中指定的参数。只需更改文档名称即可:
mark /UserSettings <</DocumentName (MyDocName)>> (mswinpr2) finddevice putdeviceprops setdevice
这可以像示例中那样放入文件中,也可以放在命令行上的字符串中跟随 -c
选项。如果您使用 -c 而不是将上述 PostScript 放入安装文件中,请将其作为 -f
和输入文件名之前的最后一个选项。
注意:您应该不在命令行上指定-sDEVICE=mswinpr2
——setdevice 会处理这个问题。我在笔记本电脑上使用命令行对此进行了测试:
gswin32c \
-dNOPAUSE -dBATCH \
-c "mark /UserSettings <</DocumentName (MyDocName)>> (mswinpr2) finddevice putdeviceprops setdevice" \
-f examples/colorcir.ps
【讨论】:
嗨...这个我之前用过,但是这个解决方案有问题。即使我使用 -sPAPERSIZE,输出页面大小也仅以字母形式出现谢谢 但输出纸张尺寸仍然是“LETTER” 我猜这是 Ghostscript 中的一个错误,无论是源代码和/或配置文件。【参考方案2】:如果sPAPERSIZE
开关被忽略,也许可以强制页面大小
通过使用适当的开关。
How to Use Ghostscript 手册中说 Choosing paper size:
Otherwise you can set the page size using the pair of switches
-dDEVICEWIDTHPOINTS=w -dDEVICEHEIGHTPOINTS=h
Where w be the desired paper width and h be the desired paper height in points (units of 1/72 of an inch).
该部分 Appendix: Paper sizes known to Ghostscript, A4 尺寸定义为 w=595 和 h=842。
【讨论】:
【参考方案3】:为此,您必须使用setup.ps
文件,如this link 中的部分:6.2 支持的选项(设备属性)
【讨论】:
【参考方案4】:这为问题提供了部分解决方案,这可能满足您的需求。
控制输出大小的选项有(markdown插入空格,但应该没有):
-dDEVICEWIDTHPOINTS=
w
, -dDEVICEHEIGHTPOINTS=
h
(对于 A4 / letter,w,h=595,842 / 612,792),Ref。
-sPAPERSIZE=
size
,Ref。
-g
number1
x
number2
(number1,number2=5953,8419 / A4 / letter 分别为 6120,7920),Ref。
-dDEVICEWIDTH=
number1
、-dDEVICEHEIGHT=
number2
(number1,number2=5953,8419 / A4 / letter 分别为 6120,7920),Ref。
我已经测试了其中四个,将pdf文件打印为pdf,尝试转换(letter -> A4)和(A4 -> letter)。 我使用的命令行是
gswin32c -dPDF -dBATCH -dNOPAUSE -dFIXEDMEDIA <size setting flags> -sDEVICE=pdfwrite -sOutputFile=output.pdf input.pdf
A4 -> 字母总是很好用。
字母 -> A4 仅适用于宽度,因此 output.pdf
始终为 210mm x 279.4mm。
例如,单独使用 -dDEVICEWIDTHPOINTS
表示字母 -> A4 会产生相同的结果。
添加标志 -dPDFFitPage
对于部分调整大小也很有用(如果我想这样做)。
我的结论是 Ghostscript 中存在一些与字母 -> A4 转换特别相关的错误。这是否可以通过gs_setpd.ps
(例如this;这仍然是一个错误)或(-dUseBleedBox
、-dUseTrimBox
、-dUseArtBox
、-dUseCropBox
)的巧妙组合来处理,我不知道知道。
【讨论】:
谢谢。我也尝试过这些开关,但没有成功。不能成为语言环境设置或其他设置中的解决方案吗?我使用的是 Windows 10。从 Acrobat Reader 打印文档时效果很好。 Here 写成On Windows and some Linux builds, the default paper size will be selected to be a4 or letter depending on the locale.
我正在奖励这个复杂答案的赏金,尽管它仍然不起作用。
@xralf - 您的评论指向gs_init.ps
... 可能值得一试。将语言环境更改为人们认为(或以其他方式记录)将 A4 作为默认值的东西似乎并不难。从我读到的内容,除了直觉之外没有任何支持,我想它是行不通的。由于您似乎非常希望拥有该功能,因此我认为值得提交错误。
@xralf - 无论如何,任何弱的变通方法对你有用吗?
我已经尝试设置gs_init.ps
,但没有成功。您告诉它应该如何工作并指出错误的答案当然非常有用。以上是关于如何更改 Ghostscript 输出文件(在打印机后台处理程序中)的主要内容,如果未能解决你的问题,请参考以下文章
如何在ghostscript中使用正确的gutenprint驱动程序?