Python 创建 PDF 文件

如何用 Python 创建 PDF 文件

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

使用IronPDF在Python中通过转换HTML字符串、HTML文件或URLs到PDF文档生成PDF文件,只需几行代码。 IronPDF 可自动处理渲染、格式化和安全功能。

快速入门:在Python中创建一个PDF

:path=/static-assets/pdf/content-code-examples/how-to/python-create-pdf/quickstart.py
# 1. Install IronPDF: pip install ironpdf
# 2. Import the library
from ironpdf import *
# 3. Create renderer
renderer = ChromePdfRenderer()
# 4. Convert HTML to PDF
pdf = renderer.RenderHtmlAsPdf("<h1>Hello World!</h1>")
# 5. Save the PDF
pdf.SaveAs("output.pdf")
// 该代码片段不可用!
# 1. Install IronPDF: pip install ironpdf
# 2. Import the library
from ironpdf import *
# 3. Create renderer
renderer = ChromePdfRenderer()
# 4. Convert HTML to PDF
pdf = renderer.RenderHtmlAsPdf("<h1>Hello World!</h1>")
# 5. Save the PDF
pdf.SaveAs("output.pdf")
PYTHON

在Python中自动化PDF创建让开发者可以通过程序生成文档:发票、报告、合同和证书,无需离开应用程序。 传统上,这需要同时处理布局引擎和格式规范,而IronPDF的HTML优先方法意味着任何HTML/CSS文档都可以在一次方法调用中成为像素精准的PDF。

IronPDF for Python的本指南涵盖了四个主要PDF创建工作流程:转换HTML字符串、转换本地HTML文件、转换URL,以及在导出前应用密码保护。

用于PDF创建的Python库应该使用哪个?

IronPDF是一个专门用于从HTML创建PDF文档的Python库。 其 API 非常直观:传入 HTML 标记(或文件路径、或 URL),即可获得一个 PdfDocument 对象,您可以对其进行保存、加水印、合并或加密。

该库封装了IronPDF经过战斗考验的.NET渲染引擎,相同的引擎用于.NET、JavaNode.js项目,因此HTML到PDF的输出在各个平台之间始终如一。 它支持现代网页标准,包括CSS3、HTML5、JavaScript执行、网页字体和响应式布局。

除了PDF生成,IronPDF涵盖了PDF的全部生命周期:

请注意IronPDF可用于.NETJavaPythonNode.js。 本指南特别涵盖Python实现。)}]

创建PDF之前需要哪些前置条件?

要使用IronPDF for Python,必须安装以下软件:

  1. .NET 6.0 SDK: IronPDF for Python 基于 IronPDF .NET 库运行。 从官方Microsoft .NET 6.0下载页面下载。
  2. Python 3.x:从 Python 官方网站下载并安装 Python。 在安装过程中选择将 Python 添加到 PATH 的选项。
  3. pip:随 Python 3.4+ 版本捆绑发布。 在终端中运行 pip --version 以验证安装是否成功。
  4. IronPDF: 使用 pip 安装该库:
 pip install ironpdf

请注意在某些系统上,Python 2.x 可能仍然是默认版本。 在这种情况下,请使用 pip3 代替 pip 来安装 Python 3 包。 如果您遇到安装错误,请参考我们的OSError问题疑难解答指南。)}]

创建 PDF 之前需要进行哪些代码设置?

在您的Python脚本顶部添加以下导入声明:

:path=/static-assets/pdf/content-code-examples/how-to/python-create-pdf/import.py
# Import statement for IronPDF for Python
from ironpdf import *
// 该代码片段不可用!
# Import statement for IronPDF for Python
from ironpdf import *
PYTHON

在调用任何其他 IronPDF 函数之前,请通过将其分配给 LicenseKeyLicense 属性来配置有效的许可证密钥。 这将从生成的PDF中去除试用水印。 有关实施许可证密钥的详细说明,请访问许可证密钥设置指南

:path=/static-assets/pdf/content-code-examples/how-to/python-create-pdf/license.py
# Apply your license key
License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01"
// 该代码片段不可用!
# Apply your license key
License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01"
PYTHON

重要创建没有水印的PDF需要有效的许可证密钥。 Purchase a license or obtain a free trial license key. 没有许可证密钥,IronPDF会在每个输出PDF上添加试用水印。)}]

如何将HTML字符串转换为PDF文档?

RenderHtmlAsPdf 方法可将 HTML 字符串直接转换为 PdfDocument 对象。 传入任何有效的HTML标记作为方法参数,IronPDF使用其内置的Chromium引擎渲染,执行JavaScript并应用CSS,然后生成PDF。

