如何在IronPDF C#中將XML轉換為PDF
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引擎完成,該引擎渲染了樣式表定義的佈局。
-
使用NuGet套件管理器安裝https://www.nuget.org/packages/IronPdf
-
複製並運行這段程式碼片段。
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"); -
部署以在您的實時環境中測試
今天就開始在您的專案中使用IronPDF,透過免費試用
簡化工作流程(5個步驟)
- 下載將XML轉換為PDF的C#程式庫
- 使用
Load方法匯入XSLT樣式表 - 使用
Transform方法將XML轉換為HTML字串 - 使用
RenderHtmlAsPdf將HTML渲染為PDF - 將PDF文件儲存到所需位置
我如何在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")
輸出
我如何控制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")
輸出
我如何處理複雜的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")
輸出
資訊圖表
結論
您透過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。

