7

我曾经pdftk解压缩 PDF,然后将其作为文本文件打开。
我想编辑/MediaBox字段,就我而言

/MediaBox [0 0 612 792]

例如,我想减少利润

/MediaBox [100 0 512 792]

不幸的是,它不起作用。我可以将 a 更改0为 a2或 a9但我不能举个100例子。

知道为什么吗?

4

3 回答 3

15

字符串 100 中的数字比 0 多两个数字。当您使用文本编辑器并添加字符时,这会使文件变长。这就是为什么用 9 或 2 或任何其他单个数字替换都可以正常工作的原因。虽然理论上可以使用文本编辑器来编辑 pdf,但这并不简单,您必须尊重文件的内部结构。外部参照表是一个靠近 pdf 末尾的表格,它告诉读者每个对象的确切位置。每当更改任何内容的长度或位置时,都必须更改它。

上面使用的手动方法pdftk不起作用的原因是您在文件中心添加了两个字节。这打破了xref桌子。如果您手动更新所有xrefs,这将起作用,但它可能非常乏味。使用sed或任何其他文本编辑工具都不能解决问题。 podofoxref您计算。

于 2013-02-25T17:03:36.893 回答
9

使用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 字段中读取的值

于 2012-04-06T13:27:15.800 回答
5

有更好的方法来更改 PDF 的边距:

希望您在发布后找到答案:-)

于 2012-04-06T08:29:11.783 回答