使用pypdf2更改pdf文件的元数据

问题描述 投票:1回答:3

我想将元数据键值对添加到pdf文件的元数据中。

我找到了几年的答案,但我认为这是复杂的方法。我想今天有一种更简单的方法:https://stackoverflow.com/a/3257340/633961

我没有和pypdf2结婚,如果有更简单的方法,那我就这样走吧?

python pdf pypdf2 pdf-manipulation
3个回答
3
投票

你可以使用pdfrw做到这一点

pip install pdfrw

然后跑

from pdfrw import PdfReader, PdfWriter   
trailer = PdfReader("myfile.pdf")    
trailer.Info.WhoAmI = "Tarun Lalwani"    
PdfWriter("edited.pdf", trailer=trailer).write()

然后检查PDF自定义属性

EditedProperties


9
投票

当问题明确要求PyPDF2时,我很惊讶地发现没有PyPDF2的代码示例,所以这里是:

from PyPDF2 import PdfFileReader, PdfFileWriter

fin = open('source.pdf', 'rb')
reader = PdfFileReader(fin)
writer = PdfFileWriter()

writer.appendPagesFromReader(reader)
metadata = reader.getDocumentInfo()
writer.addMetadata(metadata)

# Write your custom metadata here:
writer.addMetadata({
    '/Some': 'Example'
})

fout = open('result.pdf', 'wb')
writer.write(fout)

fin.close()
fout.close()

2
投票

基于Cyril N.所说的,代码工作正常,但它创建了很多“垃圾”文件,因为现在你有原始文件和带元数据的文件。

我稍微更改了代码,因为我每天会在数百个文件上运行它,并且不想处理额外的清理:

from PyPDF2 import PdfFileReader, PdfFileWriter

fin = open('your_original.pdf', 'rb')
reader = PdfFileReader(fin)
writer = PdfFileWriter()

writer.appendPagesFromReader(reader)
metadata = reader.getDocumentInfo()
writer.addMetadata(metadata)

# Write your custom metadata here:
writer.addMetadata({
    '/Title': 'this'
})

fout = open('your_original.pdf', 'ab') #ab is append binary; if you do wb, the file will append blank pages
writer.write(fout)

fin.close()
fout.close()

如果你想将它作为一个新文件,只需在fout中使用不同的pdf名称并保留ab。如果使用wb,则会追加与原始文件相同的空白页。

© www.soinside.com 2019 - 2024. All rights reserved.