为了添加 CropBox(到页面),您可以使用 EndPage 过程,通过在页面末尾而不是开头发送 pdfmark,它应该覆盖任何预先存在的 CropBox。
或者更简单地说,您可以简单地直接渲染媒体的一部分,这听起来像是您想要做的事情,并且避免了(可能很长的)处理步骤。
将媒体大小设置为要渲染的区域。现在让我们假设你想要一个 2 英寸的正方形,距离页面底部 1 英寸。因此,我们首先将媒体尺寸设为 2 英寸见方,并对其进行修复,以便任何输入都无法更改它:
-dDEVICEWIDTHPOINTS=144 -dDEVICEHEIGHTPOINTS=144 -dFIXEDMEDIA
如果将其添加到用于渲染 PDF 文件的命令行,您将看到渲染的 2 英寸正方形。当然现在是页面的左下角,所以现在我们需要移动媒体位置,以便我们想要的部分位于页面上。为此,我们使用 PostScript,特别是页面设备字典中的 PageOffet 键:
<</PageOffset [-72 0]>> setpagedevice
请注意,我们正在移动页面的左下角,这就是我们使用 -72 的原因,我们希望角落向下。
因为我们使用的是 PostScript,所以我们需要使用 -c 和 -f 开关来引入它:
-c "<</PageOffset [-72 0]>> setpagedevice" -f
所以整个命令行就变成了:
./gs -dDEVICEWIDTHPOINTS=144 -dDEVICEHEIGHTPOINTS=144 -dFIXEDMEDIA -c "<</PageOffset [-72 0]>> setpagedevice" -f input.pdf
如果您真的想添加一个 CropBox 并生成一个 PDF 文件,那么您需要添加一个 EndPage 过程,该过程将分别为每个页面添加一个 CropBox:
./gs -sDEVICE=pdfwrite -o ./marked.pdf -c "<</EndPage {0 eq {[/CropBox [300 400 400 600] /PAGE pdfmark pop true}{pop false}ifelse}>>setpagedevice" -f "c:\big boat.pdf