我在python中生成了一个与我从这教程中获取的类似的报告。
如果手动输入每个图像的路径,则此页面很容易设置,如下所示:
pdf.add_page()
pdf.image("/Users/Foo/Graph1.png", 5, 20, WIDTH/2-10)
pdf.image("/Users/Foo/Graph2.png", WIDTH/2, 20, WIDTH/2-10)
pdf.image("/Users/Foo/Graph3.png", 5, 110, WIDTH/2-10)
pdf.image("/Users/Foo/Graph4.png", WIDTH/2, 110, WIDTH/2-10)
pdf.image("/Users/Foo/Graph5.png", 5, 200, WIDTH/2-10)
pdf.image("/Users/Foo/Graph6.png", WIDTH/2, 200, WIDTH/2-10)
如果目录中不总是有相同数量的png文件,上述代码将无法工作。
我开始按下面的方式编写函数,但需要帮助完成后面的部分。
def addtopage(function):
for f in os.listdir('path'):
if f.endswith('png') in f:
#add it to the next position in the pdf
我的问题是,如何创建一个for循环,该循环将自动遍历文件夹,抓取文件夹中的每个.png,并将它们放在pdf页面上的下一个位置,其格式在上面的图像中?
谢谢!
发布于 2022-10-26 21:48:38
你可以尝试这样的方法:
def addtopage(function):
png_count = 0
start_y = 20
img_ht = 90
for f in os.listdir('path'):
if f.endswith('png') in f:
if png_count%2 == 0
pdf.image(f, 5, start_y, WIDTH/2-10)
else:
pdf.image(f, WIDTH/2-10, start_y, WIDTH/2-10)
start_y += img_ht
png_count += 1
if png_count%6 == 0:
pdf.add_page()
您仍然可以改进这段代码,并有更多的变量来允许更多的灵活性,但是这应该会为同样的代码提供一个很好的样板。此外,如果您使用ppyfpdf,我建议您查看一下fpdf2。它是PyFPDF本身的一个分支,并且正在积极维护(PyFPDF在2018年收到了最后一次提交)。
https://stackoverflow.com/questions/74212332
复制相似问题