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程式語言。 本教程專注於使用 IronPDF 在 Python 腳本中轉換 HTML 內容,無論是以文件形式還是標記形式。

有關在 .NET 應用程式中將 HTML 轉換為 PDF 的單獨教程,請參考以下内容。這裡.


概述


入門

立即在您的專案中使用IronPDF,並享受免費試用。

第一步:
green arrow pointer

1. 安裝 IronPDF PDF 函式庫用於 Python

要在Python中安裝IronPDF庫,您可以使用流行的包管理器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
  • 將網址轉換為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 To Pdf 5 related to 2.4. 從 HTML 字串建立 PDF

將 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 To Pdf Html String To Pdf related to 2.4. 從 HTML 字串建立 PDF

將HTML渲染為PDF 該方法能夠呈現各種類型的HTML內容。如果它能在Chrome瀏覽器中顯示,那麼 將HTML渲染為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")
PYTHON

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

Html To Pdf 7 related to 2.5. 從網址建立 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 文件.