如何使用C#將XML轉換為PDF

如何在IronPDF C#中將XML轉換為PDF

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronPDF透過執行XSLT轉換,將XML轉換為HTML,然後使用ChromePdfRenderer.RenderHtmlAsPdf渲染該HTML以將XML轉換為PDF的C#。 IronPDF沒有原生的XML渲染器,因此支援的路徑總是XML到XSLT/HTML到PDF。

XML儲存結構化資料,沒有任何視覺佈局,所以無法單獨在頁面上繪製。 XSLT樣式表提供了該呈現:它將每個XML元素映射到HTML標記上,而該HTML則攜帶PDF將顯示的字體、表格和樣式。 要了解更多基礎轉換,請參閱Microsoft關於XslCompiledTransform類別的指南。

快速入門:使用IronPDF將XML轉換為PDF

使用XslCompiledTransform載入XSLT樣式表,將XML文件轉換為HTML字串,然後將該字串交給IronPDF。 轉換透過IronPDF的HTML到PDF引擎完成,該引擎渲染了樣式表定義的佈局。

  1. 使用NuGet套件管理器安裝https://www.nuget.org/packages/IronPdf

    PM > Install-Package IronPdf
  2. 複製並運行這段程式碼片段。

    var transform = new System.Xml.Xsl.XslCompiledTransform();
    transform.Load("catalog.xslt");
    var html = new System.IO.StringWriter();
    transform.Transform("catalog.xml", null, html);
    new IronPdf.ChromePdfRenderer().RenderHtmlAsPdf(html.ToString()).SaveAs("output.pdf");
  3. 部署以在您的實時環境中測試

    今天就開始在您的專案中使用IronPDF,透過免費試用

    arrow pointer


我如何在C#中將XML文件轉換為PDF?

透過連結三個步驟轉換XML文件:使用RenderHtmlAsPdf。 樣式表決定每個XML元素的外觀,IronPDF通過Chromium引擎渲染它產生的HTML。

轉換透過StringBuilder中,這樣整個文件都在記憶體中,避免磁碟上的臨時文件。 那個HTML字串即是您傳遞給渲染器的內容。 一旦您持有生成的PdfDocument,您可以繼續進行操作,例如為相同報告的其他部分渲染HTML字串

XML輸入看起來像什麼?

下面的範例是一個產品目錄。 下載catalog.xml範例文件以及相應的catalog.xslt樣式表以便跟隨。

輸入

我需要使用什麼程式碼將XML文件轉換?

:path=/static-assets/pdf/content-code-examples/how-to/xml-to-pdf-from-file.cs
using System.IO;
using System.Text;
using System.Xml;
using System.Xml.Xsl;
using IronPdf;

// Load the XSLT stylesheet that maps the XML schema onto HTML
XslCompiledTransform transform = new XslCompiledTransform();
transform.Load("catalog.xslt");

// Apply the transform to the XML file and capture the HTML output
StringBuilder htmlBuilder = new StringBuilder();
XmlWriterSettings settings = new XmlWriterSettings { OmitXmlDeclaration = true, Indent = true };

using (XmlReader reader = XmlReader.Create("catalog.xml"))
using (XmlWriter writer = XmlWriter.Create(htmlBuilder, settings))
{
    transform.Transform(reader, null, writer);
}

string html = htmlBuilder.ToString();

// Render the resulting HTML as a PDF with IronPDF
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("xml-to-pdf.pdf");
Imports System.IO
Imports System.Text
Imports System.Xml
Imports System.Xml.Xsl
Imports IronPdf

' Load the XSLT stylesheet that maps the XML schema onto HTML
Dim transform As New XslCompiledTransform()
transform.Load("catalog.xslt")

' Apply the transform to the XML file and capture the HTML output
Dim htmlBuilder As New StringBuilder()
Dim settings As New XmlWriterSettings With {.OmitXmlDeclaration = True, .Indent = True}

Using reader As XmlReader = XmlReader.Create("catalog.xml")
    Using writer As XmlWriter = XmlWriter.Create(htmlBuilder, settings)
        transform.Transform(reader, Nothing, writer)
    End Using
End Using

Dim html As String = htmlBuilder.ToString()

' Render the resulting HTML as a PDF with IronPDF
Dim renderer As New ChromePdfRenderer()
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("xml-to-pdf.pdf")
$vbLabelText   $csharpLabel

輸出

我如何控制PDF的佈局和頁面設置?

在調用RenderingOptions以控制邊距、方向、頁眉和頁腳。 這些選項適用於樣式表生成的HTML,因此頁面級關注點停留在C#中,而元素級樣式則留在XSLT及其CSS中。

下面的例子保持縱向方向,修剪頂部和底部邊距,並新增連續頁眉和頁碼頁腳。 要查看完整的開關設置,請參閱渲染選項指南,並要新增每頁編號,請參閱頁碼

:path=/static-assets/pdf/content-code-examples/how-to/xml-to-pdf-advanced.cs
using System.IO;
using System.Text;
using System.Xml;
using System.Xml.Xsl;
using IronPdf;
using IronPdf.Rendering;

