使用PyPDF合并生成的PDF

时间:2020-05-27 12:18:34

标签: python pypdf2

当前正在处理一个脚本,该脚本会自动填充可填充的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表单上填充的数据行

0 个答案:

没有答案