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, Java,和 Python 編程語言。本教程專門針對在 Python 腳本中使用 IronPDF 來轉換 HTML 內容,無論其形式是文件還是標記。

如需有關如何在 .NET 應用程序中將 HTML 轉換為 PDF 的獨立教程,請參閱以下內容 這裡.


概述


入門

1. 安裝IronPDF PDF Library for 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 方法還可以處理位於本地或網絡文件夾中的圖片、樣式表和腳本等外部資源。以下範例展示了如何從引用了 CSS 文件和存儲在 assets 文件夾中的圖片的 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")
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標記是為了您的方便提供的:

<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

假設我們有一個本地的 HTML 文件以及其相關的 CSS 和 JavaScript 文件保存在名為 "invoices" 的文件夾中,我們可以使用 IronPDF 來將示例 HTML 文件轉換為 PDF,使用以下的 Python 代碼:

# 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檔案.
*[下載](https://ironpdf.com/downloads/python-extract-text-from-pdf.zip) 該軟體產品。