// Transform the XML into HTML using the XSLT stylesheet
XslCompiledTransform transform = new XslCompiledTransform();
transform.Load("catalog.xslt");

StringBuilder htmlBuilder = new StringBuilder();
using (XmlReader reader = XmlReader.Create("catalog.xml"))
using (XmlWriter writer = XmlWriter.Create(htmlBuilder, new XmlWriterSettings { OmitXmlDeclaration = true }))
{
    transform.Transform(reader, null, writer);
}

// Configure rendering options before generating the PDF
ChromePdfRenderer renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Portrait;
renderer.RenderingOptions.MarginTop = 20;
renderer.RenderingOptions.MarginBottom = 20;
renderer.RenderingOptions.TextHeader = new TextHeaderFooter
{
    CenterText = "Spring Product Catalog",
    FontSize = 12
};
renderer.RenderingOptions.TextFooter = new TextHeaderFooter
{
    RightText = "Page {page} of {total-pages}",
    FontSize = 10
};

PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlBuilder.ToString());
pdf.SaveAs("xml-to-pdf-advanced.pdf");
Imports System.IO
Imports System.Text
Imports System.Xml
Imports System.Xml.Xsl
Imports IronPdf
Imports IronPdf.Rendering

' Transform the XML into HTML using the XSLT stylesheet
Dim transform As New XslCompiledTransform()
transform.Load("catalog.xslt")

Dim htmlBuilder As New StringBuilder()
Using reader As XmlReader = XmlReader.Create("catalog.xml")
    Using writer As XmlWriter = XmlWriter.Create(htmlBuilder, New XmlWriterSettings With {.OmitXmlDeclaration = True})
        transform.Transform(reader, Nothing, writer)
    End Using
End Using

' Configure rendering options before generating the PDF
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Portrait
renderer.RenderingOptions.MarginTop = 20
renderer.RenderingOptions.MarginBottom = 20
renderer.RenderingOptions.TextHeader = New TextHeaderFooter With {
    .CenterText = "Spring Product Catalog",
    .FontSize = 12
}
renderer.RenderingOptions.TextFooter = New TextHeaderFooter With {
    .RightText = "Page {page} of {total-pages}",
    .FontSize = 10
}

Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(htmlBuilder.ToString())
pdf.SaveAs("xml-to-pdf-advanced.pdf")
$vbLabelText   $csharpLabel

輸出

Icon Quote related to 輸出

我最喜歡的程式庫是IronPDF。它允許快速高效地操作PDF文件。它還有許多有價值的功能,例如導出到PDF/A格式和數位簽署PDF文件。

Milan Jovanovic related to 輸出

Milan Jovanovic

Microsoft MVP

查看案例研究
Icon Quote related to 輸出

IronOCR意味著我們每年可以從手動處理中節省$40,000,同時提高生產力,釋放資源以進行高影響的任務。我會強烈推薦它。

Brent Matzelle related to 輸出

Brent Matzelle

首席技術官,OPYN

查看案例研究
Icon Quote related to 輸出

IronSuite在我們的運營中扮演著至關重要的角色。這些工具增加了包括建立平面圖和改善庫存管理在內的業務效率。

David Jones related to 輸出

David Jones

首席軟體工程師,Agorus Build

查看案例研究

我如何處理複雜的XML模式?

當XML模式需要條件格式或存在於文件之外的資料時,通過XsltArgumentList將運行時值傳遞給樣式表。 樣式表通過<!-- xsl:param>讀取每個值,因此相同的模板可以標記低庫存、列印報告日期或基於元素值分支,而不需要更改C#程式碼。

這種模式將轉換邏輯保留在XSLT中,巢狀元素、屬性和<xsl:choose>分支處理結構。 下載catalog-params.xslt樣式表以查看其使用的參數和條件標記。

:path=/static-assets/pdf/content-code-examples/how-to/xml-to-pdf-parameters.cs
using System;
using System.IO;
using System.Text;
using System.Xml;
using System.Xml.Xsl;
using IronPdf;

// Pass runtime values into the stylesheet with an XsltArgumentList
XsltArgumentList xsltArgs = new XsltArgumentList();
xsltArgs.AddParam("reportDate", "", DateTime.Now.ToString("MMMM d, yyyy"));
xsltArgs.AddParam("minStock", "", 50);

// Load a parameterized stylesheet that reads <xsl:param> values
XslCompiledTransform transform = new XslCompiledTransform();
transform.Load("catalog-params.xslt");

StringBuilder htmlBuilder = new StringBuilder();
using (XmlReader reader = XmlReader.Create("catalog.xml"))
using (XmlWriter writer = XmlWriter.Create(htmlBuilder, new XmlWriterSettings { OmitXmlDeclaration = true }))
{
    transform.Transform(reader, xsltArgs, writer);
}

