如何使用pyfpdf构建单元格内具有多个字符串长度的结构化表?

时间:2019-07-30 14:48:50

标签: python-3.x pdf pyfpdf

我正在使用pyfpdf基于JSON对象生成多个pdfs文件。在此pdf上,我想构建一个具有3列和几行的表格。但是,由于某些字符串太长并显示在单元格边界之外,因此我无法正确格式化表格。

我尝试使用pdf.cell()和pdf.multi_cell()方法构建表。但是这些方法都不适合我(不同的问题)。

pdf.cell()方法:

pdf.cell(10, 8, 'id', 1, 0, 'C')
pdf.cell(80, 8, 'Description', 1, 0, 'C')
pdf.cell(80, 8, 'Criteria', 1, 0, 'C')
pdf.cell(0, 8, 'Result', 1, 2, 'C')
pdf.cell(-170)
pdf.set_font('arial', '', 6)
i = 1
for test in tests:
    pdf.cell(10, 10, str(i), 1, 0, 'C')
    pdf.cell(80, 10, info[i-1]['Test'], 1, 0, 'C')
    pdf.cell(80, 10, info[i-1]['Criteria'], 1, 0, 'C')
    pdf.cell(0, 10, test, 1, 2, 'C')
    pdf.cell(-170)
    i = i + 1

输出:

Cell_approach

pdf.multi_cell()方法:

pdf.cell(10, 8, 'id', 1, 0, 'C')
pdf.cell(80, 8, 'Description', 1, 0, 'C')
pdf.cell(80, 8, 'Criteria', 1, 0, 'C')
pdf.cell(0, 8, 'Result', 1, 2, 'C')
pdf.cell(-170)
pdf.set_font('arial', '', 6)
i = 1
for test in tests:
    pdf.cell(10, 10, str(i), 1, 0, 'C')
    pdf.multi_cell(80, 5, info[i-1]['Test'], 1, 0, 'C')
    pdf.multi_cell(80, 5, info[i-1]['Criteria'], 1, 0, 'C')
    pdf.multi_cell(0, 10, test, 1, 2, 'C')
    pdf.cell(-170)
    i = i + 1

输出: multi_cell approach

从上图中可以看出,我的不同方法存在不同的问题。有人可以帮我正确地建立这张桌子吗? 我的意思是,“说明”和“条件”列的长度是可变的,因此我无法对固定宽度或字体进行硬编码,因为在某些情况下它不能工作。谢谢您的关注。

0 个答案:

没有答案