2010-04-04 48 views

回答

8

您可以使用pyPDF(排序)操縱標題。我碰到這個職位後來在ReportLab的用戶列表:

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

您還可以使用pypdf。 http://pybrary.net/pyPdf/

這會不會讓你編輯元數據 本身,而是會讓你讀一個或多個 PDF文件(S)和吐回 出來,可能與新的元數據。

下面是相關代碼:

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() 
+0

當構建一個PdfFileReader,你需要通過一個類似文件的對象,而不是一個字符串/文件名(至少pyPdf 1.13) – 2013-11-18 16:24:40

+4

[PyPDF2](HTTP ://mstamy2.github.io/PyPDF2/)(它似乎取代了pyPDF)有一個本地方法可以爲你做到這一點:'output.addMetadata({'/ Title':'title'})'' – gellej 2014-07-01 15:49:08