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

Roc*_*nce 7 pdf resize crop margins pdftk

我曾经pdftk解压PDF,然后将其作为文本文件打开.
我想编辑/ MediaBox字段,这是我的情况

/MediaBox [0 0 612 792]
Run Code Online (Sandbox Code Playgroud)

例如,我想减少利润

/MediaBox [100 0 512 792]
Run Code Online (Sandbox Code Playgroud)

不幸的是它不起作用.我可以0改成一个2或一个,9但我不能举个100例子.

知道为什么吗?

Jam*_*all 14

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

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


Din*_*ngo 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字段中读取的值


Mic*_*oon 5

有更好的方法来改变PDF的边缘:

希望你找到答案,因为张贴:-)