如何使用 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转换为C#中的PDF,该转换将XML转化为HTML,然后使用ChromePdfRenderer.RenderHtmlAsPdf渲染该HTML。 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

微软MVP

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

IronOCR 意味着我们每年可以节省 $40,000 的人工处理成本,同时提高生产力,并释放资源用于高影响任务。我强烈推荐它。

Brent Matzelle related to 输出

Brent Matzelle

首席技术官,OPYN

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

Iron Suite 在我们的运营中起着至关重要的作用。这些工具提高了业务各方面的效率,包括创建平面图和改善库存管理。

David Jones related to 输出

David Jones

首席软件工程师,Agorus Build

查看案例研究

我如何处理复杂的XML模式?

在XML模式需要条件格式或存在于文档之外的数据时,通过XsltArgumentList将运行时值传递到样式表中。 样式表通过`


信息图表

使用 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是经过转换的HTML。

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

除了开发之外,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 峰会在内的最大型微软开发者活动的内容。
准备开始了吗?
Nuget 下载 19,936,792 | 版本: 2026.7 刚刚发布
Still Scrolling Icon

还在滚动吗?

想快速获得证据? PM > Install-Package IronPdf
运行示例看着你的HTML代码变成PDF文件。