Python 如何从不同文档中的信息在Reportlab中生成pdf?
请任何人谁知道,帮助我了解这个代码可以如何工作,以产生所需的页面Python 如何从不同文档中的信息在Reportlab中生成pdf?,python,reportlab,Python,Reportlab,请任何人谁知道,帮助我了解这个代码可以如何工作,以产生所需的页面 c = canvas.Canvas("sample.pdf") sample1 = csv.reader(open('sample1.csv')) for i in sample1: first = i[0] c.drawString(100,800,first) sample2 = csv.reader(open('sample2.csv')) for x in sample2:
c = canvas.Canvas("sample.pdf")
sample1 = csv.reader(open('sample1.csv'))
for i in sample1:
first = i[0]
c.drawString(100,800,first)
sample2 = csv.reader(open('sample2.csv'))
for x in sample2:
sec = x[0]
third = x[1]
fourth = x[2]
c.drawString(200,700,sec)
c.drawString(200,600,third)
c.drawString(200,500,fourth)
c.showPage()
c.save()
实际上,它只成功地打印了sample2中的文档和sample1中的一页项目。。。。
我正试图从两个文档中提取信息,用于生成一个pdf。我不知道我是否理解这个问题,但我会在不嵌套循环的情况下这样做 假设样本1中有三行
X
,Y
,Z
,样本2中有三行ABC
,DEF
,GHI
from reportlab.pdfgen import canvas
import csv
c = canvas.Canvas("sample.pdf")
#sample1 = csv.reader(open('sample1.csv'))
#sample2 = csv.reader(open('sample2.csv'))
sample1 = ["X", "Y", "Z"]
sample2 = ["ABC", "DEF", "GHI"]
for a in sample1:
c.drawString(100, 800, a[0]) # X / Y / Z
c.showPage()
for b in sample2:
c.drawString(200, 700, b[0]) # A / D / G
c.drawString(200, 600, b[1]) # B / E / H
c.drawString(200, 500, b[2]) # C / F / I
c.showPage()
c.save()
它创建了三个页面X
,Y
,Z
,以及接下来的三个页面ABC
,DEF
,GHI
from reportlab.pdfgen import canvas
import csv
c = canvas.Canvas("sample.pdf")
#sample1 = csv.reader(open('sample1.csv'))
#sample2 = csv.reader(open('sample2.csv'))
sample1 = ["X", "Y", "Z"]
sample2 = ["ABC", "DEF", "GHI"]
for a in sample1:
c.drawString(100, 800, a[0]) # X / Y / Z
c.showPage()
for b in sample2:
c.drawString(200, 700, b[0]) # A / D / G
c.drawString(200, 600, b[1]) # B / E / H
c.drawString(200, 500, b[2]) # C / F / I
c.showPage()
c.save()
但是如果您只想创建三个页面X+ABC
,Y+DEF
,Z+GHI
,那么您需要zip()
顺便说一句:如果你需要九页
,X+ABC
,X+DEF
X+GHI
,Y+ABC
,Y+DEF
Y+GHI
,Z+ABC
,Z+DEF
Z+GHI
抽绳(a[0])
和showPage()
移动到第二个循环中
from reportlab.pdfgen import canvas
import csv
c = canvas.Canvas("sample.pdf")
#sample1 = csv.reader(open('sample1.csv'))
sample1 = ["X", "Y", "Z"]
for a in sample1:
#sample2 = csv.reader(open('sample2.csv'))
sample2 = ["ABC", "DEF", "GHI"]
for b in sample2:
c.drawString(100, 800, a[0])
c.drawString(200, 700, b[0])
c.drawString(200, 600, b[1])
c.drawString(200, 500, b[2])
c.showPage()
c.save()
我不知道我是否理解这个问题,但我会在不嵌套循环的情况下这样做 假设样本1中有三行
X
,Y
,Z
,样本2中有三行ABC
,DEF
,GHI
from reportlab.pdfgen import canvas
import csv
c = canvas.Canvas("sample.pdf")
#sample1 = csv.reader(open('sample1.csv'))
#sample2 = csv.reader(open('sample2.csv'))
sample1 = ["X", "Y", "Z"]
sample2 = ["ABC", "DEF", "GHI"]
for a in sample1:
c.drawString(100, 800, a[0]) # X / Y / Z
c.showPage()
for b in sample2:
c.drawString(200, 700, b[0]) # A / D / G
c.drawString(200, 600, b[1]) # B / E / H
c.drawString(200, 500, b[2]) # C / F / I
c.showPage()
c.save()
它创建了三个页面X
,Y
,Z
,以及接下来的三个页面ABC
,DEF
,GHI
from reportlab.pdfgen import canvas
import csv
c = canvas.Canvas("sample.pdf")
#sample1 = csv.reader(open('sample1.csv'))
#sample2 = csv.reader(open('sample2.csv'))
sample1 = ["X", "Y", "Z"]
sample2 = ["ABC", "DEF", "GHI"]
for a in sample1:
c.drawString(100, 800, a[0]) # X / Y / Z
c.showPage()
for b in sample2:
c.drawString(200, 700, b[0]) # A / D / G
c.drawString(200, 600, b[1]) # B / E / H
c.drawString(200, 500, b[2]) # C / F / I
c.showPage()
c.save()
但是如果您只想创建三个页面X+ABC
,Y+DEF
,Z+GHI
,那么您需要zip()
顺便说一句:如果你需要九页
,X+ABC
,X+DEF
X+GHI
,Y+ABC
,Y+DEF
Y+GHI
,Z+ABC
,Z+DEF
Z+GHI
抽绳(a[0])
和showPage()
移动到第二个循环中
from reportlab.pdfgen import canvas
import csv
c = canvas.Canvas("sample.pdf")
#sample1 = csv.reader(open('sample1.csv'))
sample1 = ["X", "Y", "Z"]
for a in sample1:
#sample2 = csv.reader(open('sample2.csv'))
sample2 = ["ABC", "DEF", "GHI"]
for b in sample2:
c.drawString(100, 800, a[0])
c.drawString(200, 700, b[0])
c.drawString(200, 600, b[1])
c.drawString(200, 500, b[2])
c.showPage()
c.save()
为什么要为-循环嵌套
?我认为这是它可以工作的方式,但事实并非如此。我别无选择。你期望有多少页?@furas。五页,因为两个文档中每一个都有5行,所以您需要使用zip()
-查看我的答案。为什么要为-循环嵌套。我别无选择。你期望有多少页?@furas。五页,因为两个文档中各有5行,所以您需要使用zip()
的版本-请参阅我的答案。