เปลี่ยนข้อมูลเมตาของไฟล์ pdf ด้วย pypdf

ฉันต้องการสร้าง/แก้ไขชื่อเรื่องของเอกสาร PDF โดยใช้ pypdf ดูเหมือนว่าชื่อเป็นแบบอ่านอย่างเดียว มีวิธีเข้าถึงข้อมูลเมตานี้หรือไม่?

หากตอบในเชิงบวก จะมีการชื่นชมโค้ดบางส่วน

ขอบคุณ


person Baudouin Tamines    schedule 04.04.2010    source แหล่งที่มา


คำตอบ (1)


คุณสามารถจัดการชื่อด้วย pyPDF (ประเภท) ฉันเจอโพสต์นี้ในรายชื่อผู้ใช้ Reportlab:

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

คุณยังสามารถใช้ pypdf http://pybrary.net/pyPdf/

การดำเนินการนี้จะไม่อนุญาตให้คุณแก้ไขข้อมูลเมตาทีละไฟล์ แต่จะช่วยให้คุณสามารถอ่านไฟล์ pdf อย่างน้อย 1 ไฟล์แล้วแยกกลับออกมา อาจมีข้อมูลเมตาใหม่

นี่คือรหัสที่เกี่ยวข้อง:

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()
person Mark Lavin    schedule 15.07.2010
comment
เมื่อสร้าง PdfFileReader คุณจะต้องส่งวัตถุที่มีลักษณะคล้ายไฟล์ ไม่ใช่สตริง/ชื่อไฟล์ (อย่างน้อยก็ด้วย pyPdf 1.13) - person Joe Germuska; 18.11.2013
comment
PyPDF2 (ซึ่งดูเหมือนว่าจะแทนที่ pyPDF) มีวิธีการดั้งเดิมที่ทำสิ่งนี้เพื่อคุณ: output.addMetadata({'/Title': 'title'}) - person gellej; 01.07.2014