HTML 转 PDF:Python

This article was translated from English: Does it need improvement?
Translated
View the article in English

本指南为 Python 开发人员提供了使用 IronPDF 库将 HTML 内容转换为高质量 PDF 格式的分步说明 (可移植文件格式) 文件

IronPDF 是一个全面的 PDF 转换器和处理库,支持多种编程语言,包括 .NET, JavaPython 编程语言。本教程特别关注在 Python 脚本中使用 IronPDF 转换 HTML 内容(无论是文件形式还是标记形式)。

有关如何在 .NET 应用程序中将 HTML 转换为 PDF 的单独教程,请参阅以下内容 这里.


概述


入门

1. 安装IronPDF PDF库用于Python

用于PDF的Python库

安装使用 pip

 pip install ironpdf
Python模块

下载 模块

立即下载

手动安装到你的项目中

要安装IronPDF for Python库,您可以使用流行的软件包管理器pip。只需执行以下命令:

 pip install ironpdf

提示
要安装特定版本的 IronPdf,请使用以下语法:"===2023.x.x"。例如,你可以运行命令 "pip install ironpdf===2023.x.x"。

请注意
IronPDF Python 依赖于 IronPDF .NET 库,特别是 .NET 6.0,作为其底层技术。因此,必须有.NET 6.0 SDK 才能使用 IronPDF Python。


操作指南和代码示例

2.将 HTML 转换为 PDF

在下一节中,我们将深入探讨 IronPDF 在将 HTML 转换为 PDF 方面令人印象深刻的渲染能力。

PDF 文档渲染的主要组件是 ChromePdfRenderer 类。此外,"PdfDocument "类还提供了一系列操作功能。IronPDF 为将 HTML 内容转换为 PDF 文档提供了可靠的方法,可满足**三种主要情况:

  • 将 HTML 字符串/标记转换为 PDF
  • 将 HTML 文件/压缩包转换为 PDF

  • 将 URL 转换为 PDF

本节将简明扼要地介绍每种用例,并提供补充资源以进一步了解详情。

2.1 导入 IronPDF 软件包

要导入 IronPDF,请在使用 IronPDF 的源文件开头包含以下导入语句:

# Import statements for IronPDF Python
from ironpdf import *
PYTHON

2.2.设置许可证密钥 (可选的)

IronPDF for Python 可免费使用,但它会为免费用户的 PDF 添加平铺背景水印。

参观 许可页面 获取许可证密钥,享受无水印 PDF。

要使用 IronPDF 生成不带水印的 PDF,必须向库提供有效的许可证密钥。以下代码片段演示了如何使用许可证密钥配置库:

# Apply your license key
License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01"
PYTHON

确保在生成 PDF 文件或修改其内容之前设置许可证密钥。建议在任何其他代码行之前调用 LicenseKey 方法。

您可以 购买许可证密钥 或联系我们 获取免费试用版许可证密钥.

2.3 设置日志文件位置 (可选的)

IronPDF 可以在与 Python 脚本相同目录下的名为 Default.log 的文本文件中生成日志信息。

如果您想自定义日志文件名和位置,可以使用下面的代码片段设置 LogFilePath 属性:

# Set a log path
Logger.EnableDebugging = True
Logger.LogFilePath = "Custom.log"
Logger.LoggingMode = Logger.LoggingModes.All
PYTHON

请注意
在使用任何 PDF 转换和操作方法之前,应调用 Logger.LogFilePath

2.4.从 HTML 字符串创建 PDF