这种方法是动态生成内容的最灵活方法:用Python构建HTML字符串(使用模板引擎如Jinja2或简单的字符串格式化),然后直接传递给渲染器。 例如,生成发票意味着将订单数据填入 HTML 模板,并一步调用 RenderHtmlAsPdf

:path=/static-assets/pdf/content-code-examples/how-to/python-create-pdf/html-string-to-pdf.py
from ironpdf import *

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

# Instantiate the Chromium renderer
renderer = ChromePdfRenderer()

# Convert an HTML string to a PDF document
pdf = renderer.RenderHtmlAsPdf("<h1>Hello World!</h1><p>This is an example HTML string.</p>")
// 该代码片段不可用!
from ironpdf import *

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

# Instantiate the Chromium renderer
renderer = ChromePdfRenderer()

# Convert an HTML string to a PDF document
pdf = renderer.RenderHtmlAsPdf("<h1>Hello World!</h1><p>This is an example HTML string.</p>")
PYTHON

如何保存生成的 PDF?

将 HTML 字符串转换为 PdfDocument 实例后,请使用目标文件路径调用 SaveAs

:path=/static-assets/pdf/content-code-examples/how-to/python-create-pdf/save-html-string.py
# Save the PDF to a file
pdf.SaveAs("htmlstring_to_pdf.pdf")
// 该代码片段不可用!
# Save the PDF to a file
pdf.SaveAs("htmlstring_to_pdf.pdf")
PYTHON

文件 htmlstring_to_pdf.pdf 将写入当前工作目录,并完整保留 HTML 内容及 CSS 样式。 关于高级HTML渲染技术,包括CSS框架、JavaScript框架和复杂布局,请参阅Python的HTML到PDF教程

如何从本地HTML文件生成PDF?

当 HTML 内容位于本地文件系统中的文件内时,RenderHtmlFileAsPdf 是正确的方法。 将文件路径作为参数提供:

:path=/static-assets/pdf/content-code-examples/how-to/python-create-pdf/html-file-to-pdf.py
from ironpdf import *

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

# Instantiate the renderer
renderer = ChromePdfRenderer()

# Create a PDF from a local HTML file
pdf = renderer.RenderHtmlFileAsPdf("example.html")

# Save the output PDF
pdf.SaveAs("htmlfile_to_pdf.pdf")
// 该代码片段不可用!
from ironpdf import *

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

# Instantiate the renderer
renderer = ChromePdfRenderer()

# Create a PDF from a local HTML file
pdf = renderer.RenderHtmlFileAsPdf("example.html")

# Save the output PDF
pdf.SaveAs("htmlfile_to_pdf.pdf")
PYTHON

IronPDF根据HTML文件的位置解析链接的CSS文件、图像和脚本的相对路径。 在生成PDF之前,渲染器会加载所有相关资产,因此结果匹配浏览器显示的内容。 这使其成为模板化文档的可靠选择,其中HTML和资产以硬盘上的文件形式维护。

提示处理本地HTML文件时,请确保所有链接资产(样式表、字体、图像)使用相对于HTML文件的路径。IronPDF在渲染前解析这些路径,从而生成完整的、独立的PDF。

如何在Python中从URL创建PDF?

使用 RenderUrlAsPdf 将实时网页转换为 PDF。 将完整的URL作为参数提供:

:path=/static-assets/pdf/content-code-examples/how-to/python-create-pdf/url-to-pdf.py
from ironpdf import *

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

# Instantiate the renderer
renderer = ChromePdfRenderer()

# Convert a web page to PDF
pdf = renderer.RenderUrlAsPdf("https://ironpdf.com")

# Save the output PDF
pdf.SaveAs("url.pdf")
// 该代码片段不可用!
from ironpdf import *

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

# Instantiate the renderer
renderer = ChromePdfRenderer()

# Convert a web page to PDF
pdf = renderer.RenderUrlAsPdf("https://ironpdf.com")

# Save the output PDF
pdf.SaveAs("url.pdf")
PYTHON

URL渲染功能支持现代网页技术,包括动态JavaScript内容、AJAX调用和响应式布局。 IronPDF在捕获PDF之前等待页面完全加载(包括JavaScript执行),因此所有动态内容均得到准确捕获。

在哪里可以找到更多 URL 转换示例?

有关将网页转换为PDF的额外示例,请访问URL到PDF代码示例页面。 对于需要认证的网站,请参阅关于网站和系统登录的指南。

如何自定义 PDF 格式选项?

RenderingOptionsChromePdfRenderer 属性控制输出 PDF 的格式和版面布局。 常见设置包括页面大小、页面取向、边距大小和缩放等级。

:path=/static-assets/pdf/content-code-examples/how-to/python-create-pdf/rendering-options.py
from ironpdf import *

