使用 PDF 创建多个 PDF 文件?

Create multiple PDF files with PFDF?

这是我当前用于为我的 CSV 文件中的每一行创建一个 PDF 文件的代码的基本结构。所以如果有 10 行,我期望输出 10 个 PDF。我得到的是一个包含所有行的 PDF,它创建了一个大文件。

with open('new1.csv', 'r', newline='') as x:
    data_reader = csv.DictReader(x, delimiter=',', quotechar='"')
    for x in data_reader:
        record = x['Test ID']
        record_str = 'Test ID: ' + record
        name = x['Name']
        name_1 = 'Name: ' + name
        pdf.cell(effective_page_width / 5.0, 0.0, record_str)
        pdf.cell(effective_page_width / 5.0, 0.0, name_1)

        More variables like the ones above

        pdf.output('Test.pdf', 'F')

因此,我的问题是: 1) 如何打印多个 PDF? 2) 如何使每个 PDF 具有唯一的文件名?

这里的问题是你使用了相同的文件名,这就是为什么你只有一个输出。

你应该试试:

with open('new1.csv', 'r', newline='') as x:
    data_reader = csv.DictReader(x, delimiter=',', quotechar='"')
    index=0
    for x in data_reader:
        # Reset your pdf variable
        pdf=FPDF()
        ...
        filename='Test'+str(index)+'.pdf'
        pdf.output(filename,'F')
        index+=1

好吧,关于 1) 您将所有行添加到同一个 pdf 对象 - 为每一行创建新对象,即。在循环内。关于 2),有必要澄清一下 - "unique" 是什么意思?您生成的每个 PDF 都有不同的名称?这很简单,只需替换:

for x in data_reader:

与:

for i, x in enumerate(data_reader):

然后,因为我包含行号,所以动态创建文件名如下:

pdf.output('Test{}.pdf'.format(i), 'F')

但是,如果您想确保程序的后续运行不会覆盖以前创建的输出文件,这会变得有点复杂。