Python FPDF如何在创建新页面时显示在2列中以及不拆分地址

2024-10-02 16:34:03 发布

您现在位置:Python中文网/ 问答频道 /正文

''' 模块应从文本文件中读取地址, 将它们分为两列,以便打印 A4自粘纸

我的代码还可以。但是,我需要它显示在两列中 以及在创建新页面时不拆分地址

地址的大小从4行到7行不等

我检查过别人的代码,但不知道如何使用 实现我的目标。任何帮助都将不胜感激。 '''

import os,sys
from fpdf import FPDF

pdf = FPDF()
pdf.add_page()
pdf.set_font('arial', '', 14)
w = 80

file = open(os.path.join(sys.path[0], 'addressbookMultiPrint.txt'))
for i, line in enumerate(file.readlines()):
    
    if i == 0:
        pdf.cell(w, 3, '', 'TLR', 1)
        
    pdf.cell(w, 7, line, 'LR', 1)
    
    if line == '\n':
        pdf.cell(w, 1, '', 'BLR', 1)
        pdf.cell(w, 3, ' ', 0, 1)
        pdf.cell(w, 3, '', 'TLR', 1)

pdf.output('single.pdf')
os.startfile('single.pdf')#,'print')

Tags: 模块path代码importifpdfos地址
1条回答
网友
1楼 · 发布于 2024-10-02 16:34:03

最好的方法是使用HTML

您需要用HTML创建一个表

  1. 导入HTMLMixin。别忘了安装FPDF2

    pip安装fpdf2

    from fpdf import FPDF, HTMLMixin

  2. 现在我们需要一个包含所有HTML代码的变量

    html = '''
    <table width="100%">
    <tr><th width="50%">Header #1</th><th width="50%">Header #2</th></tr>
    '''

如果你不想让表变宽,你可以在表中更改100%

th中,如果某些列更宽,您也可以更改50%,但总的来说必须是100%。(即使您的桌子不是100%)

  1. 您的代码包含数据
html += "<tr><td>" + name + "</td><td>" + surname + "</td></tr>"
  1. 别忘了关上桌子标签
html += "</table>"
  1. 现在,当所有HTML就绪时,将其传递给新类
class PDF(FPDF, HTMLMixin):
    pass

pdf = FPDF()
pdf.add_page()
pdf.set_font('arial', '', 14)
pdf.write_html(html)
pdf.output('single.pdf', 'F')

有关更多信息,请查看this

相关问题 更多 >