前段时间,我发现您可以使用Postscript通过Ghostscript更改pdf文档。可用的示例对每个页面进行了相同的更改:
gs \
-sDEVICE=pdfwrite \
-o /path/to/output/pdf-shifted-by-1-inch-to-left.pdf \
-dPDFSETTINGS=/prepress \
-c "<</PageOffset [-72 0]>> setpagedevice" \
-f /path/to/input/pdf-original.pdf
来源:How can I shift page images in PDF files more to the left or to the right?
另请参阅:Cropping a PDF using Ghostscript 9.01
但是,如何在不将pdf拆分为单独文件的情况下为不同页面设置不同的偏移量呢?例如,向右移动某些页面,向左移动一些页面。
我知道使用pdftex做到这一点的方法,但我希望避免这种依赖性。
答案 0 :(得分:0)
基本上,这是一个PostScript问题,因为Ghostscript的PDF解释器(当前)是用PostScript编写的,因此您可以更改将影响PDF解释器的PostScript图形状态,并利用PostScript的语言功能来执行编程任务
要在每个页面上执行不同的操作,您需要使用BeginPage或EndPage过程。在解释程序之前,将在每个页面的开头调用BeginPage,并在页面完成时(即在执行显示页面时)调用EndPage。
在页面执行运行之前,您将需要一个BeginPage过程来修改页面设置。将会用到目前为止已发送的页面数来进行调用,因此您可以使用它来决定要执行的操作。
注意,当前的PDF解释器会在每个页面上执行setpagedevice,因为PDF的每个页面可以具有不同的大小。这意味着需要进行一些实验才能实现您的目标。