这将是我在 Stackoverflow 上的第一篇文章。我有一个关于 python 的 FPDF 包的问题。创建一个定义页眉和页脚的类,效果很好。但是,当我尝试通过init初始化某些变量时,页眉和页脚将停止显示。我用谷歌搜索了所有内容,但无法弄清楚。有谁知道如何解决这个问题?
包括初始化的代码
import fpdf as FPDF
import pandas as pd
import lipsum
from datetime import date
import locale
db=pd.DataFrame({'Fontsize':[5,6,7,8,9,10,11,12,14,17,20,25],'Baselineskip':[6,7,8,9.5,11,12,13.6,14.5,18,22,25,30]})
class PDF(FPDF.FPDF):
def __init__(self,fontsize):
FPDF.FPDF.__init__(self,orientation='P',unit='mm',format='A4')
self.set_font('Arial','',fontsize)
self.fontsize=fontsize
self.baseskip=db[db['Fontsize']==self.fontsize].iloc[0,1]
def header(self):
# Logo
# x=110.9, y=16.1
self.image(name='logo.png', x=110.6, y=15.9, w=72.9)
# Arial bold 15
self.set_font('Arial', '', 15)
#textcolor Arcadis orange
self.set_text_color(r=228,g=97,b=15)
# Title
self.text(self.l_margin, 16.1+7.7, txt='bla')
# Page footer
def footer(self):
# Position at 1.5 cm from bottom
self.set_y(-15)
# Arial italic 8
self.set_font('Arial', …Run Code Online (Sandbox Code Playgroud) 我无法使用PyFPDF输出 HTML 消息。当我尝试将HTML 写入 PDF 文档时,出现错误:
Traceback (most recent call last):
File "/Users/elcid/Projects/so_test/test.py", line 8, in <module>
pdf.write_html("<b>Sample HTML</b>")
File "/Users/elcid/.pyenv/versions/so/lib/python3.9/site-packages/fpdf/html.py", line 400, in write_html
text = h2p.unescape(text) # To deal with HTML entities
AttributeError: 'HTML2FPDF' object has no attribute 'unescape'
Run Code Online (Sandbox Code Playgroud)
违规代码:
from fpdf import FPDF, HTMLMixin
class PDF(FPDF, HTMLMixin):
pass
pdf = PDF()
pdf.add_page()
pdf.write_html("<b>Sample HTML</b>")
pdf.output("html.pdf")
Run Code Online (Sandbox Code Playgroud)
我正在使用Python 3.9。有什么见解吗?谢谢你!
我正在尝试使用 FPDF 库创建一个表格,当文本非常大时,该表格能够扩展单元格的高度。
我将展示我拥有的代码,该代码与官方文档页面上显示的代码相同:
from fpdf import FPDF
data = (
("First name", "Last name", "Age", "City"),
("Jules", "Smith", "34", "San Juan"),
("Mary", "Ramos", "45", "Orlando"),
("Carlson", "Banks", "19", "Los Angeles"),
("Lucas", "Cimon", "31", "Saint-Mahturin-sur-Loire udfhisudhf fughdiufhg fduihgsdiufg dfghsdifugh fdiguhdsfiug fdughdifugh dfhgsdiufhg"),
)
pdf = FPDF()
pdf.add_page()
pdf.set_font("Times", size=10)
line_height = pdf.font_size * 2.5
col_width = pdf.epw / 4
for row in data:
for datum in row:
pdf.multi_cell(col_width, line_height, datum, border=1, ln=3)
pdf.ln(line_height)
pdf.output('table_with_cells.pdf')
Run Code Online (Sandbox Code Playgroud)
这是结果:
最后一行的最后一列更高,因为它有更多内容,这很好,但我希望该行中所有列的高度动态相同。像这样的事情:
我怎么才能得到它?
注意:表中的数据来自数据库,所以我无法确切知道每个字符串的长度
当我运行下面的代码时,我得到以下回溯:
\nTraceback (most recent call last):\n File "C:\\demo\\test.py", line 11, in <module>\n pdf.output("splintered.pdf")\n File "C:\\demo\\lib\\site-packages\\fpdf\\fpdf.py", line 1065, in output\n self.close()\n File "C:\\demo\\lib\\site-packages\\fpdf\\fpdf.py", line 246, in close\n self._enddoc()\n File "C:\\demo\\lib\\site-packages\\fpdf\\fpdf.py", line 1636, in _enddoc\n self._putpages()\n File "C:\\demo\\lib\\site-packages\\fpdf\\fpdf.py", line 1170, in _putpages\n p = self.pages[n].encode("latin1") if PY3K else self.pages[n]\nUnicodeEncodeError: \'latin-1\' codec can\'t encode character \'\\u2019\' in position 74: ordinal not in range(256)\nRun Code Online (Sandbox Code Playgroud)\n我该如何解决?是因为我选择了 Arial 作为字体吗?我想做的就是将 txt 转换为 pdf 文件,因此如果有任何更简单的方法可以在 Python 中执行此操作,我将不胜感激。
\nimport fpdf\npdf = fpdf.FPDF(format=\'letter\')\n\ntxt = \'bees and butterflies. …Run Code Online (Sandbox Code Playgroud)