2010-04-04 25 views
10

Me gustaría crear/modificar el título de un documento PDF utilizando pypdf. Parece que el título es de solo lectura. ¿Hay alguna manera de acceder a esta metadata r/w?Cambio metadatos del archivo pdf con pypdf

Si la respuesta positiva, una pieza de código sería apreciada.

Gracias

Respuesta

8

Puede manipular el título con pyPDF (más o menos). Me encontré con este post en el listado de usuarios ReportLab:

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

También puede utilizar pypdf. http://pybrary.net/pyPdf/

Esto no le permitirá editar los metadatos per se, pero le permitirá leer uno o más archivo PDF (s) y escupir de vuelta a cabo, posiblemente con nuevos metadatos.

Aquí está el código correspondiente:

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

Cuando se construye un PdfFileReader, tiene que pasar un objeto de tipo fichero, no es una cadena/nombre de archivo (por lo menos con pyPdf 1,13) –

+4

[PyPDF2] (http : //mstamy2.github.io/PyPDF2/) (que parece tener pyPDF sustituido) tiene un método nativo que lo hace por usted: 'output.addMetadata ({ '/ título': 'título'})' – gellej

Cuestiones relacionadas