Comparação de conversores de HTML para PDF: bibliotecas gratuitas e pagas for .NET
O XML não pode ser renderizado diretamente para PDF, então o caminho ocorre em duas etapas: uma folha de estilo XSLT transforma o XML em HTML, depois IronPDF renderiza esse HTML para PDF através de seu motor Chrome. IronPDF possui somente a etapa final; XSLT faz a formatação. Essa divisão mantém dados (o XML) e apresentação (a folha de estilo) separados, e os casos de uso abaixo todos se apoiam nisso.
using IronPdf;
using System.IO;
using System.Xml;
using System.Xml.Xsl;
var transform = new XslCompiledTransform();
transform.Load("invoice.xslt");
using var writer = new StringWriter();
using (var reader = XmlReader.Create("invoice.xml"))
{
transform.Transform(reader, null, writer);
}
new ChromePdfRenderer()
.RenderHtmlAsPdf(writer.ToString())
.SaveAs("invoice.pdf");
using IronPdf;
using System.IO;
using System.Xml;
using System.Xml.Xsl;
var transform = new XslCompiledTransform();
transform.Load("invoice.xslt");
using var writer = new StringWriter();
using (var reader = XmlReader.Create("invoice.xml"))
{
transform.Transform(reader, null, writer);
}
new ChromePdfRenderer()
.RenderHtmlAsPdf(writer.ToString())
.SaveAs("invoice.pdf");
Imports IronPdf
Imports System.IO
Imports System.Xml
Imports System.Xml.Xsl
Dim transform As New XslCompiledTransform()
transform.Load("invoice.xslt")
Using writer As New StringWriter()
Using reader As XmlReader = XmlReader.Create("invoice.xml")
transform.Transform(reader, Nothing, writer)
End Using
Dim renderer As New ChromePdfRenderer()
renderer.RenderHtmlAsPdf(writer.ToString()).SaveAs("invoice.pdf")
End Using
(Nota: Transform escreve em StringWriter; ele não retorna o HTML, então você lê writer.ToString() após a chamada.)
Faturamento eletrônico e formatos de fatura legíveis por máquina
Aqui, o pipeline é mais vantajoso. Padrões como UBL, Factur-X e ZUGFeRD transportam faturas como dados XML, não como documentos que qualquer um pode ler. Uma folha de estilo transforma esse XML em uma fatura formatada, e IronPDF produz o PDF que uma pessoa realmente recebe.
Feeds de dados regulados em finanças, governo e saúde
Essas indústrias trocam XML estruturado: declarações fiscais, demonstrações financeiras, documentos clínicos, submissões regulatórias. Cada esquema mapeia para um layout impresso conforme as normas através de sua própria folha de estilo, com a lógica de transformação mantida fora do seu C#.
Catálogos de produtos e listas de preços
Um feed de catálogo em XML torna-se um folheto ou tabela formatada por meio de uma folha de estilo, com o estilo sendo tratado por HTML e CSS familiares em vez de uma linguagem PDF proprietária.
Uma fonte, muitas variantes de documentos
Como a apresentação vive no modelo, uma fonte XML pode produzir várias saídas (fatura do cliente, cópia interna, versão localizada) trocando folhas de estilo. Sem alterações nos dados, sem recompilação.
Documentos parametrizados e condicionais
Passe valores em tempo de execução na transformação com XsltArgumentList, para que um modelo possa ramificar-se em moeda, região ou status de rascunho antes de renderizar:
var args = new XsltArgumentList();
args.AddParam("currency", "", "AUD");
using var writer = new StringWriter();
using (var reader = XmlReader.Create("invoice.xml"))
{
transform.Transform(reader, args, writer);
}
var args = new XsltArgumentList();
args.AddParam("currency", "", "AUD");
using var writer = new StringWriter();
using (var reader = XmlReader.Create("invoice.xml"))
{
transform.Transform(reader, args, writer);
}
Imports System.Xml
Imports System.Xml.Xsl
Imports System.IO
Dim args As New XsltArgumentList()
args.AddParam("currency", "", "AUD")
Using writer As New StringWriter()
Using reader As XmlReader = XmlReader.Create("invoice.xml")
transform.Transform(reader, args, writer)
End Using
End Using
Quando não usar isso
Para uma estrutura XML simples ou uma conversão única, a camada XSLT é um overhead; parsie o XML e construa o HTML diretamente. A abordagem da folha de estilo prova seu valor em sistemas que lidam com esquemas variados ou que precisam de lógica de transformação sustentável e reutilizável.
Por que a divisão é o ponto
A força do pipeline está nessa separação. IronPDF lhe dá renderização pixel precisa na última etapa, mas a flexibilidade, múltiplos formatos, layouts condicionais, independência de esquema, tudo vem de manter a transformação em XSLT em vez de no código.
Perguntas frequentes
O IronPDF pode converter XML diretamente em PDF?
Não diretamente. O pipeline funciona em duas etapas: uma folha de estilo XSLT transforma o XML em HTML, depois o IronPDF renderiza esse HTML em PDF através do seu mecanismo Chrome. O IronPDF lida apenas com a etapa de renderização final.
Como faço para converter XML em PDF em C# usando XSLT e IronPDF?
Carregue o arquivo XSLT com XslCompiledTransform, transforme o XML em uma string HTML usando um StringWriter, depois passe essa string para ChromePdfRenderer.RenderHtmlAsPdf. Note que Transform escreve no writer — chame writer.ToString() para obter o HTML após a conclusão da transformação.
Quais são as vantagens de usar XSLT para transformar XML antes de renderizar em PDF?
Manter dados (XML) e apresentação (folha de estilo XSLT) separados significa que uma fonte XML pode produzir múltiplas variantes de documentos (fatura para cliente, cópia interna, versão localizada) trocando as folhas de estilo. A lógica de transformação fica fora do código C# e permanece reutilizável em vários esquemas.
Posso passar parâmetros na transformação XSLT em tempo de execução?
Sim. Use XsltArgumentList com AddParam para passar valores como moeda, região ou status de rascunho para a folha de estilo antes da renderização. O modelo pode então ramificar nesses valores para produzir saída condicional.
Quais padrões de faturamento eletrônico este pipeline pode manipular?
O pipeline XSLT pode manipular qualquer padrão de fatura baseado em XML, incluindo UBL (Universal Business Language), Factur-X e ZUGFeRD. Eles carregam dados de fatura como XML estruturado; uma folha de estilo XSLT correspondente transforma cada formato em um layout HTML legível por humanos, que o IronPDF renderiza para PDF.

