Iron Suite for .NET

10 bibliotecas .NET. Um conjunto completo de documentos.

COMPARAÇÃO

Adobe PDF Library SDK vs IronPDF: Guia de Comparação Técnica

Curtis Chau
Curtis Chau
Updated: 28 de junho de 2026

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.IronPDF oferece 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 os 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 de renderização principal, 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 string HTML e renderização de arquivo HTML, produzindo objetos PdfDocument que podem ser salvos, mesclados, assegurados 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.

AspectoFO.NETIronPDF
Formato de EntradaXSL-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çãoAbandonadoManutenção ativa mensal
Suporte da plataformaSomente para WindowsVerdadeiramente multiplataforma
Suporte a CSSNoneCSS3 completo (Flexbox, Grid)
JavaScriptNoneSuporte completo aJavaScript
Renderização de URLNão suportadoEmbutido
Recursos ModernosLimitadoCabeçalhos, rodapés, marcas d'água, segurança
DocumentaçãoDesatualizadoTutoriais 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));
    }
}

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");
    }
}

O contraste é claro. FO.NET requer marcação XSL-FO verbosa com declarações de namespace XML, fo:root, fo:layout-master-set, fo:simple-page-master, fo:page-sequence, fo:flow, e elementos fo:block - 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();
    }
}

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");
    }
}

FO.NET explicitamente não suporta renderização de URL. Os comentários de código afirmam: "FoNet não suporta renderização de URL diretamente" e "Conversão manual de HTML para XSL-FO necessária (complexo)." O método ConvertHtmlToXslFo() lança NotImplementedException porque essa conversão não é integrada e exigiria implementação personalizada.

IronPDF fornece funcionalidade nativa de RenderUrlAsPdf() que lida com a busca de URL, execução deJavaScripte renderização em uma única chamada de método - três linhas de código contra um fluxo de trabalho complexo 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));
    }
}

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");
    }
}

O comentário de código em FO.NET afirma explicitamente: "Configurações FoNet são configuradas na marcação XSL-FO." Tamanho da página, margens e formatação estã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 configuração de conteúdo usando propriedades programáticas de RenderingOptions. Configurações como PaperSize, MarginTop, MarginBottom, MarginLeft, e MarginRight são definidas no objeto renderizador, enquanto o conteúdo permanece como 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.NETIronPDF
FonetDriver.Make()new ChromePdfRenderer()
driver.Render(inputStream, outputStream)renderer.RenderHtmlAsPdf(html)
driver.Render(inputFile, outputStream)renderer.RenderHtmlFileAsPdf(path)
driver.BaseDirectoryRenderingOptions.BaseUrl
driver.OnError += handlerTente/capture em torno do render

Mapeamento de XSL-FO para RenderingOptions

Atributo XSL-FOOpções de renderização do IronPDF
page-widthPaperSize
margin-topMarginTop
margin-bottomMarginBottom
margin-leftMarginLeft
margin-rightMarginRight
reference-orientationPaperOrientation

Mapeamento de Elementos XSL-FO para HTML

Elemento XSL-FOEquivalente HTML
<fo:root><html>
<fo:layout-master-set>Regra @page de CSS
<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/>placeholder {page}

Resumo da comparação de recursos

RecursoFO.NETIronPDF
HTML para PDFNão (requer conversão manual XSL-FO)Sim
URL para PDFNão (não suportado)Sim
XSL-FO para PDFSimN / D
Suporte a CSS3NãoSim (Flexbox, Grid)
JavaScriptNãoSim
Cabeçalhos/RodapésXSL-FO static-contentBaseado em HTML
Numeração de Páginasfo:page-numberplaceholder {page}
MultiplataformaNão (somente para Windows)Sim
Manutenção ativaNã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 o IronPDF por 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: XSL-FO requer aprendizado de marcação baseada em 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 de 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 e IronPDF representam 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 para .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 o IronPDF com um teste gratuito e explore a documentação completa para verificar se ele atende às suas necessidades específicas.

Observe: FONET é uma marca registrada do seu respectivo proprietário. Este site não é afiliado, aprovado ou patrocinado pelo FONET. Todos os nomes de produtos, logotipos e marcas são propriedade de seus respectivos proprietários. As comparações são apenas para fins informativos e refletem informações disponíveis publicamente no momento da redação.