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

WeasyPrint中文教程:如何在Python中使用WeasyPrint创建美观的PDF文档

发布时间:2024-01-01 08:52:56

WeasyPrint 是一个Python库,用于将网页或HTML文档转换为美观且可打印的PDF文件。它使用WebKit进行渲染,支持CSS3、HTML5和JavaScript,因此可以轻松处理复杂的布局和样式。

本教程将指导您如何在Python中使用WeasyPrint创建漂亮的PDF文档,并提供一些使用示例。

安装WeasyPrint

首先,您需要安装WeasyPrint。打开命令行界面,运行以下命令:

pip install WeasyPrint

接下来,我们将在Python中使用WeasyPrint创建一个简单的PDF文档。

创建一个简单的PDF文档

以下是一个简单的示例代码,用于创建一个包含标题和段落的PDF文档。

from weasyprint import HTML, CSS

# 创建一个简单的HTML页面
html = """
<html>
  <head>
    <meta charset="UTF-8">
    <style>
      h1 { color: blue; }
      p { font-size: 20px; }
    </style>
  </head>
  <body>
    <h1>欢迎使用WeasyPrint!</h1>
    <p>这是一个使用WeasyPrint创建的PDF文档。</p>
  </body>
</html>
"""

# 将HTML转换为PDF
pdf = HTML(string=html).write_pdf()

# 将生成的PDF保存到文件
with open('document.pdf', 'wb') as f:
    f.write(pdf)

在上面的示例中,我们首先定义了一个简单的HTML页面,其中包含一个标题(h1)和一个段落(p)。我们使用CSS来设置标题的颜色和段落的字体大小。

然后,我们使用HTML(string=html)创建一个WeasyPrint的HTML对象。然后,我们使用write_pdf()方法将HTML转换为PDF。

最后,我们将生成的PDF保存到名为document.pdf的文件中。

这只是一个基本示例,您可以根据需要定制HTML和CSS来创建复杂的PDF文档。

使用外部CSS文件

上面的示例中,我们将CSS直接嵌入到HTML代码中。但是,您也可以将CSS保存到一个外部文件中,并在HTML中引用它。

以下是一个示例代码,其中我们使用外部CSS文件来设置页面的样式:

from weasyprint import HTML, CSS

# 创建一个简单的HTML页面
html = """
<html>
  <head>
    <meta charset="UTF-8">
    <link rel="stylesheet" href="styles.css">
  </head>
  <body>
    <h1>欢迎使用WeasyPrint!</h1>
    <p>这是一个使用外部CSS文件的PDF文档。</p>
  </body>
</html>
"""

# 为HTML添加外部CSS文件
html = HTML(string=html)
css = CSS(filename='styles.css')
html.write_pdf(stylesheets=[css], target='document.pdf')

在上面的示例中,我们将CSS保存到名为styles.css的外部文件中,并使用<link>标签在HTML中引用它。

然后,我们通过在write_pdf()方法中使用stylesheets参数将CSS文件与HTML关联起来。

使用CSS选择器

WeasyPrint还支持使用CSS选择器来选择和修改HTML元素的样式。您可以使用CSS选择器对PDF文档中的特定元素进行样式化。

以下是一个示例代码,其中我们使用CSS选择器来选择和修改标题的样式:

from weasyprint import HTML, CSS

# 创建一个简单的HTML页面
html = """
<html>
  <head>
    <meta charset="UTF-8">
    <style>
      h1 { color: blue; }
      h1.title { font-size: 30px; }
    </style>
  </head>
  <body>
    <h1 class="title">欢迎使用WeasyPrint!</h1>
    <h1>这是一个使用CSS选择器的PDF文档。</h1>
  </body>
</html>
"""

# 添加CSS选择器样式
html = HTML(string=html)
css = CSS(string='h1.title { font-weight: bold; }')
html.write_pdf(stylesheets=[css], target='document.pdf')

在上面的示例中,我们在HTML的<style>标签中定义了两个样式。一个是选择所有标题元素,并将其颜色设置为蓝色。另一个样式是选择类名为title的标题,并将其字体大小设置为30像素。

然后,我们使用CSS的string参数创建了一个样式表,其中包含一个选择器h1.title,并将其字体加粗。

最后,我们将此样式表与HTML关联,并将生成的PDF保存到名为document.pdf的文件中。

总结

WeasyPrint是一个用于在Python中创建美观的PDF文档的强大工具。本教程提供了基本的使用示例,涵盖了从简单的PDF文档创建到外部CSS和CSS选择器的使用。

您可以根据需要定制HTML和CSS,创建您自己的复杂PDF文档。希望这个教程对您有所帮助!