使用ghostscript为Postscript文件中的某些页面添加Duplex选项 [英] Add Duplex option for certain pages in postscript file using ghostscript
问题描述
我有一个3页的pdf文件.我想将第一页打印为单工,第二个&第三页为双面打印(双面-正面第二页,背面第三页).如何使用ghostscript生成所需的后记.
I have a pdf file with 3 pages. I want to print first page as simplex and second & third page as duplex(double-sided - second on the front, third on the back). How can I generate the required postscript with ghostscript.
我在Internet上找到了以下解决方案,它可以工作,但它使整个文档成为双面文件.
I found the below solution on the internet and it works, but it makes the whole document as duplex.
gswin64c.exe -q -dSAFER -dNOPAUSE -dBATCH -sDEVICE=ps2write -sOutputFile=output.ps -c "<</PSDocOptions (<</Duplex true>> setpagedevice)>> setdistillerparams" -f input.pdf
上面是一个文档级别的选项,我在下面链接的Ghostscript文档页面上找到了页面级别的选项. https://www.ghostscript.com/doc/9.50/VectorDevices.htm#PS
Above one is a document level option, I found page level option on the Ghostscript documentation page in below link. https://www.ghostscript.com/doc/9.50/VectorDevices.htm#PS
但是我找不到PSPageOptions参数的任何示例代码.我已经尝试过以下命令,但是没有运气.
But i could not find any sample code for PSPageOptions parameter. I have tried with below command, but no luck.
gswin64c.exe -q -dSAFER -dNOPAUSE -dBATCH -sDEVICE=ps2write -sOutputFile=out.ps -c "<</PSPageOptions [(/Duplex false)(/Duplex true)(/Duplex true)] /LockDistillerParams true>>setdistillerparams" -f input.pdf
我错过了什么吗?有人,请帮帮我.
Did I miss anything? Someone, please help me out.
推荐答案
摘自《 Postscript语言参考手册》第三版.在6.1.1:
From Postscript Language Reference Manual 3rd Ed. at 6.1.1:
Note: setpagedevice is a page-oriented operator used to control the output process-
ing of one or more pages of a page description. Any call to setpagedevice implicitly
invokes erasepage and initgraphics, and thus must precede the descriptions of the
pages to be affected. If the current device is not a page device, the effect of invoking
setpagedevice is device-dependent.
因此,请尝试在文本编辑器中打开PostScript文件,并插入<</Duplex false>>.setpagedevice"在第1页代码的开头,</Duplex true">setpagedevice"在第2页代码的开头.还有<</Tumble true>>.如6.2.3所述可能需要的选项:
Therefore try to open the PostScript file in a text editor and insert the "<</Duplex false>> setpagedevice" at the beginning of the Page 1 code and the "<</Duplex true>> setpagedevice" at the beginning of the Page 2 code. There is also <</Tumble true>> option that might be desired as explained at 6.2.3:
Duplex boolean A flag determining whether the output is to be printed duplex (on both sides
of the physical medium) or simplex (on one side of the medium only). If this
flag is true, pairs of consecutive page images will be printed on opposite sides
of a single sheet of medium; if false, each page will be printed on a separate
sheet.
On device activation, a duplex device always prints the first page on a new
sheet of medium; on deactivation, it automatically delivers the last sheet of
medium if it has been printed on only one side.
Tumble boolean A flag specifying the relative orientation of page images on opposite sides of a
sheet of medium in duplex output (that is, when Duplex is true). If Tumble is
false, the default user spaces of the two pages are oriented suitably for binding
at the left or right, with vertical (y) coordinates in the two spaces increasing
toward the same edge of the physical medium. If Tumble is true, the default
user spaces are oriented suitably for binding at the top or bottom, with verti-
cal coordinates increasing toward opposite edges of the medium. If Duplex is
false, the Tumble parameter has no effect.
Note that Tumble is defined in terms of default user space—the user space
established by setpagedevice. The orientation of default user space with re-
spect to the medium is determined by the PageSize and Orientation
parameters, possibly altered by the Install procedure. Consistent results are
obtained across all devices that support duplexing, regardless of how the me-
dium moves through the printing mechanism. However, if a page description
alters user space by invoking operators such as rotate, the visual orientation
of the material printed on the page may differ from the orientation of default
user space.
现在我明白了.我可以修改您的方法以将字符串插入到后记中,但无法使用我的单面打印机检查双面打印.ghostscript确实按预期将正确的字符串插入%% BeginPageSetup中:
Now I see the point. I was able to modify your approach to insert the strings into the postscript except can't check the duplex printing with my simplex printer. The ghostscript does insert the correct strings into the %%BeginPageSetup as expected:
-c "<</PSPageOptions [ ( (page +1) print) (<</Duplex true>> setpagedevice) ( (page 2+) print) ] /LockDistillerParams true>> setdistillerparams"
第一页和第三页发出页面字符串,我在+2页的正确位置找到了setpagedevice,所以我希望一切正常.您的第一次尝试非常接近,我也学到了一些东西.
The first and third pages emit the page strings and I found the setpagedevice in the correct location for page +2 so I hope everything is working. Your first attempt was very close and I learned something too.
page +1>>showpage, press <return> to continue<<
>>showpage, press <return> to continue<<
page 2+>>showpage, press <return> to continue<<
page +1>>showpage, press <return> to continue<<
>>showpage, press <return> to continue<<
page 2+>>showpage, press <return> to continue<<
page +1>>showpage, press <return> to continue<<
这篇关于使用ghostscript为Postscript文件中的某些页面添加Duplex选项的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!