FO.NET vs IronPDF: Guia de Comparação Técnica
Quando os desenvolvedores .NET observam soluções de geração de PDF, FO.NET se destaca como uma ferramenta especializada para converter documentos XSL-FO para PDF. Não entanto, sua dependência da linguagem XSL-FO desatualizada, falta de suporte a HTML/CSS e status de manutenção descontinuado levam muitas equipes a considerar alternativas.IronPDFoferece uma solução moderna usando padrões web HTML/CSS com os quais a maioria dos desenvolvedores já está familiarizada, apresentando um motor de renderização Chromium e atualizações mensais regulares.
Esta comparação revisa ambas as bibliotecas em aspectos técnicos relevantes para ajudar desenvolvedores e arquitetos profissionais a tomar decisões informadas para suas necessidades de PDF no .NET.
Compreendendo FO.NET
FO.NET (também conhecido como FoNet) é uma biblioteca open-source projetada para converter documentos de Objeto de Formatação XSL (XSL-FO) em PDFs usando C#. A biblioteca opera sob a licença Apache 2.0 e mapeia diretamente a linguagem XSL-FO para o formato PDF.
FO.NET usa FonetDriver como sua classe principal, com o método de fábrica Make() criando instâncias de driver e métodos Render() processando fluxos de entrada XSL-FO para produzir fluxos de saída PDF. A configuração ocorre dentro da própria marcação XSL-FO usando elementos como fo:simple-page-master, fo:layout-master-set, e atributos de formatação para margens, tamanhos de página e fontes.
Uma limitação significativa é que FO.NET requer conhecimento de XSL-FO—uma linguagem baseada em XML que é uma especificação do W3C de 2001 sem atualizações desde 2006. A biblioteca não oferece suporte a HTML ou CSS e não pode renderizar páginas da web diretamente. O XSL-FO é amplamente considerado obsoleto no campo da tecnologia atual, com menos de 1% dos desenvolvedores tendo expertise nele em comparação com mais de 98% que conhecem HTML/CSS.
O repositório original do CodePlex está desativado, e as bifurcações do GitHub não estão sendo mantidas ativamente. FO.NET tem dependências internas do System.Drawing que o impedem de funcionar no Linux/macOS, limitando-o a implantação apenas no Windows.
Entendendo o IronPDF
IronPDF é uma biblioteca PDF .NET que usa HTML/CSS para estilização e layout de documentos, usando padrões web comuns no desenvolvimento. A biblioteca usa um mecanismo de renderização Chromium, fornecendo suporte completo ao CSS3, incluindo layouts Flexbox e Grid, além de execução de JavaScript.
IronPDF usa ChromePdfRenderer como sua classe principal de renderização, com RenderingOptions fornecendo configuração programática para tamanho de página, margens, cabeçalhos, rodapés e outras configurações de PDF. A biblioteca suporta renderização de URL direta, renderização de cadeia de caracteres HTML e renderização de arquivo HTML, produzindo objetos PdfDocument que podem ser salvos, mesclados, protegidos ou manipulados ainda mais.
IronPDF é mantido ativamente com lançamentos mensais, suporta implantação verdadeiramente multiplataforma (Windows, Linux, macOS) e fornece documentação e tutoriais completos.
Comparação de Arquitetura e Tecnologia
A principal diferença entre essas bibliotecas PDF .NET está em seu formato de entrada e base tecnológica.
| Aspecto | FO.NET | IronPDF |
|---|---|---|
| Formato de Entrada | XSL-FO (XML obsoleto) | HTML/CSS (padrões modernos da web) |
| Curva de Aprendizagem | Íngreme (experiência em XSL-FO) | Gentil (conhecimento de HTML/CSS) |
| Manutenção | Abandonado | Manutenção ativa mensal |
| Suporte da plataforma | Somente para Windows | Verdadeiramente multiplataforma |
| Suporte a CSS | None | CSS3 completo (Flexbox, Grid) |
| JavaScript | None | Suporte completo aJavaScript |
| Renderização de URL | Não suportado | Embutido |
| Recursos Modernos | Limitado | Cabeçalhos, rodapés, marcas d'água, segurança |
| Documentação | Desatualizado | Tutoriais completos |
FO.NET foi projetado quando esperava-se que o XSL-FO se tornasse um padrão para formatação de documentos. Isso não aconteceu—HTML/CSS se tornaram o formato universal de documentos. A maioria dos recursos de XSL-FO são de 2005-2010, tornando cada vez mais difícil encontrar informações atuais ou suporte da comunidade.
Comparação de código: operações comuns em PDF
Conversão de HTML para PDF
A operação mais fundamental demonstra a diferença de modelo entre as abordagens XSL-FO e HTML.
FO.NET:
// NuGet: Install-Package Fonet
using Fonet;
using Fonet.Render.Pdf;
using System.IO;
using System.Xml;
class Program
{
static void Main()
{
// FoNet requires XSL-FO format, not HTML
// First convert HTML to XSL-FO (manual process)
string xslFo = @"<?xml version='1.0' encoding='utf-8'?>
<fo:root xmlns:fo='http://www.w3.org/1999/XSL/Format'>
<fo:layout-master-set>
<fo:simple-page-master master-name='page'>
<fo:region-body/>
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference='page'>
<fo:flow flow-name='xsl-region-body'>
<fo:block>Hello World</fo:block>
</fo:flow>
</fo:page-sequence>
</fo:root>";
FonetDriver driver = FonetDriver.Make();
driver.Render(new StringReader(xslFo),
new FileStream("output.pdf", FileMode.Create));
}
}
// NuGet: Install-Package Fonet
using Fonet;
using Fonet.Render.Pdf;
using System.IO;
using System.Xml;
class Program
{
static void Main()
{
// FoNet requires XSL-FO format, not HTML
// First convert HTML to XSL-FO (manual process)
string xslFo = @"<?xml version='1.0' encoding='utf-8'?>
<fo:root xmlns:fo='http://www.w3.org/1999/XSL/Format'>
<fo:layout-master-set>
<fo:simple-page-master master-name='page'>
<fo:region-body/>
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference='page'>
<fo:flow flow-name='xsl-region-body'>
<fo:block>Hello World</fo:block>
</fo:flow>
</fo:page-sequence>
</fo:root>";
FonetDriver driver = FonetDriver.Make();
driver.Render(new StringReader(xslFo),
new FileStream("output.pdf", FileMode.Create));
}
}
Imports Fonet
Imports Fonet.Render.Pdf
Imports System.IO
Imports System.Xml
Module Program
Sub Main()
' FoNet requires XSL-FO format, not HTML
' First convert HTML to XSL-FO (manual process)
Dim xslFo As String = "<?xml version='1.0' encoding='utf-8'?>" & _
"<fo:root xmlns:fo='http://www.w3.org/1999/XSL/Format'>" & _
"<fo:layout-master-set>" & _
"<fo:simple-page-master master-name='page'>" & _
"<fo:region-body/>" & _
"</fo:simple-page-master>" & _
"</fo:layout-master-set>" & _
"<fo:page-sequence master-reference='page'>" & _
"<fo:flow flow-name='xsl-region-body'>" & _
"<fo:block>Hello World</fo:block>" & _
"</fo:flow>" & _
"</fo:page-sequence>" & _
"</fo:root>"
Dim driver As FonetDriver = FonetDriver.Make()
driver.Render(New StringReader(xslFo),
New FileStream("output.pdf", FileMode.Create))
End Sub
End Module
IronPDF:
// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string html = "<h1>Hello World</h1><p>This is HTML content.</p>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string html = "<h1>Hello World</h1><p>This is HTML content.</p>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}
Imports IronPdf
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim html As String = "<h1>Hello World</h1><p>This is HTML content.</p>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("output.pdf")
End Sub
End Class
O contraste é claro. O FO.NET requer marcação XSL-FO detalhada com declarações de namespace XML, fo:root, fo:layout-master-set, fo:simple-page-master, fo:page-sequence, fo:flow, e fo:block elementos—tudo isso antes de produzir um simples texto "Hello World". O comentário do código observa explicitamente: "FoNet requer formato XSL-FO, não HTML."
IronPDF cria um renderizador, passa HTML padrão, renderiza para PDF, e salva—quatro linhas simples usando a sintaxe que os desenvolvedores já conhecem.
Para opções avançadas de renderização HTML, explore o guia de conversão de HTML para PDF .
Conversão de URL para PDF
Converter páginas da web para PDF revela uma lacuna crítica de capacidade.
FO.NET:
// NuGet: Install-Package Fonet
using Fonet;
using System.IO;
using System.Net;
class Program
{
static void Main()
{
// FoNet does not support URL rendering directly
// Must manually download, convert HTML to XSL-FO, then render
string url = "https://example.com";
string html = new WebClient().DownloadString(url);
// Manual conversion from HTML to XSL-FO required (complex)
string xslFo = ConvertHtmlToXslFo(html); // Not built-in
FonetDriver driver = FonetDriver.Make();
driver.Render(new StringReader(xslFo),
new FileStream("webpage.pdf", FileMode.Create));
}
static string ConvertHtmlToXslFo(string html)
{
// Custom implementation required
throw new System.NotImplementedException();
}
}
// NuGet: Install-Package Fonet
using Fonet;
using System.IO;
using System.Net;
class Program
{
static void Main()
{
// FoNet does not support URL rendering directly
// Must manually download, convert HTML to XSL-FO, then render
string url = "https://example.com";
string html = new WebClient().DownloadString(url);
// Manual conversion from HTML to XSL-FO required (complex)
string xslFo = ConvertHtmlToXslFo(html); // Not built-in
FonetDriver driver = FonetDriver.Make();
driver.Render(new StringReader(xslFo),
new FileStream("webpage.pdf", FileMode.Create));
}
static string ConvertHtmlToXslFo(string html)
{
// Custom implementation required
throw new System.NotImplementedException();
}
}
Imports Fonet
Imports System.IO
Imports System.Net
Class Program
Shared Sub Main()
' FoNet does not support URL rendering directly
' Must manually download, convert HTML to XSL-FO, then render
Dim url As String = "https://example.com"
Dim html As String = New WebClient().DownloadString(url)
' Manual conversion from HTML to XSL-FO required (complex)
Dim xslFo As String = ConvertHtmlToXslFo(html) ' Not built-in
Dim driver As FonetDriver = FonetDriver.Make()
driver.Render(New StringReader(xslFo),
New FileStream("webpage.pdf", FileMode.Create))
End Sub
Shared Function ConvertHtmlToXslFo(html As String) As String
' Custom implementation required
Throw New System.NotImplementedException()
End Function
End Class
IronPDF:
// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://example.com");
pdf.SaveAs("webpage.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://example.com");
pdf.SaveAs("webpage.pdf");
}
}
Imports IronPdf
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderUrlAsPdf("https://example.com")
pdf.SaveAs("webpage.pdf")
End Sub
End Class
FO.NET explicitamente não suporta renderização de URL. Os comentários do código afirmam: "FoNet não suporta renderização de URL diretamente" e "Conversão manual de HTML para XSL-FO necessária (complexa)." O método ConvertHtmlToXslFo() lança NotImplementedException porque essa conversão não é nativa e exigiria implementação personalizada.
IronPDF fornece funcionalidade nativa RenderUrlAsPdf() que lida com busca de URL, execução deJavaScripte renderização em uma única chamada de método—três linhas de código versus um fluxo de trabalho complicado e não implementado.
Saiba mais sobre a renderização de URL na documentação da URL para PDF.
PDF com Configurações Personalizadas
Configurar dimensões e margens da página demonstra as diferenças de abordagem de configuração.
FO.NET:
// NuGet: Install-Package Fonet
using Fonet;
using Fonet.Render.Pdf;
using System.IO;
class Program
{
static void Main()
{
// FoNet settings are configured in XSL-FO markup
string xslFo = @"<?xml version='1.0' encoding='utf-8'?>
<fo:root xmlns:fo='http://www.w3.org/1999/XSL/Format'>
<fo:layout-master-set>
<fo:simple-page-master master-name='A4'
page-height='297mm' page-width='210mm'
margin-top='20mm' margin-bottom='20mm'
margin-left='25mm' margin-right='25mm'>
<fo:region-body/>
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference='A4'>
<fo:flow flow-name='xsl-region-body'>
<fo:block font-size='14pt'>Custom PDF</fo:block>
</fo:flow>
</fo:page-sequence>
</fo:root>";
FonetDriver driver = FonetDriver.Make();
driver.Render(new StringReader(xslFo),
new FileStream("custom.pdf", FileMode.Create));
}
}
// NuGet: Install-Package Fonet
using Fonet;
using Fonet.Render.Pdf;
using System.IO;
class Program
{
static void Main()
{
// FoNet settings are configured in XSL-FO markup
string xslFo = @"<?xml version='1.0' encoding='utf-8'?>
<fo:root xmlns:fo='http://www.w3.org/1999/XSL/Format'>
<fo:layout-master-set>
<fo:simple-page-master master-name='A4'
page-height='297mm' page-width='210mm'
margin-top='20mm' margin-bottom='20mm'
margin-left='25mm' margin-right='25mm'>
<fo:region-body/>
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference='A4'>
<fo:flow flow-name='xsl-region-body'>
<fo:block font-size='14pt'>Custom PDF</fo:block>
</fo:flow>
</fo:page-sequence>
</fo:root>";
FonetDriver driver = FonetDriver.Make();
driver.Render(new StringReader(xslFo),
new FileStream("custom.pdf", FileMode.Create));
}
}
Imports Fonet
Imports Fonet.Render.Pdf
Imports System.IO
Class Program
Shared Sub Main()
' FoNet settings are configured in XSL-FO markup
Dim xslFo As String = "<?xml version='1.0' encoding='utf-8'?>" & _
"<fo:root xmlns:fo='http://www.w3.org/1999/XSL/Format'>" & _
"<fo:layout-master-set>" & _
"<fo:simple-page-master master-name='A4' " & _
"page-height='297mm' page-width='210mm' " & _
"margin-top='20mm' margin-bottom='20mm' " & _
"margin-left='25mm' margin-right='25mm'>" & _
"<fo:region-body/>" & _
"</fo:simple-page-master>" & _
"</fo:layout-master-set>" & _
"<fo:page-sequence master-reference='A4'>" & _
"<fo:flow flow-name='xsl-region-body'>" & _
"<fo:block font-size='14pt'>Custom PDF</fo:block>" & _
"</fo:flow>" & _
"</fo:page-sequence>" & _
"</fo:root>"
Dim driver As FonetDriver = FonetDriver.Make()
driver.Render(New StringReader(xslFo),
New FileStream("custom.pdf", FileMode.Create))
End Sub
End Class
IronPDF:
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Engines.Chrome;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 20;
renderer.RenderingOptions.MarginBottom = 20;
renderer.RenderingOptions.MarginLeft = 25;
renderer.RenderingOptions.MarginRight = 25;
string html = "<h1 style='font-size:14pt'>Custom PDF</h1>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("custom.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Engines.Chrome;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 20;
renderer.RenderingOptions.MarginBottom = 20;
renderer.RenderingOptions.MarginLeft = 25;
renderer.RenderingOptions.MarginRight = 25;
string html = "<h1 style='font-size:14pt'>Custom PDF</h1>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("custom.pdf");
}
}
Imports IronPdf
Imports IronPdf.Engines.Chrome
Class Program
Shared Sub Main()
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
renderer.RenderingOptions.MarginTop = 20
renderer.RenderingOptions.MarginBottom = 20
renderer.RenderingOptions.MarginLeft = 25
renderer.RenderingOptions.MarginRight = 25
Dim html As String = "<h1 style='font-size:14pt'>Custom PDF</h1>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("custom.pdf")
End Sub
End Class
O comentário de código no FO.NET afirma explicitamente: "As configurações do FoNet são configuradas na marcação XSL-FO." O tamanho da página, as margens e a formatação são incorporados dentro da estrutura XML como atributos em fo:simple-page-master. Isso significa que a configuração está entrelaçada com o conteúdo em um formato XML detalhado.
IronPDF separa a configuração do conteúdo usando propriedades programáticas RenderingOptions. Configurações como PaperSize, MarginTop, MarginBottom, MarginLeft, e MarginRight são definidas no objeto renderer, enquanto o conteúdo permanece HTML limpo.
Referência de Mapeamento de API
Para desenvolvedores avaliando a migração do FO.NET ou comparando capacidades, esse mapeamento mostra operações equivalentes:
Mapeamento de Classes Principais
| FO.NET | IronPDF |
|---|---|
FonetDriver.Make() |
new ChromePdfRenderer() |
driver.Render(inputStream, outputStream) |
renderer.RenderHtmlAsPdf(html) |
driver.Render(inputFile, outputStream) |
renderer.RenderHtmlFileAsPdf(path) |
driver.BaseDirectory |
RenderingOptions.BaseUrl |
driver.OnError += handler |
Tente/capture em torno do render |
Mapeamento de XSL-FO para RenderingOptions
| Atributo XSL-FO | Opções de renderização doIronPDF |
|---|---|
page-width |
PaperSize |
margin-top |
MarginTop |
margin-bottom |
MarginBottom |
margin-left |
MarginLeft |
margin-right |
MarginRight |
reference-orientation |
PaperOrientation |
Mapeamento de Elementos XSL-FO para HTML
| Elemento XSL-FO | Equivalente HTML | |
|---|---|---|
<fo:root> |
<html> |
|
<fo:layout-master-set> |
Regra CSS @page |
|
<fo:simple-page-master> |
CSS @page |
|
<fo:page-sequence> |
<body> ou <div> |
|
<fo:flow> |
<main> ou <div> |
|
<fo:static-content> |
HtmlHeaderFooter |
|
<fo:block> |
<p>, <div>, <h1>-<h6> |
|
<fo:table> |
<table> |
|
<fo:list-block> |
<ul>, <ol> |
|
<fo:external-graphic> |
<img> |
|
<fo:page-number/> |
Espaço reservado {page} |
Resumo da comparação de recursos
| Recurso | FO.NET | IronPDF |
|---|---|---|
| HTML para PDF | Não (requer conversão manual XSL-FO) | Sim |
| URL para PDF | Não (não suportado) | Sim |
| XSL-FO para PDF | Sim | N / D |
| Suporte a CSS3 | Não | Sim (Flexbox, Grid) |
| JavaScript | Não | Sim |
| Cabeçalhos/Rodapés | XSL-FO static-content | Baseado em HTML |
| Numeração de Páginas | fo:page-number |
Espaço reservado {page} |
| Multiplataforma | Não (somente para Windows) | Sim |
| Manutenção ativa | Não (abandonado) | Sim (mensal) |
Quando as Equipes Consideram Mudar do FO.NET para o IronPDF
As equipes de desenvolvimento avaliam a transição do FO.NET para oIronPDFpor várias razões:
Tecnologia Obsoleta: XSL-FO é uma especificação W3C de 2001 que não recebeu atualizações desde 2006 e é amplamente considerada obsoleta. A maioria dos recursos e documentações são de 2005-2010, tornando cada vez mais difícil encontrar informações atuais ou contratar desenvolvedores com expertise em XSL-FO.
Curva de Aprendizado Íngreme: O XSL-FO requer o aprendizado de marcação XML complexa com objetos de formatação especializados (fo:block, fo:table, fo:page-sequence, etc.). Menos de 1% dos desenvolvedores conhecem XSL-FO em comparação com mais de 98% que conhecem HTML/CSS.
Sem Suporte a HTML/CSS: FO.NET não pode renderizar HTML ou CSS—requer conversão manual de HTML para marcação XSL-FO, que não está embutida na biblioteca. Equipes com conteúdo web ou modelos HTML precisam implantar lógica de conversão personalizada.
Manutenção Abandonada: O repositório original no CodePlex está desativado, e os forks do GitHub não são mais mantidos ativamente. Patches de segurança, correções de bugs e novos recursos não estão sendo desenvolvidos.
Limitações de Plataforma: FO.NET tem dependências internas do System.Drawing que o impedem de funcionar em Linux/macOS, limitando a implantação a ambientes apenas Windows. Aplicações modernas cada vez mais requerem implantação multiplataforma.
Falta de Recursos Modernos: Sem suporte a JavaScript, sem recursos CSS3 (Flexbox, Grid), sem fontes web modernas e sem capacidade de renderização direta de URL.
Pontos fortes e considerações
Forças do FO.NET
- Conversão Direta de XSL-FO: Otimizado especificamente para conversão de XSL-FO para PDF
- Código Aberto: Licença Apache 2.0—gratuito para usar, modificar e distribuir
- Controle Preciso: XSL-FO fornece controle detalhado sobre o layout do documento
Considerações do FO.NET
- Tecnologia Obsoleta: Especificação do XSL-FO não tem atualizações desde 2006
- Requer Conhecimento em XSL-FO: Menos de 1% dos desenvolvedores têm expertise
- Sem Suporte a HTML: Não pode renderizar conteúdo HTML ou CSS
- Abandonado: Sem manutenção ativa ou atualizações de segurança
- Apenas Windows: Dependências do System.Drawing impedem o uso multiplataforma
- Sem Renderização de URL: Não pode converter páginas web diretamente
- Documentação Limitada: Recursos estão desatualizados
Pontos fortes do IronPDF
- Padrão HTML/CSS: Usa tecnologias web que mais de 98% dos desenvolvedores já conhecem
- Renderização Moderna: Motor Chromium com suporte completo a CSS3 e JavaScript
- Desenvolvimento Ativo: Lançamentos mensais com novos recursos e patches de segurança
- Multiplataforma: Suporte verdadeiro para Windows, Linux e macOS
- Renderização Direta de URL: Capacidade nativa
RenderUrlAsPdf() - Recursos Profissionais: Cabeçalhos, rodapés, marcas d'água, segurança—tudo embutido
- Recursos abrangentes: tutoriais e documentação extensivos
Considerações sobre o IronPDF
- Licença Comercial: Requer licença para uso em produção
- Paradigma Diferente: Modelos XSL-FO precisam ser convertidos para HTML
Conclusão
FO.NET eIronPDFrepresentam abordagens fundamentalmente diferentes para geração de PDF no .NET. FO.NET atende ao caso de uso específico de conversão de XSL-FO para PDF, mas sua dependência em tecnologia obsoleta, manutenção abandonada, limitação apenas Windows e falta de suporte a HTML tornam cada vez mais difícil justificá-lo para novos projetos.
IronPDF fornece uma abordagem moderna usando padrões web HTML/CSS que se alinham com as habilidades e tecnologias atuais dos desenvolvedores. A capacidade de renderizar HTML diretamente, URLs e usar o CSS3 completo com um mecanismo Chromium o torna adequado para os requisitos contemporâneos de geração de PDF.
À medida que as organizações planejam for .NET 10, C# 14 e desenvolvimento de aplicativos até 2026, a base tecnológica importa. As equipes que mantêm sistemas legados de XSL-FO podem continuar usando o FO.NET, mas o caminho à frente para a geração moderna de PDF aponta claramente para soluções baseadas em HTML como o IronPDF, que aproveitam a expertise existente em desenvolvimento web.
Comece a avaliar oIronPDFcom um teste gratuito e explore a documentação completa para verificar se ele atende às suas necessidades específicas.