我使用Ghostscript将PDF文档转换为PCL以进行打印。最近,我有额外的要求,即在打印之前必须将所有页面旋转为纵向。我已经找到了一种使用Ghostscript和后置脚本函数来实现这个要求的方法,如下所示:
"C:\Program Files (x86)\gs\bin\gswin32c.exe" "-dNOPAUSE" "-dNOPROMPT" "-dBATCH" "-sDEVICE=pxlmono" "-Ic:\Program Files (x86)\gs\fonts\;c:\Program Files (x86)\gs\lib\;c:\Program Files (x86)\gs\lib\;" "-r300" "-sOutputFile=C:\EXPORTFILE_e542e04f-5e84-4c8e-9b41-55480cd5ec52.cache" "rotate612x792.ps" "C:\EXPORTFILE_3a5de9da-d9ca-4562-8cb6-10fb8715385a.cache"
rotate612x792.ps的内容
%! Rotate Pages
<< /Policies << /PageSize 5 >>
/PageSize [612 792]
/InputAttributes currentpagedevice
/InputAttributes get mark exch {1 index /Priority eq not {pop << /PageSize [612 792] >>} if } forall >>
>> setpagedevice
问题在于该函数将所有页面大小都替换为信纸大小。我的文档有时是法律或A4大小的。我已经尝试修改此函数以将横向大小替换为其纵向对应物,但无法生成可用的后置脚本。我需要指点方向,以生成以下伪代码的后置脚本等价物。
for(each page)
{
if(PageSize == [792 612])
PageSize = [612 792];
}
我知道有非Ghostscript的方法来旋转页面,但如果我能让它工作,它会很好地适应我的流程,并且不会降低性能。
这是我的一个PDF文件的样本: Sample1.pdf