首页 > 解决方案 > 如何使用reportlab 的canvas.grid 有效地为我的每条消息创建一个框?

问题描述

我想创建一个与列表中的消息数量相对应的网格。

我目前正在使用reportlab 库来执行此操作,因为我希望能够将其编写为pdf 并将其打印出来以供我在列表中的“笔记”使用。

我现在所拥有的基本上是硬编码的,如果我想在其中添加更多注释,我认为它不够有效。

from reportlab.pdfgen import canvas
from reportlab.lib.units import inch
from reportlab.lib import colors

class Message:

    def __init__(self):
        self.path = "pdf_file/test.pdf"
        self.list = ['message1','message2','message3','message4','message5','message6','message7',
                    'message8','message9','message10','message11','message12']

    def create_grid(self, canvas):
            from reportlab.lib.units import inch
            from reportlab.lib.colors import pink, black, red, blue, green
            c = canvas
            c.setStrokeColor(black)
            # canvas.grid(xlist,list)
            c.grid([0.4*inch, 2.9*inch, 5.4*inch, 7.9*inch], [0.2*inch, 2.7*inch, 5.2*inch, 7.7*inch, 10.2*inch])

    def create_pdf(self):

            from reportlab.pdfgen import canvas
            c = canvas.Canvas("pdf_file/test.pdf")
            self.create_grid(c)
            c.showPage()
            c.save()


if __name__ == '__main__':

    Message().create_pdf()
        

当我运行它时,我能够得到这样的东西:

网格

有没有更可靠和更快的方法,我可以遍历我的消息列表并相应地创建一个网格?

标签: pythonreportlab

解决方案


推荐阅读