使用 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')
但是,如果您想确保程序的后续运行不会覆盖以前创建的输出文件,这会变得有点复杂。
这是我当前用于为我的 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')
但是,如果您想确保程序的后续运行不会覆盖以前创建的输出文件,这会变得有点复杂。