我曾经pdftk
解压缩 PDF,然后将其作为文本文件打开。
我想编辑/MediaBox字段,就我而言
/MediaBox [0 0 612 792]
例如,我想减少利润
/MediaBox [100 0 512 792]
不幸的是,它不起作用。我可以将 a 更改0
为 a2
或 a9
但我不能举个100
例子。
知道为什么吗?
字符串 100 中的数字比 0 多两个数字。当您使用文本编辑器并添加字符时,这会使文件变长。这就是为什么用 9 或 2 或任何其他单个数字替换都可以正常工作的原因。虽然理论上可以使用文本编辑器来编辑 pdf,但这并不简单,您必须尊重文件的内部结构。外部参照表是一个靠近 pdf 末尾的表格,它告诉读者每个对象的确切位置。每当更改任何内容的长度或位置时,都必须更改它。
上面使用的手动方法pdftk
不起作用的原因是您在文件中心添加了两个字节。这打破了xref
桌子。如果您手动更新所有xref
s,这将起作用,但它可能非常乏味。使用sed
或任何其他文本编辑工具都不能解决问题。 podofo
为xref
您计算。
使用sed替换任何出现
sed 's/MediaBox \[0 0 612 792*/MediaBox \[100 0 512 792]/g'<in.pdf >out.pdf
或podofobox(在podofo utils内)
无需先解压缩pdf 流(根据 pdftk 的需要)
podofobox in.pdf out.pdf media 10000 0 51200 79200
如您所见,podofobox 使用 MediaBox 值乘以 100,因为它的比例是子倍数,因此,您只需将两个零(00)添加到您可以在 MediaBox 字段中读取的值
有更好的方法来更改 PDF 的边距:
希望您在发布后找到答案:-)