Объединение сгенерированного PDF-файла с помощью PyPDF - PullRequest
0 голосов
/ 27 мая 2020

в настоящее время работает над сценарием, который автоматически заполняет заполняемый файл pdf. Текущая проблема заключается в том, что прямо сейчас все сгенерированные сценарии хранятся в нескольких файлах PDF, и что я хотел сделать, это объединить их в один файл PDF . Это текущий сценарий, который сгенерировал несколько файлов:

from PyPDF2 import PdfFileWriter, PdfFileReader, PdfFileMerger
from PyPDF2.generic import BooleanObject, NameObject, IndirectObject

def set_need_appearances_writer(writer: PdfFileWriter):
    try:
        catalog = writer._root_object
        # get the AcroForm tree
        if "/AcroForm" not in catalog:
            writer._root_object.update({
                NameObject("/AcroForm"): IndirectObject(len(writer._objects), 0, writer)})

        need_appearances = NameObject("/NeedAppearances")
        writer._root_object["/AcroForm"][need_appearances] = BooleanObject(True)
        return writer

    except Exception as e:
        print('set_need_appearances_writer() catch : ', repr(e))
        return writer


for key in final10.keys():
    infile = "new4-Copy.pdf"
    pdf = PdfFileReader(open(infile, "rb"), strict=False)
    if "/AcroForm" in pdf.trailer["/Root"]:
        pdf.trailer["/Root"]["/AcroForm"].update(
            {NameObject("/NeedAppearances"): BooleanObject(True)})

    pdf2 = PdfFileWriter()
    set_need_appearances_writer(pdf2)
    if "/AcroForm" in pdf2._root_object:
        pdf2._root_object["/AcroForm"].update(
            {NameObject("/NeedAppearances"): BooleanObject(True)})

    field_dictionary = final10[key]
    pdf2.addPage(pdf.getPage(0))
    pdf2.updatePageFormFieldValues(pdf2.getPage(0), field_dictionary)

    outfile = '{}.pdf'.format(final10[key]['courier_id'])
    a.append(outfile)

Примечание: final10 - это фрейм данных, содержащий строки данных, которые будут заполнены в формах pdf

...