License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01"

renderer = ChromePdfRenderer()

# Configure rendering options
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Portrait
renderer.RenderingOptions.MarginTop = 20
renderer.RenderingOptions.MarginBottom = 20
renderer.RenderingOptions.MarginLeft = 25
renderer.RenderingOptions.MarginRight = 25

# Render with custom formatting
pdf = renderer.RenderHtmlAsPdf("<h1>Custom Formatted PDF</h1><p>Content here.</p>")
pdf.SaveAs("formatted.pdf")
// 该代码片段不可用!
from ironpdf import *

License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01"

renderer = ChromePdfRenderer()

# Configure rendering options
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Portrait
renderer.RenderingOptions.MarginTop = 20
renderer.RenderingOptions.MarginBottom = 20
renderer.RenderingOptions.MarginLeft = 25
renderer.RenderingOptions.MarginRight = 25

# Render with custom formatting
pdf = renderer.RenderHtmlAsPdf("<h1>Custom Formatted PDF</h1><p>Content here.</p>")
pdf.SaveAs("formatted.pdf")
PYTHON

有哪些格式设置可用?

RenderingOptions 属性提供了纸张尺寸、页面方向、页边距和 Zoom 比例的设置。 下面的表格列出了最常用的属性:

在Python中PDF格式化用的常用RenderingOptions属性
属性翻译类型说明
纸张大小PdfPaperSize标准页面大小(A4、Letter、Legal)或自定义大小
文件方向PdfPaperOrientation纵向或横向页面取向
页边距上 / 页边距下int(毫米)页顶部和底部边距,以毫米为单位
左边距 / 右边距int(毫米)页左和右边距,以毫米为单位
HtmlHeader / HtmlFooterHtmlHeaderFooter支持页码的运行HTML页眉和页脚

完整参考及额外设置,请参阅PDF生成设置代码示例

提示若要添加带页码的页眉和页脚,请在 RenderingOptions 上使用 HtmlHeaderHtmlFooter 属性。 该页眉和页脚示例演示了完整的语法。

如何使用密码保护 PDF 文件?

要对 PDF/A 设置密码保护,请在 PdfDocument 对象的 SecuritySettings 属性上设置 UserPassword 属性。 也可以设置一个所有者密码,以分别限制编辑权限和读取访问。

考虑保护URL示例中创建的PDF:

:path=/static-assets/pdf/content-code-examples/how-to/python-create-pdf/password-protect.py
from ironpdf import *

License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01"

renderer = ChromePdfRenderer()
pdf = renderer.RenderUrlAsPdf("https://ironpdf.com")

# Set user password (required to open the PDF)
pdf.SecuritySettings.UserPassword = "sharable"

# Set owner password (controls permissions)
pdf.SecuritySettings.OwnerPassword = "admin123"

# Configure document permissions
pdf.SecuritySettings.AllowUserPrinting = True
pdf.SecuritySettings.AllowUserCopyPasteContent = False

# Save the password-protected PDF
pdf.SaveAs("protected.pdf")
// 该代码片段不可用!
from ironpdf import *

License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01"

renderer = ChromePdfRenderer()
pdf = renderer.RenderUrlAsPdf("https://ironpdf.com")

# Set user password (required to open the PDF)
pdf.SecuritySettings.UserPassword = "sharable"

# Set owner password (controls permissions)
pdf.SecuritySettings.OwnerPassword = "admin123"

# Configure document permissions
pdf.SecuritySettings.AllowUserPrinting = True
pdf.SecuritySettings.AllowUserCopyPasteContent = False

# Save the password-protected PDF
pdf.SaveAs("protected.pdf")
PYTHON

密码保护在实践中是如何工作的?

在任何 PDF 阅读器中打开 protected.pdf 时,系统会在显示文档内容前提示输入用户密码。 所有者密码提供修改安全设置的管理访问权限。 设置 AllowUserCopyPasteContent = False 可防止读者从 PDF 中复制文本,同时仍允许打印。

对于文件权限的进一步控制,请参阅安全和元数据设置示例以及PDF加密和解密指南

什么是完整源代码?

下面的综合示例演示了单个Python脚本中的四个PDF创建工作流程:

:path=/static-assets/pdf/content-code-examples/how-to/python-create-pdf/complete-example.py
from ironpdf import *

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

# --- HTML string to PDF ---
renderer = ChromePdfRenderer()
pdf = renderer.RenderHtmlAsPdf("<h1>Hello World!</h1><p>This is an example HTML string.</p>")
pdf.SaveAs("htmlstring_to_pdf.pdf")

