Python FPDF如何在创建新页面时分2列显示并且不拆分地址
Python FPDF How to display in 2 columns and to not split addresses when a new page is created
'''
该模块应该从文本文件中读取地址,
将它们分成两列以供打印
A4不干胶纸。
我的代码没问题。但是,我需要它显示在 2 列中
并且在创建新页面时不拆分地址。
地址的大小从 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')
最好的方法是使用HTML.
您需要在 HTML 中创建一个 table。
导入HTMLMixin。不要忘记安装 FPDF2
pip 安装 fpdf2
from fpdf import FPDF, HTMLMixin
现在我们需要所有 HTML 代码的变量
html = '''
<table width="100%">
<tr><th width="50%">Header #1</th><th width="50%">Header #2</th></tr>
'''
如果你不想让它变得这么宽,你可以在 table 中更改 100%。
在 th 中,如果某些列应该更宽,您也可以更改 50%,但总计必须为 100%。 (即使你的 table 不是 100%)
- 你的代码和数据
html += "<tr><td>" + name + "</td><td>" + surname + "</td></tr>"
- 别忘了关闭 table 标签
html += "</table>"
- 现在,当所有HTML准备就绪后,将其传递给新的class
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
''' 该模块应该从文本文件中读取地址, 将它们分成两列以供打印 A4不干胶纸。
我的代码没问题。但是,我需要它显示在 2 列中 并且在创建新页面时不拆分地址。
地址的大小从 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')
最好的方法是使用HTML.
您需要在 HTML 中创建一个 table。
导入HTMLMixin。不要忘记安装 FPDF2
pip 安装 fpdf2
from fpdf import FPDF, HTMLMixin
现在我们需要所有 HTML 代码的变量
html = '''
<table width="100%">
<tr><th width="50%">Header #1</th><th width="50%">Header #2</th></tr>
'''
如果你不想让它变得这么宽,你可以在 table 中更改 100%。
在 th 中,如果某些列应该更宽,您也可以更改 50%,但总计必须为 100%。 (即使你的 table 不是 100%)
- 你的代码和数据
html += "<tr><td>" + name + "</td><td>" + surname + "</td></tr>"
- 别忘了关闭 table 标签
html += "</table>"
- 现在,当所有HTML准备就绪后,将其传递给新的class
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