如何使用pdftk和/ MediaBox裁剪PDF边距

时间:2011-03-15 05:24:18

标签: pdf resize crop margins pdftk

我使用pdftk解压缩PDF,然后将其作为文本文件打开 我想编辑 / MediaBox 字段,这在我的情况下是

/MediaBox [0 0 612 792]

我想减少边距,例如

/MediaBox [100 0 512 792]

不幸的是它不起作用。我可以将0更改为29但我不能将100更改为。

知道为什么吗?

3 个答案:

答案 0 :(得分:14)

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

上面使用pdftk的手动方法不起作用的原因是您在文件的中心添加了两个字节。这打破了xref表。如果您手动更新所有xref,这将有效,但这可能非常繁琐。使用sed或任何其他文本编辑工具无法解决问题。 podofo为您执行xref计算。

答案 1 :(得分: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中读取的值字段

答案 2 :(得分:5)

有更好的方法可以更改PDF的边距:

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