欢迎访问宙启技术站
智能推送

基于WeasyPrint的中文网页转PDF教程:简单易懂的Python实现方法

发布时间:2024-01-01 08:53:17

WeasyPrint是一个Python库,用于将网页转换为PDF文档。它支持HTML和CSS,并提供了丰富的功能来控制PDF的生成。

下面是一个简单易懂的Python实现方法和使用示例,帮助你快速使用WeasyPrint将中文网页转换为PDF。

步:安装WeasyPrint

在终端或命令提示符中运行以下命令来安装WeasyPrint:

pip install WeasyPrint

确保你已经安装了Python和pip管理工具。

第二步:导入WeasyPrint库

在你的Python代码中导入WeasyPrint库:

from weasyprint import HTML, CSS

第三步:加载网页和样式表

使用HTML类加载要转换为PDF的网页,可以通过URL或本地文件路径进行加载。示例中使用的是本地文件路径:

html = HTML(filename='path/to/your.html')

你还可以通过CSS类加载CSS样式表,以控制PDF的生成。例如,你可以设置页面的大小、边距、字体等样式:

css = CSS(string='@page { size: A4; margin: 2cm; font-family: "SimSun"; }')

在这个示例中,我们设置了A4大小的页面,2cm的边距,并使用宋体字体。

第四步:生成PDF

将加载的网页和样式表传递给html.write_pdf()方法来生成PDF文件:

pdf = html.write_pdf(stylesheets=[css])

你可以选择将PDF保存到本地文件中:

with open('output.pdf', 'wb') as f:
    f.write(pdf)

或者,你还可以将PDF保存到内存中并进行进一步操作:

# Save PDF to a BytesIO buffer
from io import BytesIO
pdf_buffer = BytesIO()
pdf_buffer.write(pdf)

# Do something with the PDF buffer

完整示例代码如下所示:

from weasyprint import HTML, CSS
from io import BytesIO

# Load HTML and CSS
html = HTML(filename='path/to/your.html')
css = CSS(string='@page { size: A4; margin: 2cm; font-family: "SimSun"; }')

# Generate PDF
pdf = html.write_pdf(stylesheets=[css])

# Save PDF to a file
with open('output.pdf', 'wb') as f:
    f.write(pdf)

# Or save PDF to a BytesIO buffer
pdf_buffer = BytesIO()
pdf_buffer.write(pdf)

# Do something with the PDF buffer

这就是使用WeasyPrint将中文网页转换为PDF的简单易懂的Python实现方法和使用示例。你可以根据自己的需求,进一步探索WeasyPrint的丰富功能,如页面脚注、表格布局、图像插入等。你可以在WeasyPrint的官方文档中找到更多关于如何使用这个库的详细信息。