使用sed编辑PDF属性

use*_*567 5 python pdf sed notepad++ blender

我正在尝试为blender开发一个python脚本,以将渲染的图像序列输出到PDF.我正在使用Imagemagick转换为PDF,该部分工作正常,但是,我希望缩略图预览也包含在PDF中.

PDF格式对我来说有点混乱,但我找到了/PageMode/UseThumbs标签以及如何将它们正确地插入到文件中.我可以手动完成这项工作,效果非常好.但是我一直试图获得类似的结果,而不需要手动完成,毕竟我正在写一个脚本.以下是PDF中标题数据的示例摘录,其中添加了标记:

%PDF-1.3 
1 0 obj
<<
/Pages 2 0 R
/PageMode
/UseThumbs
/Type /Catalog
>>
endobj
2 0 obj
<<
/Type /Pages
/Kids [ 3 0 R 17 0 R 31 0 R ]
/Count 3
>>
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用sed在第4行和第5行根据需要插入标签,这也有效,但是当我打开PDF时,图像已损坏.加密地,当我将手动编辑的PDF(未损坏的PDF)与记事本++中的sed编辑的PDF(已损坏的)进行比较时,我可以找到的文件没有区别.有一个不同的字符数,但我找不到差异的位置

我知道PDF有一个偏移的交叉引用表,但我觉得手工做它不会破坏任何东西似乎很奇怪,但用sed做它会造成腐败

我究竟做错了什么?

Pat*_*pin 2

您确实不想从 sed 执行此操作。有些 PDF 可能看起来像面向行的文本文件,但它们肯定不是。

由于您已经在使用 Python,因此可以使用 Python 库来完成此任务。

pdfrw会在纯 Python 中为你做这件事。它将吞入 PDF 文件,并使用您想要的任何更改来重建它,并正确设置文件偏移量。以下代码片段应将 PDF 的 /Root 字典中的 /PageMode 设置为 /UseThumbs:

    从 pdfrw 导入 PdfReader、PdfWriter、PdfName

    拖车 = PdfReader('myfile.pdf')
    Trailer.Root.PageMode = PdfName.UseThumbs
    PdfWriter().write('mynewfile.pdf', 预告片)

免责声明:我是 pdfrw 作者。