XML无法直接转PDF,需经解析与渲染:常用路径为XML→XSLT→HTML→PDF(规范可维护),或XML→DOM→PDF库直绘(灵活但耦合高),亦可用PuppeteerSharp调用浏览器引擎(效果好但依赖Chromium)。
XML文件本身是纯文本结构,不能直接显示为PDF,需要先解析内容、生成布局(如HTML或XPS),再渲染为PDF。C#中没有内置的XML→PDF转换器,但可通过组合现有技术实现:常用路径是 XML → XSLT → HTML → PDF 或 XML → DOM → 自定义布局 → PDF。
这是最规范、可维护性高的方式,适合结构清晰、有对应XSL样式表的XML(如RSS、定制报表XML)。
XslCompiledTransform 执行转换,输出HTML字符串或文件示例关键代码:
var xslt = new XslCompiledTransform();
xslt.Load("report.xslt");
using var writer = new StringWriter();
xslt.Transform("data.xml", null, writer);
string html = writer.ToString();
// 后续用 QuestPDF 将 html 渲染为 PDF(需额外 NuGet 包)
如果XML结构固
定(如配置型XML、订单数据),可跳过HTML,直接读取XML节点,用PDF库逐元素绘制。
XmlDocument 或 XDocument 加载XML优点是完全可控、无HTML兼容性问题;缺点是XML结构变动时需同步改C#解析逻辑。
适合XML含复杂样式、图表或需完整CSS支持的场景。
注意:需部署Chromium运行时,体积较大,但准确率高、开发直观。
XML转PDF不是“一键操作”,容易卡在细节:
disable-output-escaping="yes" 控制是否保留@media print 或PDF库的分页API(如QuestPDF的 .PageBreak())显式处理