使用sed编辑PDF属性

2024-10-01 19:16:24 发布

您现在位置:Python中文网/ 问答频道 /正文

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

PDF格式对我来说有点混乱,但是我已经找到了/PageMode和{}标记以及如何正确地将它们插入到文件中。我可以手动操作,效果很好。但我一直在尝试得到一个类似的结果,而不需要手动操作,毕竟我在写一个脚本。下面是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
>>

当第五行被破坏时,我正在尝试插入第四行的图像。隐晦地说,当我在notepad++中将手动编辑的PDF(没有损坏)与sed编辑的PDF(已损坏)进行比较时,我可以发现文件之间没有任何区别。有不同的字符计数,但我找不到差异的位置

我知道pdf有一个偏移交叉引用表,但我觉得奇怪的是,手工操作不会损坏任何东西,但是使用sed执行它会导致损坏

我做错什么了?在


Tags: 文件标记图像脚本obj编辑pdftype
1条回答
网友
1楼 · 发布于 2024-10-01 19:16:24

你真的不想让赛德这么做。有些PDF可能看起来像面向行的文本文件,但它们肯定不是。在

因为您已经在使用Python,所以可以使用Python库来完成这个任务。在

从纯Python中,pdfrw可以很好地为您完成这项工作。它将在一个PDF文件中发出咯吱声,然后用您想要的任何更改重新构建它,并正确设置文件偏移量。以下代码片段应将PDF的/Root字典中的/PageMode设置为/usethrumbs:

    from pdfrw import PdfReader, PdfWriter, PdfName

    trailer = PdfReader('myfile.pdf')
    trailer.Root.PageMode = PdfName.UseThumbs
    PdfWriter().write('mynewfile.pdf', trailer)

免责声明:我是pdfrw的作者。在

相关问题 更多 >

    热门问题