下面是Python3转换html到pdf的不同解决方案的完整攻略。
1. 使用weasyprint库进行转换
1.1 安装weasyprint
首先,我们需要安装weasyprint库。可以通过pip命令进行安装:
pip install weasyprint
1.2 简单示例
接下来,我们可以用weasyprint来将一个html文件转换为pdf文件:
from weasyprint import HTML
HTML('example.html').write_pdf('example.pdf')
1.3 更多示例
除了基本转换外,weasyprint还支持更多的功能,比如添加页码、调整字体等。下面是一个添加页码的示例:
from weasyprint import HTML
html = HTML('example.html')
html.write_pdf('example.pdf', presentational_hints=True, stylesheets=['style.css'],
attachments=[('attachment.html', b'Content of attachment', 'text/html')])
pdf = open('example.pdf', 'rb')
new_pdf = io.BytesIO()
reportlab.rl_config.TTFSearchPath.append('/usr/share/fonts/truetype/msttcorefonts/')
canv = Canvas(new_pdf)
pdf_reader = PdfReader(pdf)
for page_num in range(1, len(pdf_reader.pages) + 1):
template = PageTemplate('main_template', [Frame(10, 40, 580, 770, id='normal')])
canv.setPageSize((595.276, 841.89))
canv.setFont('Helvetica', 10)
canv.drawString(500, 30, "Page %s of %s" % (page_num, len(pdf_reader.pages)))
page = pdf_reader.pages[page_num - 1]
canv.doForm(PdfDict(N=page.object_number, Pg=len(pdf_reader.pages)))
canv.restoreState()
canv.saveState()
canv.save()
pdf_data = new_pdf.getvalue()
pdf.close()
2. 使用pdfkit库进行转换
2.1 安装pdfkit
首先,我们需要安装pdfkit库。可以通过pip命令进行安装:
pip install pdfkit
2.2 简单示例
接下来,我们可以使用pdfkit将一个html文件转换为pdf文件:
import pdfkit
pdfkit.from_file('example.html', 'example.pdf')
2.3 更多示例
除了基本转换外,pdfkit还可以设置字体、添加页面边距等功能。下面是一个设置字体的示例:
import pdfkit
options = {
'page-size': 'Letter',
'margin-top': '0mm',
'margin-right': '0mm',
'margin-bottom': '0mm',
'margin-left': '0mm',
'encoding': "UTF-8",
'no-outline': None,
'quiet': '',
'custom-header': [
('Accept-Encoding', 'gzip')
],
'cookie': [
('cookie-name1', 'cookie-value1'),
('cookie-name2', 'cookie-value2'),
],
'outline-depth': 10,
'user-style-sheet': 'mystyles.css',
'background': None,
'no-print': None,
'cache-dir': None,
'dpi': 400
}
pdfkit.from_file('example.html', 'example.pdf', options=options)
以上就是两种Python3转换html到pdf的不同解决方案的完整攻略,其中包含了两条示例说明。如有问题,还请指出。