首頁 >後端開發 >C++ >如何使用 iTextSharp 將 HTML 轉換為 PDF:HTMLWorker 與 XMLWorker?

如何使用 iTextSharp 將 HTML 轉換為 PDF:HTMLWorker 與 XMLWorker?

Linda Hamilton
Linda Hamilton原創
2025-01-27 03:11:12164瀏覽

How to Convert HTML to PDF Using iTextSharp: HTMLWorker vs. XMLWorker?

iTextSharp:有效率地將 HTML 轉換為 PDF

使用 iTextSharp 將 HTML 文件轉換為 PDF 格式需要結構化方法。 重要的是要記住,HTML 和 PDF 是不同的格式,因此在轉換過程中需要小心處理。

了解 iTextSharp 的 HTML 處理

iTextSharp 具有解析 HTML 和 CSS 的能力,但缺乏對 ASP.NET、MVC 或 Razor 等框架的支援。 您負責從您選擇的框架中提取 HTML 內容; iTextSharp 不提供此功能。

解析器選擇:HTMLWorker 與 XMLWorker

iTextSharp 提供了兩種 HTML 標籤解析選項:HTMLWorker 和 XMLWorker。 雖然以前使用的是 HTMLWorker,但現在建議使用 XMLWorker 解析器。 XMLWorker 擁有增強的可擴展性和卓越的 CSS 支援。

程式碼範例:使用 HTMLWorker 和 XMLWorker 解析 HTML 標籤

以下 C# 程式碼片段說明如何使用這兩種方法解析 HTML 標籤:

<code class="language-csharp">// Example HTML
string html = "...";

// Parsing with HTMLWorker (CSS ignored)
using (var htmlWorker = new iTextSharp.text.html.simpleparser.HTMLWorker(doc))
{
    using (var sr = new StringReader(html))
    {
        htmlWorker.Parse(sr);
    }
}

// Parsing with XMLWorker (CSS supported)
using (var srHtml = new StringReader(html))
{
    iTextSharp.tool.xml.XMLWorkerHelper.GetInstance().ParseXHtml(writer, doc, srHtml);
}</code>

利用 XMLWorker 進行 CSS 支援

XMLWorker 允許無縫整合 CSS 樣式表。 以下範例示範了這一點:

<code class="language-csharp">string css = "...";

// Convert CSS and HTML strings to memory streams
using (var msCss = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(css)))
using (var msHtml = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(html)))
{
    iTextSharp.tool.xml.XMLWorkerHelper.GetInstance().ParseXHtml(writer, doc, msHtml, msCss);
}</code>

重要提示: iTextSharp 對 HTML 和 CSS 功能的支援並不詳盡。 有關支援的功能和限制的全面詳細信息,請參閱官方 iTextSharp 文件。

以上是如何使用 iTextSharp 將 HTML 轉換為 PDF:HTMLWorker 與 XMLWorker?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn