在Python中将HTML转换为PDF Copy for LLMsCopy for LLMs Copy page as Markdown for LLMs
# 在Python中将HTML转换为PDF
IronPDF为Python开发者提供了一条从HTML标记到生产就绪PDF文件的直接路径——不需要中间设计工具,没有专有布局引擎,没有单独的渲染管道。库的`ChromePdfRenderer`类在底层使用基于Chromium的引擎,因此在Chrome中正确显示的任何HTML将准确地转换为PDF。 本教程演示了每种受支持的转换方法——HTML字符串、本地HTML文件和实时URL——然后涵盖了允许您控制页面大小、边距、页眉、页脚等的渲染选项。
如果您需要C#或VB.NET的工作流程,[将HTML转换为PDF的.NET应用程序](/tutorials/html-to-pdf/)也有相关教程。
*as-heading:2(快速入门:在Python中将HTML转为PDF)*
<div class="hsg-featured-snippet">
<h2>如何在 Python 中将 HTML 转换为 PDF</h2>
<img style="display: block;float:right;vertical-align:top;width: 250px;height: auto;" src="/static-assets/pdf/images/html-to-pdf-python.png" alt="IronPDF Python 库将 HTML 页面转换为 PDF 文件" />
<ol>
<li><a class="js-modal-open" data-modal-id="download-modal" href="#download-modal">通过pip安装IronPDF for Python</a></li>
<li>使用<code>from ironpdf import *</code>导入库</li>
<li>实例化<code>ChromePdfRenderer</code></li>
<li>调用<code>RenderHtmlAsPdf</code>、<code>RenderUrlAsPdf</code>或<code>RenderHtmlFileAsPdf</code></li>
<li>使用<code>pdf.SaveAs("output.pdf")</code>保存结果</li>
</ol>
</div>
<hr style="clear: both;" class="separator" />
*as-heading:2(目录)*
- [您如何安装IronPDF for Python?](#installing-ironpdf-pdf-library-for-python)
- [您如何在转换之前配置IronPDF?](#how-do-you-configure-ironpdf-before-converting)
- [如何将HTML字符串转换为PDF?](#how-do-you-convert-an-html-string-to-pdf)
- [如何将URL转换为PDF?](#how-do-you-convert-a-url-to-pdf)
- [如何将HTML文件转换为PDF?](#how-do-you-convert-an-html-file-to-pdf)
- [您如何控制PDF渲染选项?](#how-do-you-control-pdf-rendering-options)
- [如何添加自定义页眉和页脚?](#how-do-you-add-custom-headers-and-footers)
- [下一步是什么?](#what-are-the-next-steps)
<hr class="separator" />
<p class="main-content__segment-title">入门</p>
## 如何安装Python上的IronPDF?
!!!--LIBRARY_NUGET_INSTALL_BLOCK--!!!
IronPDF通过pip分发,这是Python的标准包管理器。 在终端中运行以下命令以安装最新版本:
```shell
:ProductInstall
```
要固定特定版本——在CI管道或容器化环境中很有用——附上版本号:
```shell
:InstallCmd pip install ironpdf==2024.x.x
```
[[i:(IronPDF for Python建立在IronPDF .NET库之上,需使用[.NET 6.0 SDK](https://dotnet.microsoft.com/en-us/download/dotnet/6.0)或更高版本。 在运行任何IronPDF Python代码之前安装SDK。)]
)]]
IronPDF首次初始化时,会下载兼容的Chromium二进制文件。 在新机器上下载稍需片刻,但每个环境仅发生一次。 随后的运行启动速度快得多,因为二进制文件被本地缓存。
<hr class="separator" />
<p class="main-content__segment-title">操作指南和代码示例</p>
## 您如何在转换之前配置IronPDF?
在首次转换调用之前完成两项设置任务:设置许可证密钥和——可选地——配置日志文件位置。
### 导入包
每个使用IronPDF的Python文件都需要这一行导入。将其放在文件顶部:
```python
from ironpdf import *
```
所有IronPDF类——`Logger`,以及其他类——通过此通配符导入变得可用。
### 设置许可证密钥
没有许可证密钥,IronPDF会在每个生成的PDF上添加平铺水印。 水印适合开发和测试,但生产部署需要有效密钥。
<div class="content-img-align-center">
<div class="center-image-wrapper">
<iframe loading="lazy" src="/static-assets/ironpdf-python/tutorials/html-to-pdf/html-to-pdf-no-license.pdf" width="100%" height="500px">
</iframe>
<p class="content__image-caption">无许可证密钥生成的PDF包含平铺水印。访问<a href="/python/licensing/">许可页面</a>以获取密钥。</p>
</div>
</div>
在任何其他IronPDF调用之前设置密钥:
```python
from ironpdf import *
# Set the license key before any PDF operations
License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01"
```
[开始免费试用](https://ironpdf.com/python/#trial-license)以接收临时密钥,或[购买许可证](/python/licensing/)以供无限制的生产使用。
### 配置日志输出
IronPDF将诊断输出写入名为`Default.log`的文件中,该文件位于脚本的工作目录中。 要将日志记录重定向到不同路径或捕获更多细节以进行调试,在第一次转换前设置`Logger`属性:
```python
from ironpdf import *
# Configure logging before running any conversions
Logger.EnableDebugging = True
Logger.LogFilePath = "ironpdf-debug.log"
Logger.LoggingMode = Logger.LoggingModes.All
```
[[i:(`Logger.LogFilePath`必须在第一次PDF转换调用之前设置。 之后做出的更改对当前会话不起作用。)]]
详细日志在诊断特定HTML页面未按预期渲染时最有用——它们捕获网络请求、CSS加载事件和JavaScript执行时间。
## 如何将HTML字符串转换为PDF?
转换内存中的HTML字符串是最直接的方法,并且在HTML是通过编程生成时效果良好——例如,从Jinja2模板或数据库驱动的报告生成。
### 基本HTML字符串转换
实例化`SaveAs`:
```python
from ironpdf import *
renderer = ChromePdfRenderer()
# Convert an HTML string to a PDF document
pdf = renderer.RenderHtmlAsPdf("<h1>Hello from IronPDF!</h1><p>Generated in Python.</p>")
pdf.SaveAs("hello.pdf")
```
<div class="content-img-align-center">
<div class="center-image-wrapper">
<a rel="nofollow" href="/static-assets/ironpdf-java/tutorials/html-to-pdf/html-to-pdf-5.webp" target="_blank"><img src="/static-assets/ironpdf-java/tutorials/html-to-pdf/html-to-pdf-5.webp" alt="从简单 HTML 字符串渲染的 PDF,显示一个标题和一个段落" class="img-responsive add-shadow" /></a>
<p class="content__image-caption"><code>RenderHtmlAsPdf</code>精确处理HTML,就像Chrome会做的,包括CSS和JavaScript。</p>
</div>
</div>
`ChromePdfRenderer`以现代浏览器的方式处理HTML、CSS和JavaScript。 在Chrome中正确渲染的任何内容将生成准确的PDF。
### 具有外部资产的HTML字符串
当HTML字符串引用本地资源(样式表、图像、脚本)时,将目录路径作为第二个参数传递给`RenderHtmlAsPdf`。 IronPDF将此路径用作基础URL,以解析相对引用:
```python
from ironpdf import *
html_content = """
<html>
<head>
<title>Styled Report</title>
<link rel='stylesheet' href='assets/style.css'>
</head>
<body>
<h1>Monthly Report</h1>
<img src='assets/logo.png' alt='Company logo'>
<p>Data as of Q1 2024.</p>
</body>
</html>
"""
renderer = ChromePdfRenderer()
# The second argument sets the base path for resolving relative asset URLs
pdf = renderer.RenderHtmlAsPdf(html_content, "./")
pdf.SaveAs("styled-report.pdf")
```
<div class="content-img-align-center">
<div class="center-image-wrapper">
<a rel="nofollow" href="/static-assets/ironpdf-python/tutorials/html-to-pdf/html-to-pdf-html-string-to-pdf.webp" target="_blank"><img src="/static-assets/ironpdf-python/tutorials/html-to-pdf/html-to-pdf-html-string-to-pdf.webp" alt="从引用外部 CSS 和图像资源的 HTML 字符串生成的 PDF 输出" class="img-responsive add-shadow" /></a>
<p class="content__image-caption">当您提供基路径给<code>RenderHtmlAsPdf</code>时,外部CSS和图像正确加载。</p>
</div>
</div>
基路径可以指向任何本地目录或网络共享。 子目录中的资产相对于它解析。 有关复杂HTML字符串的更多模式,请参见[HTML字符串到PDF代码示例](/python/examples/using-html-to-create-a-pdf/)。
## 如何将URL转换为PDF?
`RenderUrlAsPdf`方法获取一个实时URL,等待页面完全加载(包括任何JavaScript驱动的内容),并将渲染结果转换为PDF。 这使其适用于捕捉仪表板、报告或任何视觉状态取决于JavaScript执行的页面。
```python
from ironpdf import *
renderer = ChromePdfRenderer()
# Fetch and convert a live web page to PDF
pdf = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/Portable_Document_Format")
pdf.SaveAs("wikipedia-pdf.pdf")
```
<div class="content-img-align-center">
<div class="center-image-wrapper">
<a rel="nofollow" href="/static-assets/ironpdf-java/tutorials/html-to-pdf/html-to-pdf-7.webp" target="_blank"><img src="/static-assets/ironpdf-java/tutorials/html-to-pdf/html-to-pdf-7.webp" alt="使用 IronPDF 的 RenderUrlAsPdf 方法从维基百科文章 URL 生成的 PDF" class="img-responsive add-shadow" /></a>
<p class="content__image-caption">IronPDF获取实时URL并渲染整页——包括JavaScript——再生成PDF。</p>
</div>
</div>
[[t:(对于需要身份验证的页面,在调用`ChromePdfRenderer`实例上设置cookie或HTTP请求头。 详情请参见[HTTP登录凭据指南](/python/examples/pdf-generation-settings/)。)]]
当目标页面加载异步内容时,IronPDF会等待Chromium渲染引擎发出文档完全绘制的信号。 对于具有大量JavaScript或延迟网络请求的页面,可以考虑调整`ChromePdfRenderOptions`上的属性(在下面的渲染选项部分有介绍)。 [URL到PDF代码示例](/python/examples/converting-a-url-to-a-pdf/)显示了其他配置模式。
## 您如何将HTML文件转换为PDF?
`RenderHtmlFileAsPdf`接受本地HTML文件的路径并直接转换。 HTML中的相对路径——到CSS文件、图像或JavaScript——会根据HTML文件的目录自动解析,因此不需要基路径参数。
```python
from ironpdf import *
renderer = ChromePdfRenderer()
# Convert a local HTML file (and its linked CSS/JS) to PDF
pdf = renderer.RenderHtmlFileAsPdf("invoices/TestInvoice1.html")
pdf.SaveAs("invoice.pdf")
```
此方法特别适用于服务器端文档生成,其中HTML模板已被写入磁盘——在使用Django或Flask将Jinja2模板渲染为文件,再转换为PDF以便下载时常见的模式。
IronPDF相对于HTML文件位置解析任何`<img>`标签,因此链接的样式表、嵌入的字体和图像在PDF中显示与在浏览器中一样。 该过程反映了`RenderHtmlAsPdf`如何处理内联资源,区别在于不需要提供显式的基路径。
## 您如何控制PDF渲染选项?
`ChromePdfRenderer`(或直接传递给任何渲染方法)的配置对象,用于控制页面布局、边距、纸张尺寸和其他输出特性。 在转换之前设置选项是定制PDF输出的标准方式。
### 纸张尺寸和方向
```python
from ironpdf import *
renderer = ChromePdfRenderer()
# Configure page layout before rendering
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape
renderer.RenderingOptions.MarginTop = 20
renderer.RenderingOptions.MarginBottom = 20
renderer.RenderingOptions.MarginLeft = 15
renderer.RenderingOptions.MarginRight = 15
pdf = renderer.RenderHtmlAsPdf("<h1>Landscape Report</h1><p>Content here.</p>")
pdf.SaveAs("landscape-a4.pdf")
```
边距以毫米表示。 `CustomPaperHeight`定义的任意尺寸。
### 自定义纸张尺寸
当标准纸张尺寸不符合输出要求时——例如,收据或标签打印格式——明确定义宽度和高度:
```python
from ironpdf import *
renderer = ChromePdfRenderer()
# Set a custom paper size (in millimetres)
renderer.RenderingOptions.PaperSize = PdfPaperSize.Custom
renderer.RenderingOptions.CustomPaperWidth = 80 # 80 mm receipt roll width
renderer.RenderingOptions.CustomPaperHeight = 200
pdf = renderer.RenderHtmlAsPdf("<h2>Receipt</h2><p>Total: $12.50</p>")
pdf.SaveAs("receipt.pdf")
```
[[n:(自定义纸张尺寸对于热敏收据打印机和标签格式(如4×6英寸的运输标签)特别有用。)]]
### 启用JavaScript执行
默认情况下,IronPDF在渲染期间执行JavaScript。 如果页面依赖于JavaScript生成可见内容——图表、数据表、动态表单值——这种行为意味着渲染的PDF反映了最终的DOM状态。 要在不必要的页面上禁用JavaScript:
```python
from ironpdf import *
renderer = ChromePdfRenderer()
# Disable JavaScript for static HTML pages
renderer.RenderingOptions.EnableJavaScript = False
pdf = renderer.RenderHtmlAsPdf("<p>Static content only.</p>")
pdf.SaveAs("static.pdf")
```
禁用JavaScript可减少简单、静态HTML文档的渲染时间。
有关更多渲染配置详情,请参见[PDF生成设置](/python/examples/pdf-generation-settings/)和[自定义纸张尺寸示例](/python/examples/custom-pdf-paper-size/)。
## 如何添加自定义页眉和页脚?
IronPDF中的页眉和页脚通过附加到渲染器的`TextHeaderFooter`对象应用。 `HtmlHeaderFooter`为您提供完整的HTML和CSS控制——非常适合带有徽标的品牌信头。 `TextHeaderFooter`更简单,并涵盖大多数基于文本的需求,包括动态页码。
### 基于文本的页眉和页脚
```python
from ironpdf import *
renderer = ChromePdfRenderer()
# Add a text header with the document title
renderer.RenderingOptions.TextHeader = TextHeaderFooter()
renderer.RenderingOptions.TextHeader.CenterText = "Quarterly Report — Q1 2024"
renderer.RenderingOptions.TextHeader.DrawDividerLine = True
renderer.RenderingOptions.TextHeader.FontSize = 10
# Add a footer with page numbers
renderer.RenderingOptions.TextFooter = TextHeaderFooter()
renderer.RenderingOptions.TextFooter.RightText = "Page {page} of {total-pages}"
renderer.RenderingOptions.TextFooter.FontSize = 9
renderer.RenderingOptions.TextFooter.DrawDividerLine = True
html = "<h1>Executive Summary</h1><p>Revenue increased 12% year-over-year.</p>"
pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("report-with-footer.pdf")
```
`{total-pages}`占位符在渲染时替换为正确的值。 其他可用占位符包括`{url}`。
### 带有徽标的HTML页眉
当需要带有公司徽标、彩色条带或格式化地址块的品牌页眉时,使用`HtmlHeaderFooter`代替:
```python
from ironpdf import *
renderer = ChromePdfRenderer()
header_html = """
<div style="font-family: Arial, sans-serif; border-bottom: 2px solid #003366; padding: 8px 0;">
<img src='assets/logo.png' style='height: 40px; float: left;' alt='Company logo'>
<span style='float: right; font-size: 11px; color: #666;'>Confidential</span>
<div style='clear:both;'></div>
</div>
"""
renderer.RenderingOptions.HtmlHeader = HtmlHeaderFooter()
renderer.RenderingOptions.HtmlHeader.HtmlFragment = header_html
renderer.RenderingOptions.HtmlHeader.BaseUrl = "./"
html_body = "<h1>Project Status Update</h1><p>All milestones on track.</p>"
pdf = renderer.RenderHtmlAsPdf(html_body, "./")
pdf.SaveAs("branded-report.pdf")
```
[[i:(将`HtmlHeaderFooter`上,与文档主体使用的基路径相同。 这确保了页眉HTML中引用的图片和样式表可以正确解析。)]]
页眉和页脚出现在生成的PDF的每一页上,包括多页文档。 有关在页脚中包含页面级元数据的工作示例,请参见[HTML页眉和页脚代码示例](/python/examples/html-headers-and-footers/)。
### 页眉和页脚的边距调整
添加页眉或页脚时,请增加相应的边距以防内容与页面主体重叠:
```python
from ironpdf import *
renderer = ChromePdfRenderer()
renderer.RenderingOptions.MarginTop = 30 # Make room for header
renderer.RenderingOptions.MarginBottom = 20 # Make room for footer
renderer.RenderingOptions.TextHeader = TextHeaderFooter()
renderer.RenderingOptions.TextHeader.CenterText = "Internal Use Only"
renderer.RenderingOptions.TextFooter = TextHeaderFooter()
renderer.RenderingOptions.TextFooter.CenterText = "Page {page} of {total-pages}"
pdf = renderer.RenderHtmlAsPdf("<h1>Internal Document</h1><p>Body content.</p>")
pdf.SaveAs("margined-report.pdf")
```
对于布局关键文档,将边距调整与`PaperSize`设置结合,以使输出完全符合打印规范。 附加的布局控件——如`IronSoftwareSystemDrawingColor`背景填充和CSS `@page`规则——在[自定义边距示例](/python/examples/ironpdf-set-custom-margins/)中详细介绍。
<hr class="separator" />
## 下一步是什么?
本教程涵盖了三个核心HTML到PDF的转换方法及其输出控制的渲染选项。 以下指南是在此基础上构建的,并涵盖更专业的任务:
- **[PDF生成设置](/python/examples/pdf-generation-settings/)**——深入探讨`ChromePdfRenderOptions`:DPI、背景渲染、CSS媒体类型、JavaScript等待策略,打印模式和屏幕模式。
- **[HTML页眉和页脚](/python/examples/html-headers-and-footers/)**——带有徽标、页码、日期和多栏布局的品牌页眉和页脚模板。
- **[自定义边距和纸张尺寸](/python/examples/ironpdf-set-custom-margins/)**——微调页面几何形状,以获得打印就绪的输出和非标准格式。
- **[向PDF添加水印](/python/examples/pdf-watermarking/)**——将文本或图像水印印在现有或新生成的PDF上。
- **[从PDF中提取文本](/python/examples/extract-pdf-text/)**——以编程方式读取生成或现有PDF的文本内容。
[开始免费的30天试用](https://ironpdf.com/python/#trial-license),在评估期间生成无限制、无水印的PDF。 准备好生产时,请查看[许可选项](/python/licensing/)以进行团队和企业部署。
Ask ChatGPT about this page
Ask Gemini about this page
Ask Perplexity about this page
IronPDF为Python开发者提供了一条从HTML标记到生产就绪PDF文件的直接路径——不需要中间设计工具,没有专有布局引擎,没有单独的渲染管道。库的ChromePdfRenderer类在底层使用基于Chromium的引擎,因此在Chrome中正确显示的任何HTML将准确地转换为PDF。 本教程演示了每种受支持的转换方法——HTML字符串、本地HTML文件和实时URL——然后涵盖了允许您控制页面大小、边距、页眉、页脚等的渲染选项。
如果您需要C#或VB.NET的工作流程,将HTML转换为PDF的.NET应用程序 也有相关教程。
如何在 Python 中将 HTML 转换为 PDF 通过pip安装IronPDF for Python 使用from ironpdf import *导入库 实例化ChromePdfRenderer 调用RenderHtmlAsPdf、RenderUrlAsPdf或RenderHtmlFileAsPdf 使用pdf.SaveAs("output.pdf")保存结果
入门
如何安装Python上的IronPDF?
IronPDF通过pip分发,这是Python的标准包管理器。 在终端中运行以下命令以安装最新版本:
> pip install ironpdf
pip install ironpdf
要固定特定版本——在CI管道或容器化环境中很有用——附上版本号:
> pip install ironpdf==2024.x.x
pip install ironpdf==2024.x.x
IronPDF for Python建立在IronPDF .NET库之上,需使用.NET 6.0 SDK 或更高版本。 在运行任何IronPDF Python代码之前安装SDK。)]
IronPDF首次初始化时,会下载兼容的Chromium二进制文件。 在新机器上下载稍需片刻,但每个环境仅发生一次。 随后的运行启动速度快得多,因为二进制文件被本地缓存。
操作指南和代码示例
您如何在转换之前配置IronPDF?
在首次转换调用之前完成两项设置任务:设置许可证密钥和——可选地——配置日志文件位置。
导入包
每个使用IronPDF的Python文件都需要这一行导入。将其放在文件顶部:
from ironpdf import *
from ironpdf import *
Python
所有IronPDF类——Logger,以及其他类——通过此通配符导入变得可用。
设置许可证密钥
没有许可证密钥,IronPDF会在每个生成的PDF上添加平铺水印。 水印适合开发和测试,但生产部署需要有效密钥。
无许可证密钥生成的PDF包含平铺水印。访问许可页面 以获取密钥。
在任何其他IronPDF调用之前设置密钥:
from ironpdf import *
# Set the license key before any PDF operations
License . LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01"
from ironpdf import *
# Set the license key before any PDF operations
License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01"
Python
开始免费试用 以接收临时密钥,或购买许可证 以供无限制的生产使用。
配置日志输出
IronPDF将诊断输出写入名为Default.log的文件中,该文件位于脚本的工作目录中。 要将日志记录重定向到不同路径或捕获更多细节以进行调试,在第一次转换前设置Logger属性:
from ironpdf import *
# Configure logging before running any conversions
Logger . EnableDebugging = True
Logger . LogFilePath = "ironpdf-debug.log"
Logger . LoggingMode = Logger . LoggingModes . All
from ironpdf import *
# Configure logging before running any conversions
Logger.EnableDebugging = True
Logger.LogFilePath = "ironpdf-debug.log"
Logger.LoggingMode = Logger.LoggingModes.All
Python
Logger.LogFilePath必须在第一次PDF转换调用之前设置。 之后做出的更改对当前会话不起作用。
详细日志在诊断特定HTML页面未按预期渲染时最有用——它们捕获网络请求、CSS加载事件和JavaScript执行时间。
如何将HTML字符串转换为PDF?
转换内存中的HTML字符串是最直接的方法,并且在HTML是通过编程生成时效果良好——例如,从Jinja2模板或数据库驱动的报告生成。
基本HTML字符串转换
实例化SaveAs:
from ironpdf import *
renderer = ChromePdfRenderer ()
# Convert an HTML string to a PDF document
pdf = renderer. RenderHtmlAsPdf ( "<h1>Hello from IronPDF!</h1><p>Generated in Python.</p>" )
pdf. SaveAs ( "hello.pdf" )
from ironpdf import *
renderer = ChromePdfRenderer()
# Convert an HTML string to a PDF document
pdf = renderer.RenderHtmlAsPdf("<h1>Hello from IronPDF!</h1><p>Generated in Python.</p>")
pdf.SaveAs("hello.pdf")
Python
RenderHtmlAsPdf精确处理HTML,就像Chrome会做的,包括CSS和JavaScript。
ChromePdfRenderer以现代浏览器的方式处理HTML、CSS和JavaScript。 在Chrome中正确渲染的任何内容将生成准确的PDF。
具有外部资产的HTML字符串
当HTML字符串引用本地资源(样式表、图像、脚本)时,将目录路径作为第二个参数传递给RenderHtmlAsPdf。 IronPDF将此路径用作基础URL,以解析相对引用:
from ironpdf import *
html_content = """
<html>
<head>
<title>Styled Report</title>
<link rel='stylesheet' href='assets/style.css'>
</head>
<body>
<h1>Monthly Report</h1>
<img src='assets/logo.png' alt='Company logo'>
<p>Data as of Q1 2024.</p>
</body>
</html>
"""
renderer = ChromePdfRenderer ()
# The second argument sets the base path for resolving relative asset URLs
pdf = renderer. RenderHtmlAsPdf (html_content, "./" )
pdf. SaveAs ( "styled-report.pdf" )
from ironpdf import *
html_content = """
<html>
<head>
<title>Styled Report</title>
<link rel='stylesheet' href='assets/style.css'>
</head>
<body>
<h1>Monthly Report</h1>
<img src='assets/logo.png' alt='Company logo'>
<p>Data as of Q1 2024.</p>
</body>
</html>
"""
renderer = ChromePdfRenderer()
# The second argument sets the base path for resolving relative asset URLs
pdf = renderer.RenderHtmlAsPdf(html_content, "./")
pdf.SaveAs("styled-report.pdf")
Python
当您提供基路径给RenderHtmlAsPdf时,外部CSS和图像正确加载。
基路径可以指向任何本地目录或网络共享。 子目录中的资产相对于它解析。 有关复杂HTML字符串的更多模式,请参见HTML字符串到PDF代码示例 。
如何将URL转换为PDF?
RenderUrlAsPdf方法获取一个实时URL,等待页面完全加载(包括任何JavaScript驱动的内容),并将渲染结果转换为PDF。 这使其适用于捕捉仪表板、报告或任何视觉状态取决于JavaScript执行的页面。
from ironpdf import *
renderer = ChromePdfRenderer ()
# Fetch and convert a live web page to PDF
pdf = renderer. RenderUrlAsPdf ( "https://en.wikipedia.org/wiki/Portable_Document_Format" )
pdf. SaveAs ( "wikipedia-pdf.pdf" )
from ironpdf import *
renderer = ChromePdfRenderer()
# Fetch and convert a live web page to PDF
pdf = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/Portable_Document_Format")
pdf.SaveAs("wikipedia-pdf.pdf")
Python
IronPDF获取实时URL并渲染整页——包括JavaScript——再生成PDF。
对于需要身份验证的页面,在调用ChromePdfRenderer实例上设置cookie或HTTP请求头。 详情请参见HTTP登录凭据指南 。
当目标页面加载异步内容时,IronPDF会等待Chromium渲染引擎发出文档完全绘制的信号。 对于具有大量JavaScript或延迟网络请求的页面,可以考虑调整ChromePdfRenderOptions上的属性(在下面的渲染选项部分有介绍)。 URL到PDF代码示例 显示了其他配置模式。
您如何将HTML文件转换为PDF?
RenderHtmlFileAsPdf接受本地HTML文件的路径并直接转换。 HTML中的相对路径——到CSS文件、图像或JavaScript——会根据HTML文件的目录自动解析,因此不需要基路径参数。
from ironpdf import *
renderer = ChromePdfRenderer ()
# Convert a local HTML file (and its linked CSS/JS) to PDF
pdf = renderer. RenderHtmlFileAsPdf ( "invoices/TestInvoice1.html" )
pdf. SaveAs ( "invoice.pdf" )
from ironpdf import *
renderer = ChromePdfRenderer()
# Convert a local HTML file (and its linked CSS/JS) to PDF
pdf = renderer.RenderHtmlFileAsPdf("invoices/TestInvoice1.html")
pdf.SaveAs("invoice.pdf")
Python
此方法特别适用于服务器端文档生成,其中HTML模板已被写入磁盘——在使用Django或Flask将Jinja2模板渲染为文件,再转换为PDF以便下载时常见的模式。
IronPDF相对于HTML文件位置解析任何<img>标签,因此链接的样式表、嵌入的字体和图像在PDF中显示与在浏览器中一样。 该过程反映了RenderHtmlAsPdf如何处理内联资源,区别在于不需要提供显式的基路径。
您如何控制PDF渲染选项?
ChromePdfRenderer(或直接传递给任何渲染方法)的配置对象,用于控制页面布局、边距、纸张尺寸和其他输出特性。 在转换之前设置选项是定制PDF输出的标准方式。
纸张尺寸和方向
from ironpdf import *
renderer = ChromePdfRenderer ()
# Configure page layout before rendering
renderer. RenderingOptions . PaperSize = PdfPaperSize . A4
renderer. RenderingOptions . PaperOrientation = PdfPaperOrientation . Landscape
renderer. RenderingOptions . MarginTop = 20
renderer. RenderingOptions . MarginBottom = 20
renderer. RenderingOptions . MarginLeft = 15
renderer. RenderingOptions . MarginRight = 15
pdf = renderer. RenderHtmlAsPdf ( "<h1>Landscape Report</h1><p>Content here.</p>" )
pdf. SaveAs ( "landscape-a4.pdf" )
from ironpdf import *
renderer = ChromePdfRenderer()
# Configure page layout before rendering
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape
renderer.RenderingOptions.MarginTop = 20
renderer.RenderingOptions.MarginBottom = 20
renderer.RenderingOptions.MarginLeft = 15
renderer.RenderingOptions.MarginRight = 15
pdf = renderer.RenderHtmlAsPdf("<h1>Landscape Report</h1><p>Content here.</p>")
pdf.SaveAs("landscape-a4.pdf")
Python
边距以毫米表示。 CustomPaperHeight定义的任意尺寸。
自定义纸张尺寸
当标准纸张尺寸不符合输出要求时——例如,收据或标签打印格式——明确定义宽度和高度:
from ironpdf import *
renderer = ChromePdfRenderer ()
# Set a custom paper size (in millimetres)
renderer. RenderingOptions . PaperSize = PdfPaperSize . Custom
renderer. RenderingOptions . CustomPaperWidth = 80 # 80 mm receipt roll width
renderer. RenderingOptions . CustomPaperHeight = 200
pdf = renderer. RenderHtmlAsPdf ( "<h2>Receipt</h2><p>Total: $12.50</p>" )
pdf. SaveAs ( "receipt.pdf" )
from ironpdf import *
renderer = ChromePdfRenderer()
# Set a custom paper size (in millimetres)
renderer.RenderingOptions.PaperSize = PdfPaperSize.Custom
renderer.RenderingOptions.CustomPaperWidth = 80 # 80 mm receipt roll width
renderer.RenderingOptions.CustomPaperHeight = 200
pdf = renderer.RenderHtmlAsPdf("<h2>Receipt</h2><p>Total: $12.50</p>")
pdf.SaveAs("receipt.pdf")
Python
自定义纸张尺寸对于热敏收据打印机和标签格式(如4×6英寸的运输标签)特别有用。
启用JavaScript执行
默认情况下,IronPDF在渲染期间执行JavaScript。 如果页面依赖于JavaScript生成可见内容——图表、数据表、动态表单值——这种行为意味着渲染的PDF反映了最终的DOM状态。 要在不必要的页面上禁用JavaScript:
from ironpdf import *
renderer = ChromePdfRenderer ()
# Disable JavaScript for static HTML pages
renderer. RenderingOptions . EnableJavaScript = False
pdf = renderer. RenderHtmlAsPdf ( "<p>Static content only.</p>" )
pdf. SaveAs ( "static.pdf" )
from ironpdf import *
renderer = ChromePdfRenderer()
# Disable JavaScript for static HTML pages
renderer.RenderingOptions.EnableJavaScript = False
pdf = renderer.RenderHtmlAsPdf("<p>Static content only.</p>")
pdf.SaveAs("static.pdf")
Python
禁用JavaScript可减少简单、静态HTML文档的渲染时间。
有关更多渲染配置详情,请参见PDF生成设置 和自定义纸张尺寸示例 。
如何添加自定义页眉和页脚?
IronPDF中的页眉和页脚通过附加到渲染器的TextHeaderFooter对象应用。 HtmlHeaderFooter为您提供完整的HTML和CSS控制——非常适合带有徽标的品牌信头。 TextHeaderFooter更简单,并涵盖大多数基于文本的需求,包括动态页码。
基于文本的页眉和页脚
from ironpdf import *
renderer = ChromePdfRenderer ()
# Add a text header with the document title
renderer. RenderingOptions . TextHeader = TextHeaderFooter ()
renderer. RenderingOptions . TextHeader . CenterText = "Quarterly Report — Q1 2024"
renderer. RenderingOptions . TextHeader . DrawDividerLine = True
renderer. RenderingOptions . TextHeader . FontSize = 10
# Add a footer with page numbers
renderer. RenderingOptions . TextFooter = TextHeaderFooter ()
renderer. RenderingOptions . TextFooter . RightText = "Page {page} of {total-pages}"
renderer. RenderingOptions . TextFooter . FontSize = 9
renderer. RenderingOptions . TextFooter . DrawDividerLine = True
html = "<h1>Executive Summary</h1><p>Revenue increased 12% year-over-year.</p>"
pdf = renderer. RenderHtmlAsPdf (html)
pdf. SaveAs ( "report-with-footer.pdf" )
from ironpdf import *
renderer = ChromePdfRenderer()
# Add a text header with the document title
renderer.RenderingOptions.TextHeader = TextHeaderFooter()
renderer.RenderingOptions.TextHeader.CenterText = "Quarterly Report — Q1 2024"
renderer.RenderingOptions.TextHeader.DrawDividerLine = True
renderer.RenderingOptions.TextHeader.FontSize = 10
# Add a footer with page numbers
renderer.RenderingOptions.TextFooter = TextHeaderFooter()
renderer.RenderingOptions.TextFooter.RightText = "Page {page} of {total-pages}"
renderer.RenderingOptions.TextFooter.FontSize = 9
renderer.RenderingOptions.TextFooter.DrawDividerLine = True
html = "<h1>Executive Summary</h1><p>Revenue increased 12% year-over-year.</p>"
pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("report-with-footer.pdf")
Python
{total-pages}占位符在渲染时替换为正确的值。 其他可用占位符包括{url}。
带有徽标的HTML页眉
当需要带有公司徽标、彩色条带或格式化地址块的品牌页眉时,使用HtmlHeaderFooter代替:
from ironpdf import *
renderer = ChromePdfRenderer ()
header_html = """
<div style="font-family: Arial, sans-serif; border-bottom: 2px solid #003366; padding: 8px 0;">
<img src='assets/logo.png' style='height: 40px; float: left;' alt='Company logo'>
<span style='float: right; font-size: 11px; color: #666;'>Confidential</span>
<div style='clear:both;'></div>
</div>
"""
renderer. RenderingOptions . HtmlHeader = HtmlHeaderFooter ()
renderer. RenderingOptions . HtmlHeader . HtmlFragment = header_html
renderer. RenderingOptions . HtmlHeader . BaseUrl = "./"
html_body = "<h1>Project Status Update</h1><p>All milestones on track.</p>"
pdf = renderer. RenderHtmlAsPdf (html_body, "./" )
pdf. SaveAs ( "branded-report.pdf" )
from ironpdf import *
renderer = ChromePdfRenderer()
header_html = """
<div style="font-family: Arial, sans-serif; border-bottom: 2px solid #003366; padding: 8px 0;">
<img src='assets/logo.png' style='height: 40px; float: left;' alt='Company logo'>
<span style='float: right; font-size: 11px; color: #666;'>Confidential</span>
<div style='clear:both;'></div>
</div>
"""
renderer.RenderingOptions.HtmlHeader = HtmlHeaderFooter()
renderer.RenderingOptions.HtmlHeader.HtmlFragment = header_html
renderer.RenderingOptions.HtmlHeader.BaseUrl = "./"
html_body = "<h1>Project Status Update</h1><p>All milestones on track.</p>"
pdf = renderer.RenderHtmlAsPdf(html_body, "./")
pdf.SaveAs("branded-report.pdf")
Python
将HtmlHeaderFooter上,与文档主体使用的基路径相同。 这确保了页眉HTML中引用的图片和样式表可以正确解析。
页眉和页脚出现在生成的PDF的每一页上,包括多页文档。 有关在页脚中包含页面级元数据的工作示例,请参见HTML页眉和页脚代码示例 。
页眉和页脚的边距调整
添加页眉或页脚时,请增加相应的边距以防内容与页面主体重叠:
from ironpdf import *
renderer = ChromePdfRenderer ()
renderer. RenderingOptions . MarginTop = 30 # Make room for header
renderer. RenderingOptions . MarginBottom = 20 # Make room for footer
renderer. RenderingOptions . TextHeader = TextHeaderFooter ()
renderer. RenderingOptions . TextHeader . CenterText = "Internal Use Only"
renderer. RenderingOptions . TextFooter = TextHeaderFooter ()
renderer. RenderingOptions . TextFooter . CenterText = "Page {page} of {total-pages}"
pdf = renderer. RenderHtmlAsPdf ( "<h1>Internal Document</h1><p>Body content.</p>" )
pdf. SaveAs ( "margined-report.pdf" )
from ironpdf import *
renderer = ChromePdfRenderer()
renderer.RenderingOptions.MarginTop = 30 # Make room for header
renderer.RenderingOptions.MarginBottom = 20 # Make room for footer
renderer.RenderingOptions.TextHeader = TextHeaderFooter()
renderer.RenderingOptions.TextHeader.CenterText = "Internal Use Only"
renderer.RenderingOptions.TextFooter = TextHeaderFooter()
renderer.RenderingOptions.TextFooter.CenterText = "Page {page} of {total-pages}"
pdf = renderer.RenderHtmlAsPdf("<h1>Internal Document</h1><p>Body content.</p>")
pdf.SaveAs("margined-report.pdf")
Python
对于布局关键文档,将边距调整与PaperSize设置结合,以使输出完全符合打印规范。 附加的布局控件——如IronSoftwareSystemDrawingColor背景填充和CSS @page规则——在自定义边距示例 中详细介绍。
下一步是什么?
本教程涵盖了三个核心HTML到PDF的转换方法及其输出控制的渲染选项。 以下指南是在此基础上构建的,并涵盖更专业的任务:
PDF生成设置 ——深入探讨ChromePdfRenderOptions:DPI、背景渲染、CSS媒体类型、JavaScript等待策略,打印模式和屏幕模式。
HTML页眉和页脚 ——带有徽标、页码、日期和多栏布局的品牌页眉和页脚模板。
自定义边距和纸张尺寸 ——微调页面几何形状,以获得打印就绪的输出和非标准格式。
向PDF添加水印 ——将文本或图像水印印在现有或新生成的PDF上。
从PDF中提取文本 ——以编程方式读取生成或现有PDF的文本内容。
开始免费的30天试用 ,在评估期间生成无限制、无水印的PDF。 准备好生产时,请查看许可选项 以进行团队和企业部署。
常见问题解答 实例化ChromePdfRenderer,然后调用renderer.RenderHtmlAsPdf(html_string)。该方法接受任何有效的HTML,包括内联CSS和JavaScript。用pdf.SaveAs("output.pdf")保存返回的PdfDocument。
从终端运行pip install ironpdf。IronPDF for Python需要.NET 6.0 SDK或更高版本,在首次使用前必须单独安装。
可以。使用renderer.RenderUrlAsPdf("https://example.com")。IronPDF使用Chromium引擎获取页面,等待JavaScript完成执行,然后从完全渲染的DOM生成PDF。
调用renderer.RenderHtmlFileAsPdf("path/to/file.html")。IronPDF自动将样式表、图像、脚本等所有相对资产路径解析为相对于HTML文件目录的路径。
在任何PDF操作之前,使用License.LicenseKey = "YOUR-KEY"设置一个有效的许可证密钥。如果没有密钥,IronPDF将添加适合开发但不适合生产使用的平铺水印。
在renderer.RenderingOptions上设置的属性控制纸张大小(PaperSize)、方向(PaperOrientation)、边距(MarginTop、MarginLeft等)、自定义尺寸(CustomPaperWidth、CustomPaperHeight)、JavaScript执行(EnableJavaScript)等等。
将TextHeaderFooter分配给renderer.RenderingOptions.TextFooter,并在文本属性之一如RightText或CenterText中包含占位符{page}或{total-pages}。
可以。使用带<img>标签的HTML片段创建HtmlHeaderFooter。分配给renderer.RenderingOptions.HtmlHeader并设置BaseUrl以正确解析图像路径。
可以。将renderer.RenderingOptions.PaperSize设置为PdfPaperSize.Custom,然后分配CustomPaperWidth和CustomPaperHeight以毫米为单位定义任意页面尺寸。
IronPDF for Python需要.NET 6.0 SDK或更高版本。该SDK可从Microsoft .NET下载页面免费获得,并且必须在pip安装或运行IronPDF之前安装。
技术作家
Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。
...
阅读更多