我需要自动执行以下过程:
在PostScript输入文件中剪切部分页面(例如:input.ps,将所有内容从10,10切换到150,200)。
将该部分插入新的PostScript文件中,旋转n度(例如,旋转40度,放置在100,100附近)。
有没有办法使用PostScript命令或GhostScript的任何特殊功能?
将文件转换为PDF并修改PDF也是一种选择。
编辑1:
由于我在测试PS基础解决方案时发现的问题,我更喜欢使用PDF。
到目前为止,答案解决了“剪切”PDF的问题。但是,我仍然需要将结果旋转n度,其中n不是90的倍数。
任何提示或指示都将受到赞赏 谢谢!
答案 0 :(得分:4)
从PostScript的角度考虑问题。为了获得“剪切”的效果,您需要应用剪切路径。你想要一个矩形,这很容易:
clipleft clipbottom moveto
0 clipheight rlineto
clipwidth 0 rlineto
0 clipheight neg rlineto
closepath clip
如果您在所需页面的开头之前注入此代码,它应该剪切到该矩形。
要获得旋转的效果,可以应用变换矩阵或使用旋转命令:
degrees rotate
会影响之后的所有操作。现在,更有可能的是,你想要做这样的事情:
degrees rotate
placementx placementy translate
0 0 moveto
0 clipheight rlineto
clipwidth 0 rlineto
0 clipheight neg rlineto
closepath clip
将旋转轴,将原点转换到您想要的位置,绘制剪裁矩形并剪切到它。之后的任何绘图都会受到先前转换的影响 - 除非渲染页面的代码调用PostScript操作符initgraphics(或任何其他重置页面属性的操作符),那么除了重新定义initgraphics之外你没有什么可以做的,真的不应该这样做(并且很多系统都可能被禁止)。
答案 1 :(得分:0)
我的专业知识更多地依赖于PDF而不是PostScript,但使用PDF肯定是可能的。逻辑步骤总结如下:
1)打开第一个PDF并更改此文件的剪裁框,以便只显示您想要的部分。
2)打开第二个PDF文件,并在所需位置合成第一个PDF。
在PDF中执行此操作会使其更安全,因为PDF操作比PostScript更安全(在其中一个文件中没有一些聪明的PostScript代码可能会使算法失效)。
如何执行此操作很大程度上取决于您正在处理的项目中的约束条件。肯定有商业工具可以做这样的事情。我猜想还有开源/免费工具可能会有所帮助,甚至可能是GhostScript本身或类似pdflib的东西。