使用pypdf更改pdf文件的元数据
我想使用pypdf创建/修改pdf文档的标题。这个标题似乎是只读的。有没有办法访问此元数据r/w 如果答案是肯定的,一段代码将不胜感激使用pypdf更改pdf文件的元数据,pdf,metadata,pypdf,Pdf,Metadata,Pypdf,我想使用pypdf创建/修改pdf文档的标题。这个标题似乎是只读的。有没有办法访问此元数据r/w 如果答案是肯定的,一段代码将不胜感激 谢谢您可以使用pyPDF(某种类型)来操纵标题。我在reportlab用户列表中看到了这篇文章: 您也可以使用pypdf。 这不允许您编辑元数据 本身,但会让您阅读一个或多个 更多pdf文件并将其吐回 可能是新的元数据 以下是相关代码: from pyPdf import PdfFileWriter, PdfFileReader from pyPdf.gen
谢谢您可以使用pyPDF(某种类型)来操纵标题。我在reportlab用户列表中看到了这篇文章: 您也可以使用pypdf。 这不允许您编辑元数据 本身,但会让您阅读一个或多个 更多pdf文件并将其吐回 可能是新的元数据 以下是相关代码:
from pyPdf import PdfFileWriter, PdfFileReader
from pyPdf.generic import NameObject, createStringObject
OUTPUT = 'output.pdf'
INPUTS = ['test1.pdf', 'test2.pdf', 'test3.pdf']
# There is no interface through pyPDF with which to set this other then getting
# your hands dirty like so:
infoDict = output._info.getObject()
infoDict.update({
NameObject('/Title'): createStringObject(u'title'),
NameObject('/Author'): createStringObject(u'author'),
NameObject('/Subject'): createStringObject(u'subject'),
NameObject('/Creator'): createStringObject(u'a script')
})
inputs = [PdfFileReader(i) for i in INPUTS]
for input in inputs:
for page in range(input.getNumPages()):
output.addPage(input.getPage(page))
outputStream = file(OUTPUT, 'wb')
output.write(outputStream)
outputStream.close()
构造PdfileReader时,需要传递一个类似文件的对象,而不是字符串/文件名(至少是pyPdf 1.13)(它似乎已经取代了pyPdf)有一个本机方法为您执行此操作:
output.addMetadata({'/Title':'Title'})