如果您正在生成 HTML 報告、發票或門戶頁面,且需要批量產生 PDF,關鍵需求是跨機器的可重複輸出。本分步指南展示如何使用 Aspose.HTML for Python via .NET 在 Python 中批量將多個 HTML 檔案轉換為 PDF。您將構建一個基於資料夾的轉換器,然後將其擴展至處理大量 SVG 的頁面以及嵌入字型,以實現一致的渲染。


為何使用 Aspose.HTML 進行 HTML 到 PDF 的批量轉換?

Aspose.HTML for .NET 是一個文件渲染 API,能夠從檔案或 URL 加載 HTML 內容,並以對渲染選項的精細控制導出為 PDF。對於批量轉換場景,主要優勢包括

  • 可靠的渲染,無需瀏覽器自動化
  • 可控制 PDF 選項,例如頁面大小、邊距和背景渲染
  • 在伺服器環境中可預測的執行
  • 能夠在多次轉換中標準化字體和資源

批量將多個 HTML 文件轉換為 PDF(使用 Python)——逐步指南

步驟 1:設定您的環境

您需要 Python 和與部署環境相匹配的 .NET 執行時。如果您計劃在伺服器上執行轉換,請同樣在該伺服器上安裝相同的執行時。

安裝 Aspose.HTML for Python via .NET

執行:

pip install aspose-html-net

如果您使用虛擬環境:

python -m venv .venv
.venv\Scripts\activate
pip install aspose-html-net

步驟 2:建立輸入與輸出資料夾(可選)

在您的專案目錄中建立兩個資料夾:

  • input_html 用於 HTML 檔案和資產
  • output_pdf 用於生成的 PDF

可靠資產解析的建議結構:

  • input_html

  • report1.html

    • report2.html
    • styles
  • site.css

    • images
  • logo.png

    • fonts
  • Inter Regular.ttf

將 CSS、圖像和字體保留在同一根目錄下,以確保相對路徑始終正常工作。

第 3 步:編寫批次轉換腳本

此腳本會掃描輸入資料夾,尋找 .html.htm 檔案,並將每個檔案轉換為 PDF,保留相同的相對路徑於輸出資料夾下。它還會記錄每個檔案的成功與失敗情況。

程式碼範例:批次將資料夾中的 HTML 檔案轉換為 PDF。

本節實作了企業自動化中使用的主要批次模式。它會列舉 HTML 檔案,建立確定性的輸出路徑,轉換每個文件,並返回一個可用於監控和重新執行的摘要報告。

請遵循以下步驟:

  1. 設定輸入和輸出資料夾。
  2. 列舉所有 HTML 檔案。
  3. 載入每個 HTML 文件。
  4. 將每個文件轉換為 PDF。
  5. 使用確定性的名稱儲存 PDF。

此程式碼範例示範如何使用 Aspose.HTML for Python via .NET 將一系列 HTML 檔案轉換為 PDF。

注意: 此程式碼範例展示了核心功能。在將其用於您的專案之前,請確保更新檔案路徑(inputoutput 等)以符合實際檔案位置,驗證所有必要的相依性已正確安裝,並在開發環境中徹底測試。如遇任何問題,請參閱文件或聯絡支援團隊尋求協助。

步驟 4:執行轉換器並驗證輸出

執行:

python batch_html_to_pdf.py

驗證:

  • PDF 已在 output 中建立
  • 資料夾結構與 input 相同
  • 版面符合預期
  • CSS 與圖像正確顯示

如果缺少 CSS,請跳轉到 Fix Missing CSS, Images, and Broken Relative Paths 部分,因為這幾乎總是路徑或資產打包問題。


通過嵌入字體使字體渲染保持一致

如果您正在生成發票或合規文件,字體替換可能會改變換行和分頁。最可靠的解決方案是將字體與您的模板一起打包,並使用 CSS 加載它們。

程式碼範例:將 HTML 轉換為 PDF 並嵌入字型