# --- Local HTML file to PDF ---
renderer = ChromePdfRenderer()
pdf = renderer.RenderHtmlFileAsPdf("example.html")
pdf.SaveAs("htmlfile_to_pdf.pdf")

# --- URL to PDF ---
renderer = ChromePdfRenderer()
pdf = renderer.RenderUrlAsPdf("https://ironpdf.com")
pdf.SaveAs("url.pdf")

# --- Password-protected PDF ---
pdf.SecuritySettings.UserPassword = "sharable"
pdf.SecuritySettings.OwnerPassword = "admin123"
pdf.SecuritySettings.AllowUserPrinting = True
pdf.SecuritySettings.AllowUserCopyPasteContent = False
pdf.SaveAs("protected.pdf")
// 该代码片段不可用!
from ironpdf import *

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

# --- HTML string to PDF ---
renderer = ChromePdfRenderer()
pdf = renderer.RenderHtmlAsPdf("<h1>Hello World!</h1><p>This is an example HTML string.</p>")
pdf.SaveAs("htmlstring_to_pdf.pdf")

# --- Local HTML file to PDF ---
renderer = ChromePdfRenderer()
pdf = renderer.RenderHtmlFileAsPdf("example.html")
pdf.SaveAs("htmlfile_to_pdf.pdf")

# --- URL to PDF ---
renderer = ChromePdfRenderer()
pdf = renderer.RenderUrlAsPdf("https://ironpdf.com")
pdf.SaveAs("url.pdf")

# --- Password-protected PDF ---
pdf.SecuritySettings.UserPassword = "sharable"
pdf.SecuritySettings.OwnerPassword = "admin123"
pdf.SecuritySettings.AllowUserPrinting = True
pdf.SecuritySettings.AllowUserCopyPasteContent = False
pdf.SaveAs("protected.pdf")
PYTHON

IronPDF在保留格式的同时准确地渲染所有图像和文本。 交互元素如按钮保持可操作性,文本框在生成的PDF中保留其可编辑性。

在Python中创建PDF的下一步是什么?

本指南涵盖了IronPDF for Python中的三种主要PDF创建方法——HTML字符串、本地HTML文件和URL——以及用于保护输出文件的密码保护。 每个方法都会生成一个 PdfDocument 对象,该对象可在保存前进行进一步处理:加盖水印、合并、拆分或加密。

准备扩展这些工作流程了吗? 下列资源展示了实际的下一步:

IronPDF需要有效的许可证用于生产使用。 许可协议从 $999 开始。 Start a free 30-day trial to evaluate the library without restrictions, or view licensing options for the full product suite.

下载完整的源代码。

常见问题解答

如何安装 IronPDF for Python?

在终端中运行 pip install ironpdf。您还需要安装Python 3.x和.NET 6.0 SDK,因为IronPDF for Python运行在IronPDF .NET引擎之上。

用 Python 将 HTML 转换为 PDF 的最简单方法是什么?

创建一个ChromePdfRenderer实例,然后调用renderer.RenderHtmlAsPdf('

Hello

')。该方法接受任何有效的HTML字符串,并返回一个您可以使用pdf.SaveAs('output.pdf')保存的PdfDocument对象。

我可以从本地HTML文件生成PDF吗?

可以。使用renderer.RenderHtmlFileAsPdf('path/to/file.html')。IronPDF在渲染之前相对于HTML文件位置解析链接的CSS、图像和脚本。

如何将实时网页URL转换为PDF?

调用renderer.RenderUrlAsPdf('https://example.com')。IronPDF等待页面完全加载,包括JavaScript执行,然后捕获PDF。

如何密码保护生成的PDF?

设置pdf.SecuritySettings.UserPassword以要求打开文件的密码,以及pdf.SecuritySettings.OwnerPassword以限制编辑权限。随后调用pdf.SaveAs以写入受保护的文件。

我可以控制生成PDF的页面大小和边距吗?

可以。配置renderer.RenderingOptions.PaperSize(例如PdfPaperSize.A4),并在调用渲染方法之前以毫米设置MarginTopMarginBottomMarginLeftMarginRight

IronPDF在HTML到PDF转换中支持JavaScript执行吗?

支持。IronPDF使用基于Chromium的渲染引擎,执行JavaScript、处理AJAX调用并应用CSS,然后生成PDF,因此动态内容能够准确捕获。

我可以在创建PDF后合并或压缩PDF吗?

可以。IronPDF提供了将多个PdfDocument对象合并为一个文件以及压缩现有PDF以减少文件大小的单独方法。两者都适用于由任何渲染方法返回的PdfDocument对象。

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。

准备开始了吗?
版本: 2026.5 just released
Still Scrolling Icon

还在滚动吗?

想快速获得证据?
运行示例看着你的HTML代码变成PDF文件。