PyPDF2合并文件列表中的问题

问题描述 投票:0回答:1

我试图使用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)

提前致谢。 Ĵ

python pandas pdf pdf-generation pypdf2
1个回答
0
投票

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

from PyPDF2 import PdfFileReader, PdfFileMerger

将pandas导入为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

给我父亲的帽子小费指出明显的缺陷。

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

Ĵ

© www.soinside.com 2019 - 2024. All rights reserved.