【问题标题】:How to crop PDF margins using pdftk and /MediaBox如何使用 pdftk 和 /MediaBox 裁剪 PDF 边距
【发布时间】:2011-07-15 12:51:55
【问题描述】:

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

/MediaBox [0 0 612 792]

我想减少边距,例如

/MediaBox [100 0 512 792]

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

知道为什么吗?

【问题讨论】:

  • 这不是编程问题,应该转移到网络的另一个站点

标签: pdf resize crop margins pdftk


【解决方案1】:

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

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

【讨论】:

  • 1-“在文件中心添加两个字节”是什么意思,外部参照表是什么? 2-那你有什么建议?
  • 我建议按照@Dingo 和 Gorb 博士的建议进行操作,即使用旨在操作 pdf 的软件或代码。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

    • 我已经尝试了最后一个,Ghostscript (9.10),但它对我不起作用。另一方面,接受答案中的 podofobox 确实有效。
    猜你喜欢
    • 1970-01-01
    • 2014-03-16
    • 2014-07-10
    • 2012-02-27
    • 1970-01-01
    • 1970-01-01
    • 2019-09-03
    • 2013-08-10
    • 2012-01-25
    相关资源
    最近更新 更多