【问题标题】:PyPDF2 merging issue from file listPyPDF2合并文件列表中的问题
【发布时间】:2018-06-09 16:22:54
【问题描述】:

尝试使用 pandas 和 PyPDF2 合并几个 PDF 文件时,我得到了一些奇怪的输出文件。

我有一个单页 PDF(证书),我需要与一个所有人都通用的两页文档合并。然后为原始文件中命名的人命名生成的输出文件。因为有一个合理的数字,我想自动化它

我不流利地使用python,我有点跌跌撞撞,但我不知道为什么一些输出文件有> 3500页而其他只有几个,为什么没有一个是正确的。

一次运行一个数字它可以工作,但当我尝试循环所有记录时却不行 . 我真的很欢迎一些帮助,我假设它是我看不到的明显的东西。

我的代码如下:

from PyPDF2 import PdfFileReader, PdfFileMerger
import pandas as pd

def create_pdf(x):
    file2 = outs[x]
    file1 = certs[x]
    input1 = open(path + file1, "rb")
    input2 = open(path + 'insert.pdf', "rb")

    output = open(path2 + file2, "wb")
    merger.append(fileobj=input1, pages=(0, 1), import_bookmarks=False)
    merger.append(input2)
    merger.write(output)
    output.close()
    return

df = pd.read_csv('Affiliate Data.csv', encoding='latin1', na_values=['nan'], keep_default_na=False)

path = 'D:\\input_file Location\\'
path2 = 'D:\\Output_file_Location\\'
merger = PdfFileMerger()
pdf_files = []
certs = df['infile'].tolist()
outs= df['outfile'].tolist()
x=0

while x < 605 :
    create_pdf(x)

提前致谢。 J

【问题讨论】:

    标签: python pandas pdf pdf-generation pypdf2


    【解决方案1】:

    好吧,很明显我没有关闭文件。

    from PyPDF2 import PdfFileReader, PdfFileMerger
    

    将熊猫导入为 pd

    def create_pdf(x):
        file2 = outs[x]
        file1 = certs[x]
        input1 = open(path + file1, "rb")
        input2 = open(path + 'insert.pdf', "rb")
    
        output = open(path2 + file2, "wb")
        merger.append(fileobj=input1, pages=(0, 1), import_bookmarks=False)
        merger.append(input2)
        merger.write(output)
        output.close()
        # *****Solution close the input files******
        input1.close()
        input2.close()
    
        return
    
    df = pd.read_csv('Affiliate Data.csv', encoding='latin1', na_values=['nan'], keep_default_na=False)
    
    path = 'D:\\input_file Location\\'
    path2 = 'D:\\Output_file_Location\\'
    merger = PdfFileMerger()
    pdf_files = []
    certs = df['infile'].tolist()
    outs= df['outfile'].tolist()
    x=0
    
    while x < 605 :
        create_pdf(x)
        # *****Solution close and reopen the file merger******
        merger.close()
        merger = PdfFileMerger()
    
        x=x+1
    

    感谢我父亲指出了明显的缺陷。

    我并不期待手动完成所有这些操作。

    J

    【讨论】:

      猜你喜欢
      • 2020-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-01
      相关资源
      最近更新 更多