GhostScript/PostScript/PDF-从PS文件中剪切一个矩形,将其旋转45度,然后粘贴到另一个文件中-如何?

GhostScript/PostScript/PDF-从PS文件中剪切一个矩形,将其旋转45度,然后粘贴到另一个文件中-如何?,pdf,ghostscript,postscript,Pdf,Ghostscript,Postscript,我需要自动化以下过程: 剪切PostScript输入文件中页面的一部分,例如:input.ps,将所有内容从10,10剪切到150,200 将该零件插入新的PostScript文件,例如旋转n度,旋转40度,放置在100100附近 有没有办法使用PostScript命令或GhostScript的任何特殊功能来实现这一点 将文件转换为PDF并修改PDF也是一个选项 编辑1: 由于在测试PS Base解决方案时发现的问题,我更喜欢使用PDF 迄今为止的答案解决了剪切PDF的问题。但是,我仍然需要将结

我需要自动化以下过程:

剪切PostScript输入文件中页面的一部分,例如:input.ps,将所有内容从10,10剪切到150,200

将该零件插入新的PostScript文件,例如旋转n度,旋转40度,放置在100100附近

有没有办法使用PostScript命令或GhostScript的任何特殊功能来实现这一点

将文件转换为PDF并修改PDF也是一个选项

编辑1:

由于在测试PS Base解决方案时发现的问题,我更喜欢使用PDF

迄今为止的答案解决了剪切PDF的问题。但是,我仍然需要将结果旋转n度,其中n不是90的倍数

任何提示或指导都将不胜感激。
谢谢

用后记来思考这个问题。为了获得剪切效果,需要应用剪切路径。您需要一个矩形,因此这很简单:

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之外,您没有什么可以做的,您确实不应该这样做,而且在许多系统上可能是禁止这样做的。

从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之外,您没有什么可以做的,你真的不应该这样做,而且在许多系统上可能是被禁止的。

我的专长更多地在于PDF而不是PostScript,但是使用PDF肯定是可能的。逻辑步骤概括如下:

1打开第一个PDF并更改此文件的修剪框,以便仅显示所需的零件

2打开第二个PDF文件,并在所需位置将第一个PDF合成在其顶部

在PDF中这样做会更安全,因为PDF操作起来比PostScript更安全—在其中一个文件中没有任何聪明的PostScript代码会破坏您的算法


如何做到这一点在很大程度上取决于您所从事的项目中的约束条件。当然有一些商业工具可以做这样的事情。我想也有开源/免费的工具可以提供帮助,甚至可能是GhostScript本身或类似pdflib的东西。

我的专长更多地在于使用PDF而不是PostScript,但使用PDF肯定是可能的。逻辑步骤概括如下:

1打开第一个PDF并更改此文件的修剪框,以便仅显示所需的零件

2打开第二个PDF文件,并在所需位置将第一个PDF合成在其顶部

在PDF中这样做会更安全,因为PDF操作起来比PostScript更安全—在其中一个文件中没有任何聪明的PostScript代码会破坏您的算法


如何做到这一点在很大程度上取决于您所从事的项目中的约束条件。当然有一些商业工具可以做这样的事情。我猜也有开源/免费的工具可以提供帮助,甚至可能是GhostScript本身或类似pdflib的东西。

level-2 ps引入了“x y w h rectclip”。除非我弄错了,否则最后一个代码片段将旋转和平移剪辑路径,即“剪切”区域,而不是“粘贴”区域?2级ps引入了“x y w h rectclip”。除非我弄错了,否则最后一个代码段将旋转并平移剪辑路径,即“剪切”区域,而不是“粘贴”区域?有没有关于如何将第一个PDF以一定角度放在第二个PDF的顶部的线索?ghostscript和pdftk都提供超过
放置PDF文件,但我需要以任意角度放置,而工具只支持90度倍数。有没有关于如何将第一个PDF以一定角度放置在第二个PDF上的线索?ghostscript和pdftk都提供了叠加PDF文件,但我需要以任意角度进行叠加,而工具只支持90度的倍数。作为此问题的最终解决方案,我采用了此处建议的LaTeX方法:作为此问题的最终解决方案,我采用了此处建议的LaTeX方法: