首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >循环使用FPDF填充PDF。

循环使用FPDF填充PDF。
EN

Stack Overflow用户
提问于 2022-10-26 18:07:13
回答 1查看 44关注 0票数 -1

我在python中生成了一个与我从教程中获取的类似的报告。

如果手动输入每个图像的路径,则此页面很容易设置,如下所示:

代码语言:javascript
运行
复制
     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文件,上述代码将无法工作。

我开始按下面的方式编写函数,但需要帮助完成后面的部分。

代码语言:javascript
运行
复制
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页面上的下一个位置,其格式在上面的图像中?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-26 21:48:38

你可以尝试这样的方法:

代码语言:javascript
运行
复制
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年收到了最后一次提交)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74212332

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档