2010-04-04 2 views

Antwort

8

Sie können den Titel mit pyPDF (Art) manipulieren. Ich kam in diesem Beitrag auf dem reportlab-Benutzer Eintrag:

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

Sie auch pypdf verwenden können. http://pybrary.net/pyPdf/

Dies wird Ihnen die Metadaten per se nicht zulassen, bearbeiten, aber lassen Sie eine oder mehr pdf-Datei lesen (n) und sie ausspucken zurück, möglicherweise mit neuen Metadaten.

Hier ist der entsprechende Code:

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

Wenn ein PdfFileReader konstruieren, müssen Sie eine Datei ähnliche Objekt übergeben, keinen String/Dateiname (zumindest mit pyPdf 1.13) –

+4

[PyPDF2] (http : //mstamy2.github.io/PyPDF2/) (was anscheinend pyPDF ersetzt hat) hat eine native Methode, die das für Sie erledigt: 'output.addMetadata ({'/ Title': 'title'})' – gellej