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

Bau*_*nes 10 pdf metadata pypdf

我想使用pypdf创建/修改pdf文档的标题.似乎标题是只读的.有没有办法访问此元数据r/w?

如果回答是肯定的,那么一段代码将不胜感激.

谢谢

Mar*_*vin 9

您可以使用pyPDF操作标题(排序).我在reportlab-users列表中看到了这篇文章:

http://two.pairlist.net/pipermail/reportlab-users/2009-November/009033.html

你也可以使用pypdf. http://pybrary.net/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()
Run Code Online (Sandbox Code Playgroud)

  • [PyPDF2](http://mstamy2.github.io/PyPDF2/)(似乎已经替换了pyPDF)有一个本机方法可以为你做这个:`output.addMetadata({'/ Title':'title'} )` (5认同)