// Render the parameterized HTML as a PDF
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlBuilder.ToString());
pdf.SaveAs("xml-to-pdf-parameters.pdf");
Imports System
Imports System.IO
Imports System.Text
Imports System.Xml
Imports System.Xml.Xsl
Imports IronPdf

' Pass runtime values into the stylesheet with an XsltArgumentList
Dim xsltArgs As New XsltArgumentList()
xsltArgs.AddParam("reportDate", "", DateTime.Now.ToString("MMMM d, yyyy"))
xsltArgs.AddParam("minStock", "", 50)

' Load a parameterized stylesheet that reads <xsl:param> values
Dim transform As New XslCompiledTransform()
transform.Load("catalog-params.xslt")

Dim htmlBuilder As New StringBuilder()
Using reader As XmlReader = XmlReader.Create("catalog.xml")
    Using writer As XmlWriter = XmlWriter.Create(htmlBuilder, New XmlWriterSettings With {.OmitXmlDeclaration = True})
        transform.Transform(reader, xsltArgs, writer)
    End Using
End Using

' Render the parameterized HTML as a PDF
Dim renderer As New ChromePdfRenderer()
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(htmlBuilder.ToString())
pdf.SaveAs("xml-to-pdf-parameters.pdf")
$vbLabelText   $csharpLabel

輸出


資訊圖表

使用XSLT將XML轉換為HTML,展示了目錄資料轉換為表格格式

結論

您透過XsltArgumentList如何擴展結果以控制佈局和基於模式的格式。 由於輸出是普通的HTML,IronPDF中驅動頁眉、頁腳和紙張尺寸的相同渲染選項直接適用於您的目錄。 一個可運行的XML至PDF範例專案可作為起點下載

常見問題

我如何在C#中將XML轉換為PDF?

IronPDF沒有本地XML渲染器,因此支持的路徑是XML到XSLT/HTML到PDF。使用XslCompiledTransform載入XSLT樣式表,將您的XML轉換為HTML字串,然後調用IronPDF的ChromePdfRenderer上的RenderHtmlAsPdf來生成最終的PDF文件。

為什麼我應該使用XSLT進行XML到PDF的轉換?

XSLT提供了XML到PDF轉換的最靈活方法,因為它可以作為XML到HTML的自定義翻譯器。結合IronPDF的Chrome渲染引擎,這種方法可以確保像素級精確的轉換,同時保持在最終PDF文件中對您的XML資料格式的完全控制。

實現XML到PDF轉換的步驟是什麼?

實施包括5個步驟:1)安裝IronPDF C#程式庫,2)使用Load方法載入您的XSLT模板,3)使用Transform方法將XML轉換為HTML,4)使用IronPDF的自定義渲染選項將HTML渲染為PDF,5)將PDF文件匯出到期望的位址。

我可以為我的XML到PDF轉換應用自定義樣式嗎?

是的,您可以應用自定義CSS樣式來提升PDF輸出的視覺效果。IronPDF支持響應式CSS樣式,使您可以從XML資料建立出專業格式化的PDF,完全控制字體、佈局和視覺元素。

是否可以在一行程式碼中將XML轉換為PDF?

是的,IronPDF通過連結方法實現一行XML到PDF的轉換:new IronPdf.ChromePdfRenderer().RenderHtmlAsPdf(XslCompiledTransform.Load("template.xslt").Transform(XmlReader.Create("data.xml"), new StringWriter()).ToString()).SaveAs("output.pdf");

用於XML到PDF轉換的渲染引擎是什麼?

IronPDF使用Chromium渲染引擎渲染您的XSLT轉換生成的HTML,產生像素級精確的輸出,並符合現代Web標準。XML本身不會被直接渲染;生成PDF的是轉換後的HTML。

Curtis Chau
技術作家

Curtis Chau擁有Carleton大學的電腦科學學士學位,專精於前端開發,擁有Node.js、TypeScript、JavaScript和React的專業知識。Curtis熱衷於建立直觀且美觀的使用者介面,喜愛使用現代框架並建立結構良好、視覺吸引力的手冊。

除了開發,Curtis對物聯網(IoT)有濃厚的興趣,探索創新的方法來整合硬體和軟體。在空閒時間,他喜歡玩遊戲和建立Discord機器人,結合他對技術的熱愛與創造力。

由...審核
Jeff Fritz
Jeffrey T. Fritz
首席計劃經理 - .NET社區團隊
Jeff還是.NET和Visual Studio團隊的首席計劃經理。他是.NET Conf虛擬會議系列的執行製作人,並主持每週兩次的開發者直播節目'Fritz and Friends',在節目中討論技術並與觀眾一起撰寫程式碼。Jeff撰寫工作坊、演講和內容計劃,為微軟開發者的最大活動如Microsoft Build、Microsoft Ignite、.NET Conf和Microsoft MVP Summit提供內容支援。
準備開始了嗎?
Nuget 下載 20,296,129 | 版本: 2026.7 剛剛發布
Still Scrolling Icon

還在捲動嗎?

想快速獲得證明嗎? PM > Install-Package IronPdf
執行範例 看您的HTML變成PDF。