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