我正在使用 Ghostscript 通过命令行参数打印 PDF。但它在打印机假脱机程序中将打印文档的名称显示为 Ghostscript 输出。我想将其更改为自定义名称(作为字母的名称)。
4 回答
请参阅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
忽略该开关,也许可以通过使用适当的开关来强制页面大小。
如何使用 Ghostscript手册 在 选择纸张大小部分中说:
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).
附录:Ghostscript 已知的纸张尺寸部分 ,A4 尺寸定义为 w=595 和 h=842。
为此,您必须使用以下链接setup.ps
中的文件:6.2 支持的选项(设备属性)
这为该问题提供了部分解决方案,这对于您的需求可能是可以接受的。
控制输出大小的选项是(markdown 插入空格,但应该没有):
-dDEVICEWIDTHPOINTS=
w
,-dDEVICEHEIGHTPOINTS=
h
(w,h=595,842 / 612,792 分别用于 A4 / letter), Ref .-sPAPERSIZE=
size
,参考。-g
number1
x
number2
(number1,number2=5953,8419 / 6120,7920 分别用于 A4 / letter), Ref .-dDEVICEWIDTH=
number1
,-dDEVICEHEIGHT=
number2
(number1,number2=5953,8419 / 6120,7920 分别用于 A4 / letter), Ref .
I have tested the four of them, printing a pdf file to pdf, trying to convert (letter -> A4) and (A4 -> letter). The command line I used is
gswin32c -dPDF -dBATCH -dNOPAUSE -dFIXEDMEDIA <size setting flags> -sDEVICE=pdfwrite -sOutputFile=output.pdf input.pdf
A4 -> letter always worked well.
letter -> A4 only worked for the width, so output.pdf
was always 210mm x 279.4mm.
Using, e.g., -dDEVICEWIDTHPOINTS
alone for letter -> A4 produced the same result.
Adding flag -dPDFFitPage
was also useful for partially adapting size (in cases I want to do that).
My conclusion is that there is some bug in Ghostscript specifically related to letter -> A4 conversion. Whether this could be handled via gs_setpd.ps
(e.g., this; this would still be a bug), or a crafty combination of (-dUseBleedBox
, -dUseTrimBox
, -dUseArtBox
, -dUseCropBox
) I don't know.