RenderHtmlAsPdf` 方法可将 HTML 字符串转换为 PDF 格式文件。

下面的代码片段演示了如何从包含单一标题元素的 HTML 字符串生成 PDF 文件:

from ironpdf import *

# Instantiate Renderer
renderer = ChromePdfRenderer()

# Create a PDF from a HTML string using Python
pdf = renderer.RenderHtmlAsPdf("<h1>Hello from IronPDF!</h1>")

# Export to a file or Stream
pdf.SaveAs("output.pdf")
PYTHON

使用以下工具将 HTML 标记转换为 PDF 文件 将Html渲染为Pdf 方法。这种方法可以使用所有符合 W3C 标准的有效 HTML 和 CSS 标记生成 PDF。

RenderHtmlAsPdf "方法以与现代浏览器相同的方式处理 HTML、CSS 和 JavaScript,确保内容的准确呈现。该功能使软件工程师能够创建与网络浏览器非常相似的 PDF。

此外,"RenderHtmlAsPdf "方法还能处理位于本地或网络文件夹中的图像、样式表和脚本等外部资源。下面的示例演示了从 HTML 创建 PDF 文档,该文档引用了 CSS 文件和存储在 assets 文件夹中的图片:

from ironpdf import *

html = """
<html>
   <head>
      <title>Hello world!</title>
      <link rel='stylesheet' href='assets/style.css'>
   </head>
   <body>
      <h1>Hello from IronPDF!</h1>
      <a href='https://ironpdf.com/python/'><img src='assets/logo.png' /></a>
   </body>
</html>
"""

renderer = ChromePdfRenderer()
pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("output.pdf")
PYTHON

上述代码的结果如下图所示。

将Html渲染为Pdf 方法能够呈现各种 HTML 内容。如果能在 Chrome 浏览器中显示,那么 将Html渲染为Pdf 将其呈现出来!

此外,开发人员还可以选择为 RenderHtmlAsPdf 方法提供第二个参数,从而可以指定引用网络资产的基本路径。该路径可以指向文件系统中的本地目录,甚至可以是 URL 路径。

要更好地了解如何使用 RenderHtmlAsPdf 方法,请参阅 此代码示例 或查阅 API 参考页面了解更多详细信息。

2.5.从 URL 创建 PDF

要将网站 URL 转换为 PDF 文档,开发人员可以使用 IronPDF 提供的 "RenderUrlAsPdf "方法。

下面的示例演示了如何将维基百科文章渲染为 PDF 内容。

from ironpdf import *

# Instantiate Renderer
renderer = ChromePdfRenderer()

# Create a PDF from a URL or local file path
pdf = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/PDF")

# Export to a file or Stream
pdf.SaveAs("url.pdf")
PYTHON

生成的 PDF 文件格式如下所示。

如需了解更多信息,请参阅 代码示例 演示如何将网页转换成 PDF。

2.6.从 HTML 文件创建 PDF

IronPDF 可将 HTML 文件转换为 PDF,并将其存储在本地文件系统中。它可直接将 HTML 内容渲染为等效的 PDF 格式。

以下代码示例展示了这一功能在现实世界中的转换过程:转换一个统一的 HTML 文件。您可以访问 统一发票.

提供此 HTML 标记是为了方便您使用:

<html>
<head>
    <meta charset="utf-8">
    <title>Invoice</title>
    <link rel="stylesheet" href="style.css">
    <link rel="license" href="https://www.opensource.org/licenses/mit-license/">
    <script src="script.js"></script>
</head>
<body>
<header>
    <h1>Invoice</h1>
    <address contenteditable>
        <p>Jonathan Neal</p>
        <p>101 E. Chapman Ave<br>Orange, CA 92866</p>
        <p>(800) 555-1234</p>
    </address>
    <span><img alt="" src="http://www.jonathantneal.com/examples/invoice/logo.png"><input type="file" accept="image/*"></span>
</header>
<article>
    <h1>Recipient</h1>
    <address contenteditable>
        <p>Some Company<br>c/o Some Guy</p>
    </address>
    <table class="meta">
        <tr>
            <th><span contenteditable>Invoice #</span></th>
            <td><span contenteditable>101138</span></td>
        </tr>
        <tr>
            <th><span contenteditable>Date</span></th>
            <td><span contenteditable>January 1, 2012</span></td>
        </tr>
        <tr>
            <th><span contenteditable>Amount Due</span></th>
            <td><span id="prefix" contenteditable>$</span><span>600.00</span></td>
        </tr>
    </table>
    <table class="inventory">
        <thead>
        <tr>
            <th><span contenteditable>Item</span></th>
            <th><span contenteditable>Description</span></th>
            <th><span contenteditable>Rate</span></th>
            <th><span contenteditable>Quantity</span></th>
            <th><span contenteditable>Price</span></th>
        </tr>
        </thead>
        <tbody>
        <tr>
            <td><a class="cut">-</a><span contenteditable>Front End Consultation</span></td>
            <td><span contenteditable>Experience Review</span></td>
            <td><span data-prefix>$</span><span contenteditable>150.00</span></td>
            <td><span contenteditable>4</span></td>
            <td><span data-prefix>$</span><span>600.00</span></td>
        </tr>
        </tbody>
    </table>
    <a class="add">+</a>
    <table class="balance">
        <tr>
            <th><span contenteditable>Total</span></th>
            <td><span data-prefix>$</span><span>600.00</span></td>
        </tr>
        <tr>
            <th><span contenteditable>Amount Paid</span></th>
            <td><span data-prefix>$</span><span contenteditable>0.00</span></td>
        </tr>
        <tr>
            <th><span contenteditable>Balance Due</span></th>
            <td><span data-prefix>$</span><span>600.00</span></td>
        </tr>
    </table>
</article>
<aside>
    <h1><span contenteditable>Additional Notes</span></h1>
    <div contenteditable>
        <p>A finance charge of 1.5% will be made on unpaid balances after 30 days.</p>
    </div>
</aside>
</body>
</html>
<html>
<head>
    <meta charset="utf-8">
    <title>Invoice</title>
    <link rel="stylesheet" href="style.css">
    <link rel="license" href="https://www.opensource.org/licenses/mit-license/">
    <script src="script.js"></script>
</head>
<body>
<header>
    <h1>Invoice</h1>
    <address contenteditable>
        <p>Jonathan Neal</p>
        <p>101 E. Chapman Ave<br>Orange, CA 92866</p>
        <p>(800) 555-1234</p>
    </address>
    <span><img alt="" src="http://www.jonathantneal.com/examples/invoice/logo.png"><input type="file" accept="image/*"></span>
</header>
<article>
    <h1>Recipient</h1>
    <address contenteditable>
        <p>Some Company<br>c/o Some Guy</p>
    </address>
    <table class="meta">
        <tr>
            <th><span contenteditable>Invoice #</span></th>
            <td><span contenteditable>101138</span></td>
        </tr>
        <tr>
            <th><span contenteditable>Date</span></th>
            <td><span contenteditable>January 1, 2012</span></td>
        </tr>
        <tr>
            <th><span contenteditable>Amount Due</span></th>
            <td><span id="prefix" contenteditable>$</span><span>600.00</span></td>
        </tr>
    </table>
    <table class="inventory">
        <thead>
        <tr>
            <th><span contenteditable>Item</span></th>
            <th><span contenteditable>Description</span></th>
            <th><span contenteditable>Rate</span></th>
            <th><span contenteditable>Quantity</span></th>
            <th><span contenteditable>Price</span></th>
        </tr>
        </thead>
        <tbody>
        <tr>
            <td><a class="cut">-</a><span contenteditable>Front End Consultation</span></td>
            <td><span contenteditable>Experience Review</span></td>
            <td><span data-prefix>$</span><span contenteditable>150.00</span></td>
            <td><span contenteditable>4</span></td>
            <td><span data-prefix>$</span><span>600.00</span></td>
        </tr>
        </tbody>
    </table>
    <a class="add">+</a>
    <table class="balance">
        <tr>
            <th><span contenteditable>Total</span></th>
            <td><span data-prefix>$</span><span>600.00</span></td>
        </tr>
        <tr>
            <th><span contenteditable>Amount Paid</span></th>
            <td><span data-prefix>$</span><span contenteditable>0.00</span></td>
        </tr>
        <tr>
            <th><span contenteditable>Balance Due</span></th>
            <td><span data-prefix>$</span><span>600.00</span></td>
        </tr>
    </table>
</article>
<aside>
    <h1><span contenteditable>Additional Notes</span></h1>
    <div contenteditable>
        <p>A finance charge of 1.5% will be made on unpaid balances after 30 days.</p>
    </div>
</aside>
</body>
</html>
HTML

假设我们在名为 "invoices "的文件夹中保存了一个本地 HTML 文件及其相关的 CSS 和 JavaScript 文件,我们可以使用 IronPDF 通过以下 Python 代码将示例 HTML 文件转换为 PDF:

# Instantiate Renderer
renderer = ChromePdfRenderer()

# Create a PDF from an existing HTML file using Python
pdf = renderer.RenderHtmlFileAsPdf("invoices/TestInvoice1.html")

# Export to a file or Stream
pdf.SaveAs("htmlfile_to_pdf.pdf")
PYTHON

与将 HTML 字符串转换为 PDF 类似,IronPDF 也会自动解析示例 HTML 文件中的相对 URL,确保将任何引用的样式表和脚本正确应用到生成的 PDF 文档中。这可确保在 PDF 文件中准确捕捉网页的视觉外观。

3.更多阅读

深入了解 IronPDF 的 HTML 至 PDF 渲染功能,探索其广泛的功能。 代码示例 节。

1.阅读 此代码示例 了解如何在转换过程中自定义 PDF 文档的外观。

2.了解如何生成个性化的 PDF 文件 页眉和页脚调整 边距大小页面尺寸, 添加水印等等。

3.此外,还可以探索以下技术 提取文本, 优化文件大小和编程 打印 PDF.

*下载 软件产品。