本節聚焦於模板打包。
轉換程式碼保持不變。
您可以使用 CSS @font-face 並搭配相對路徑來嵌入字型。

請遵循以下步驟:

  1. 將所需字體放置在可訪問的資料夾中。
  2. 使用 font-face 規則在 CSS 中引用字體。
  3. 確保 HTML 通過相對路徑加載 CSS 和字體。
  4. 將 HTML 轉換為 PDF,並驗證字體顯示。

資料夾結構:

  • input_html

  • invoice.html

    • styles
  • invoice.css

    • fonts
  • Inter Regular.ttf

    • Inter Bold.ttf

CSS 範例:

@font-face {
  font-family: "Inter";
  src: url("../fonts/Inter Regular.ttf") format("truetype");
  font-weight: 400;
  font-style: normal;
}

@font-face {
  font-family: "Inter";
  src: url("../fonts/Inter Bold.ttf") format("truetype");
  font-weight: 700;
  font-style: normal;
}

body {
  font-family: "Inter", Arial, sans-serif;
}

再次執行您的批次腳本並驗證:

  • PDF 使用了預期的字體。
  • 間距和分頁符合您預期的版面配置。

修復缺少的 CSS、圖像和破損的相對路徑

如果您的 PDF 輸出看起來沒有樣式或缺少圖像,請使用此檢查清單:

  1. 確認 HTML 中的所有資產引用相對於 HTML 檔案的位置。
  2. 將模板和資產保留在同一根目錄下,例如 input
  3. 避免僅在您的機器上存在的絕對路徑。
  4. 避免使用伺服器無法存取的 URL 提供的資產。

快速測試方法是本機打開 HTML 檔案,並確認它從您部署到生產環境的相同資料夾結構中載入 CSS 和圖片。


結論

您現在擁有一套完整的逐步方法,可使用 Aspose.HTML 在 Python via .NET 中批量將多個 HTML 文件轉換為 PDF。自動化多個 HTML 文件的批量轉換可簡化企業系統的文件生成。通過安裝 SDK、準備清晰的來源列表、配置嵌入字體和 SVG 保留的 PDF 選項,以及優雅地處理錯誤,您可以構建一個可靠的轉換管道,支援數千頁的規模。SDK 的進度事件和豐富的 API 使得監控長時間運行的作業變得簡單,並確保輸出品質的一致性。

對於正式環境使用,您可以透過造訪定價頁面來購買授權。或者,您可以申請臨時授權以進行評估。於Aspose.HTML 部落格探索更多教學,並加入論壇社群以獲得額外支援。

常見問題

1. 我可以一次性批量轉換 HTML 和 HTM 檔案嗎?

是的。在您的批處理腳本中,掃描輸入資料夾時同時包含 .html.htm 副檔名,然後將每個檔案轉換為 PDF,並保持相同的相對輸出結構。

2. 為什麼我的 PDF 缺少 CSS 樣式或圖像?

這通常發生在相對路徑在轉換環境中無法解析時。請將 CSS、圖像和字體保留在相同的 input 根目錄下,在 HTML 和 CSS 中使用相對路徑,並避免使用特定機器的絕對路徑。

3. 如何確保 PDF 輸出在不同伺服器上保持一致?

將所需字體與模板捆綁,並使用 CSS @font-face 規則引用它們。還要將所有資產保持本地且有版本控制,這樣轉換器在每個環境中都能看到相同的 HTML、CSS、圖像和字體。

4. Aspose.HTML 在生成的 PDF 中是否保留 SVG 的品質?

是的。內嵌的 SVG 元素通常會在 PDF 中以向量內容呈現。轉換後,放大圖表和圖示以確認邊緣仍然清晰,且 SVG 內的文字使用了預期的字體。

5. 在轉換數百或數千個檔案時,我該如何處理失敗?

獨立處理檔案,對每個檔案捕獲例外,並寫入摘要報告,列出成功和失敗的項目。這樣您只需重新執行失敗的檔案,而無需重複整個批次。

閱讀更多