HTML 转 PDF:Python
本指南为Python开发者提供了使用IronPDF库将HTML内容转换为高质量PDF格式的逐步指导。(可移植文件格式)文件
IronPDF是一个全面的PDF转换和处理库,支持多种编程语言,包括.NET, Java和Python编程语言。 本教程专注于使用 IronPDF 在 Python 脚本中转换 HTML 内容,无论是文件形式还是标记形式。
有关在 .NET 应用程序中如何将 HTML 转换为 PDF 的单独教程,请参考以下内容这里.
概述
如何在Python中将HTML转换为PDF
入门
1. 安装 IronPDF PDF 库用于 Python
要安装Python的IronPDF库,您可以使用流行的包管理器pip。只需执行以下命令:
pip install ironpdf
提示
请注意
操作指南和代码示例
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 *
2.2. 设置许可证密钥(可选)
IronPDF for Python 免费使用,但会在免费用户的 PDF 中添加平铺背景水印。
要使用IronPDF生成没有水印的PDF,必须向库提供有效的许可证密钥。 以下代码片段演示了如何使用许可证密钥配置库:
# Apply your license key
License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01"
确保在生成 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
请注意
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")
RenderHtmlAsPdf
方法处理HTML、CSS和JavaScript的方式与现代浏览器相同,确保内容的准确渲染。 此功能使软件工程师能够创建与其Web浏览器对应版本非常相似的PDF文件。
此外,RenderHtmlAsPdf
方法可以处理位于本地或网络文件夹中的外部资源,如图像、样式表和脚本。 以下示例演示了如何从引用了存储在assets文件夹中的CSS文件和图像的HTML创建PDF文档:
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")
上述代码的结果如下图所示。
此外,开发者可以为 RenderHtmlAsPdf
方法提供第二个参数,以指定引用网络资产的基本路径。 此路径可以指向文件系统上的本地目录,甚至是URL路径。
为了更好地了解如何使用 RenderHtmlAsPdf
方法,您可以参考此代码示例或查阅 API 参考页面了解更多详细信息。
2.5. 从网址创建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")
生成的 PDF 文件格式如下所示。
如需了解更多信息,请参阅代码示例演示如何将网页转换成 PDF。
2.6. 从HTML文件创建PDF
IronPDF支持将HTML文件转换为PDF并存储在本地文件系统上。 它将HTML内容直接渲染为相应的PDF格式。
要展示这一功能的实际应用,下面的代码示例展示了将统一发票 HTML文件转换的过程。您可以访问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>
假设我们在名为 "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")
与将HTML字符串转换为PDF类似,IronPDF会自动解析示例HTML文件中的相对URL,确保任何引用的样式表和脚本正确应用于生成的PDF文档中。 这确保了网页的视觉外观在PDF文件中被准确捕获。
3. 进一步阅读
探索IronPDF将HTML转换为PDF渲染的广泛功能,深入了解我们的代码示例节。