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

使用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创建/修改pdf文档的标题。这个标题似乎是只读的。有没有办法访问此元数据r/w

如果答案是肯定的,一段代码将不胜感激


谢谢

您可以使用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'})