Ir para o conteúdo do rodapé
GUIAS DE MIGRAçãO

Como migrar do XFINIUM.PDF para o IronPDF em C#

XFINIUM.PDF é uma biblioteca comercial de PDF multiplataforma, desenvolvida pela O2 Solutions, que oferece ferramentas para criar e editar PDFs programaticamente em C#. Ela é enviada em duas edições — Generator (geração e edição de PDFs) e Viewer (recursos do Generator mais renderização/exibição). A biblioteca é distribuída no NuGet como Xfinium.Pdf.NetStandard e Xfinium.Pdf.NetCore. Seu modelo de programação gráfica baseado em coordenadas pode criar fricção para equipes que constroem aplicativos pesados em documentos, já que a maior parte do trabalho de layout envolve o posicionamento manual dos elementos usando coordenadas de pixels.

Este guia fornece um caminho de migração do XFINIUM.PDF para o IronPDF, com instruções passo a passo, comparações de código e exemplos práticos para desenvolvedores .NET avaliando essa transição.

Por que migrar do XFINIUM.PDF

XFINIUM.PDF é uma biblioteca de PDF de baixo nível que depende da programação gráfica baseada em coordenadas, o que significa que os desenvolvedores posicionam a maioria dos elementos na página diretamente. Motivos comuns que levam as equipes de desenvolvimento a considerarem a migração incluem:

Sem motor HTML nativo: XFINIUM.PDF não possui um conversor embutido de HTML para PDF. O fornecedor fornece um exemplo de walker XHTML que suporta um conjunto limitado de tags (p, font, b, i, u, ul, li) e não analisa CSS ou executa JavaScript, o que pode não ser suficiente para projetos que requerem capacidade completa de HTML para PDF.

API Baseada em Coordenadas: O posicionamento manual com coordenadas de pixels como DrawString("text", font, brush, 50, 100) é necessário para a maioria dos posicionamentos de elementos.

Gestão Manual de Fontes: Objetos de fonte devem ser criados e geridos explicitamente usando classes como PdfStandardFont e PdfBrush.

Sem suporte para estilos CSS: Não há compatibilidade com estilos modernos da web. Cores, fontes e layouts são gerenciados por meio de chamadas de método programáticas.

Sem renderização de JavaScript : somente conteúdo estático. XFINIUM.PDF não renderiza conteúdo web dinâmico ou executa JavaScript.

Layout de Texto Complexo: Medição manual de texto e cálculos de quebra geralmente são necessários para qualquer coisa além de texto simples de linha única.

Comunidade menor: Menos exemplos e tutoriais fornecidos pela comunidade em comparação com soluções mais populares, o que pode dificultar para novos usuários começarem.

O problema central: API gráfica versus HTML

O XFINIUM.PDF força você a pensar como um programador gráfico, não como um designer de documentos:

// XFINIUM.PDF: Position every element manually
page.Graphics.DrawString("Invoice", titleFont, titleBrush, 50, 50);
page.Graphics.DrawString("Customer:", labelFont, brush, 50, 80);
page.Graphics.DrawString(customer.Name, valueFont, brush, 120, 80);
// ... hundreds of lines for a simple document
// XFINIUM.PDF: Position every element manually
page.Graphics.DrawString("Invoice", titleFont, titleBrush, 50, 50);
page.Graphics.DrawString("Customer:", labelFont, brush, 50, 80);
page.Graphics.DrawString(customer.Name, valueFont, brush, 120, 80);
// ... hundreds of lines for a simple document
' XFINIUM.PDF: Position every element manually
page.Graphics.DrawString("Invoice", titleFont, titleBrush, 50, 50)
page.Graphics.DrawString("Customer:", labelFont, brush, 50, 80)
page.Graphics.DrawString(customer.Name, valueFont, brush, 120, 80)
' ... hundreds of lines for a simple document
$vbLabelText   $csharpLabel

O IronPDF utiliza HTML/CSS familiar:

// IronPDF: Declarative HTML
var html = @"<h1>Invoice</h1><p><b>Customer:</b> " + customer.Name + "</p>";
var pdf = renderer.RenderHtmlAsPdf(html);
// IronPDF: Declarative HTML
var html = @"<h1>Invoice</h1><p><b>Customer:</b> " + customer.Name + "</p>";
var pdf = renderer.RenderHtmlAsPdf(html);
' IronPDF: Declarative HTML
Dim html As String = "<h1>Invoice</h1><p><b>Customer:</b> " & customer.Name & "</p>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
$vbLabelText   $csharpLabel

IronPDF vs XFINIUM.PDF: Comparação de Recursos

Compreender as diferenças arquitetônicas ajuda os responsáveis ​​pelas decisões técnicas a avaliar o investimento em migração:

Recurso XFINIUM.PDF IronPDF
HTML para PDF Sem mecanismo nativo; conversor de XHTML apenas para amostra (tags limitadas, sem CSS/JS) Conversão completa de HTML para PDF com Chromium (CSS3 + JavaScript)
Comunidade e Apoio Comunidade menor, menos recursos online disponíveis. Comunidade ampla com extensa documentação e tutoriais.
Licença Comercial com licenciamento baseado no desenvolvedor Comercial
Suporte multiplataforma Fortes capacidades multiplataforma Também suporta operações multiplataforma
Suporte a CSS Não CSS3 completo
JavaScript Não ES2024 completo
Flexbox/Grade Não Sim
Layout automático Não Sim
Quebras de página automáticas Não Sim
Posicionamento manual Obrigatório Opcional (posicionamento CSS)
Curva de Aprendizagem Alto (sistema de coordenadas) Baixo (HTML/CSS)
Verbosidade do código Muito alto Baixo

Guia rápido: Migração de XFINIUM.PDF para IronPDF

A migração pode começar imediatamente com esses passos fundamentais.

Passo 1: Substitua o pacote NuGet

Remover XFINIUM.PDF (os IDs reais do NuGet são específicos de plataforma):

# Remove XFINIUM.PDF
dotnet remove package Xfinium.Pdf.NetStandard
# or: dotnet remove package Xfinium.Pdf.NetCore
# Remove XFINIUM.PDF
dotnet remove package Xfinium.Pdf.NetStandard
# or: dotnet remove package Xfinium.Pdf.NetCore
SHELL

Instale o IronPDF:

# Install IronPDF
dotnet add package IronPdf
# Install IronPDF
dotnet add package IronPdf
SHELL

Etapa 2: Atualizar Namespaces

Substituir namespaces XFINIUM.PDF pelo namespace IronPDF:

// Before (XFINIUM.PDF)
using Xfinium.Pdf;
using Xfinium.Pdf.Graphics;
using Xfinium.Pdf.Content;
using Xfinium.Pdf.FlowDocument;

// After (IronPDF)
using IronPdf;
// Before (XFINIUM.PDF)
using Xfinium.Pdf;
using Xfinium.Pdf.Graphics;
using Xfinium.Pdf.Content;
using Xfinium.Pdf.FlowDocument;

// After (IronPDF)
using IronPdf;
Imports IronPdf
$vbLabelText   $csharpLabel

Etapa 3: Inicializar a licença

Adicionar inicialização de licença na inicialização do aplicativo:

IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
$vbLabelText   $csharpLabel

Exemplos de migração de código

Converter HTML para PDF

A operação mais fundamental revela a diferença de complexidade entre essas bibliotecas PDF do .NET .

Abordagem XFINIUM.PDF:

// NuGet: Install-Package Xfinium.Pdf.NetStandard (or .NetCore)
// XFINIUM.PDF has no native HTML-to-PDF engine. Flow content accepts
// styled text, headings, tables and images - not HTML. The vendor sample
// converter parses limited XHTML (p, font, b, i, u, ul, li) into
// PdfFormattedContent; full CSS/JS rendering is not supported.
using Xfinium.Pdf;
using Xfinium.Pdf.FlowDocument;
using Xfinium.Pdf.Graphics;
using System.IO;

class Program
{
    static void Main()
    {
        PdfFlowDocument flowDocument = new PdfFlowDocument();

        flowDocument.AddContent(new PdfFlowHeadingContent(
            "Hello World",
            new PdfStandardFont(PdfStandardFontFace.HelveticaBold, 18)));

        flowDocument.AddContent(new PdfFlowTextContent(
            "This is a PDF generated from text content (not HTML).",
            new PdfStandardFont(PdfStandardFontFace.Helvetica, 12)));

        using (FileStream fs = new FileStream("output.pdf", FileMode.Create))
        {
            flowDocument.Save(fs);
        }
    }
}
// NuGet: Install-Package Xfinium.Pdf.NetStandard (or .NetCore)
// XFINIUM.PDF has no native HTML-to-PDF engine. Flow content accepts
// styled text, headings, tables and images - not HTML. The vendor sample
// converter parses limited XHTML (p, font, b, i, u, ul, li) into
// PdfFormattedContent; full CSS/JS rendering is not supported.
using Xfinium.Pdf;
using Xfinium.Pdf.FlowDocument;
using Xfinium.Pdf.Graphics;
using System.IO;

class Program
{
    static void Main()
    {
        PdfFlowDocument flowDocument = new PdfFlowDocument();

        flowDocument.AddContent(new PdfFlowHeadingContent(
            "Hello World",
            new PdfStandardFont(PdfStandardFontFace.HelveticaBold, 18)));

        flowDocument.AddContent(new PdfFlowTextContent(
            "This is a PDF generated from text content (not HTML).",
            new PdfStandardFont(PdfStandardFontFace.Helvetica, 12)));

        using (FileStream fs = new FileStream("output.pdf", FileMode.Create))
        {
            flowDocument.Save(fs);
        }
    }
}
Imports Xfinium.Pdf
Imports Xfinium.Pdf.FlowDocument
Imports Xfinium.Pdf.Graphics
Imports System.IO

Module Program
    Sub Main()
        Dim flowDocument As New PdfFlowDocument()

        flowDocument.AddContent(New PdfFlowHeadingContent(
            "Hello World",
            New PdfStandardFont(PdfStandardFontFace.HelveticaBold, 18)))

        flowDocument.AddContent(New PdfFlowTextContent(
            "This is a PDF generated from text content (not HTML).",
            New PdfStandardFont(PdfStandardFontFace.Helvetica, 12)))

        Using fs As New FileStream("output.pdf", FileMode.Create)
            flowDocument.Save(fs)
        End Using
    End Sub
End Module
$vbLabelText   $csharpLabel

Abordagem IronPDF:

// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        string html = "<html><body><h1>Hello World</h1><p>This is a PDF from HTML.</p></body></html>";

        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 = "<html><body><h1>Hello World</h1><p>This is a PDF from HTML.</p></body></html>";

        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("output.pdf");
    }
}
Imports IronPdf

Class Program
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()
        Dim html As String = "<html><body><h1>Hello World</h1><p>This is a PDF from HTML.</p></body></html>"

        Dim pdf = renderer.RenderHtmlAsPdf(html)
        pdf.SaveAs("output.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

XFINIUM.PDF requer a criação de um PdfFlowDocument, instanciando objetos PdfStandardFont para cada estilo, construindo cada parte do conteúdo como um PdfFlowHeadingContent ou PdfFlowTextContent, adicionando-os ao documento de fluxo e salvando via um FileStream. A API do documento de fluxo aceita objetos de conteúdo tipado, não marcação HTML. O IronPDF simplifica isso para três linhas: criar um renderizador, renderizar HTML e salvar.

Para cenários avançados de conversão de HTML para PDF, consulte o guia de conversão de HTML para PDF .

Unir vários PDFs

A fusão de PDFs demonstra claramente as diferenças na complexidade da API.

Abordagem XFINIUM.PDF:

// NuGet: Install-Package Xfinium.Pdf.NetStandard (or .NetCore)
using Xfinium.Pdf;
using System.IO;

class Program
{
    static void Main()
    {
        PdfFixedDocument output = new PdfFixedDocument();

        FileStream file1 = File.OpenRead("document1.pdf");
        PdfFixedDocument pdf1 = new PdfFixedDocument(file1);

        FileStream file2 = File.OpenRead("document2.pdf");
        PdfFixedDocument pdf2 = new PdfFixedDocument(file2);

        for (int i = 0; i < pdf1.Pages.Count; i++)
        {
            output.Pages.Add(pdf1.Pages[i]);
        }

        for (int i = 0; i < pdf2.Pages.Count; i++)
        {
            output.Pages.Add(pdf2.Pages[i]);
        }

        output.Save("merged.pdf");

        file1.Close();
        file2.Close();
    }
}
// NuGet: Install-Package Xfinium.Pdf.NetStandard (or .NetCore)
using Xfinium.Pdf;
using System.IO;

class Program
{
    static void Main()
    {
        PdfFixedDocument output = new PdfFixedDocument();

        FileStream file1 = File.OpenRead("document1.pdf");
        PdfFixedDocument pdf1 = new PdfFixedDocument(file1);

        FileStream file2 = File.OpenRead("document2.pdf");
        PdfFixedDocument pdf2 = new PdfFixedDocument(file2);

        for (int i = 0; i < pdf1.Pages.Count; i++)
        {
            output.Pages.Add(pdf1.Pages[i]);
        }

        for (int i = 0; i < pdf2.Pages.Count; i++)
        {
            output.Pages.Add(pdf2.Pages[i]);
        }

        output.Save("merged.pdf");

        file1.Close();
        file2.Close();
    }
}
Imports Xfinium.Pdf
Imports System.IO

Module Program
    Sub Main()
        Dim output As New PdfFixedDocument()

        Dim file1 As FileStream = File.OpenRead("document1.pdf")
        Dim pdf1 As New PdfFixedDocument(file1)

        Dim file2 As FileStream = File.OpenRead("document2.pdf")
        Dim pdf2 As New PdfFixedDocument(file2)

        For i As Integer = 0 To pdf1.Pages.Count - 1
            output.Pages.Add(pdf1.Pages(i))
        Next

        For i As Integer = 0 To pdf2.Pages.Count - 1
            output.Pages.Add(pdf2.Pages(i))
        Next

        output.Save("merged.pdf")

        file1.Close()
        file2.Close()
    End Sub
End Module
$vbLabelText   $csharpLabel

Abordagem IronPDF:

// NuGet: Install-Package IronPdf
using IronPdf;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        var pdf1 = PdfDocument.FromFile("document1.pdf");
        var pdf2 = PdfDocument.FromFile("document2.pdf");

        var merged = PdfDocument.Merge(pdf1, pdf2);
        merged.SaveAs("merged.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        var pdf1 = PdfDocument.FromFile("document1.pdf");
        var pdf2 = PdfDocument.FromFile("document2.pdf");

        var merged = PdfDocument.Merge(pdf1, pdf2);
        merged.SaveAs("merged.pdf");
    }
}
Imports IronPdf
Imports System.Collections.Generic

Class Program
    Shared Sub Main()
        Dim pdf1 = PdfDocument.FromFile("document1.pdf")
        Dim pdf2 = PdfDocument.FromFile("document2.pdf")

        Dim merged = PdfDocument.Merge(pdf1, pdf2)
        merged.SaveAs("merged.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

O XFINIUM.PDF exige a criação de um documento de saída, a abertura de fluxos de arquivos, o carregamento de cada documento, a iteração manual pelas páginas e a adição delas uma a uma, o salvamento e, em seguida, o fechamento dos fluxos.IronPDF fornece um único método PdfDocument.Merge() que lida com toda a complexidade internamente.

Consulte a documentação sobre mesclagem de PDFs para obter opções adicionais de mesclagem.

Criando PDFs com texto e imagens

Documentos com conteúdo misto demonstram a diferença paradigmática fundamental.

Abordagem XFINIUM.PDF:

// NuGet: Install-Package Xfinium.Pdf.NetStandard (or .NetCore)
using Xfinium.Pdf;
using Xfinium.Pdf.Graphics;
using System.IO;

class Program
{
    static void Main()
    {
        PdfFixedDocument document = new PdfFixedDocument();
        PdfPage page = document.Pages.Add();

        PdfStandardFont font = new PdfStandardFont(PdfStandardFontFace.Helvetica, 24);
        PdfBrush brush = new PdfBrush(new PdfRgbColor(0, 0, 0));

        page.Graphics.DrawString("Sample PDF Document", font, brush, 50, 50);

        using (FileStream imageStream = File.OpenRead("image.jpg"))
        {
            PdfJpegImage image = new PdfJpegImage(imageStream);
            page.Graphics.DrawImage(image, 50, 100, 200, 150);
        }

        document.Save("output.pdf");
    }
}
// NuGet: Install-Package Xfinium.Pdf.NetStandard (or .NetCore)
using Xfinium.Pdf;
using Xfinium.Pdf.Graphics;
using System.IO;

class Program
{
    static void Main()
    {
        PdfFixedDocument document = new PdfFixedDocument();
        PdfPage page = document.Pages.Add();

        PdfStandardFont font = new PdfStandardFont(PdfStandardFontFace.Helvetica, 24);
        PdfBrush brush = new PdfBrush(new PdfRgbColor(0, 0, 0));

        page.Graphics.DrawString("Sample PDF Document", font, brush, 50, 50);

        using (FileStream imageStream = File.OpenRead("image.jpg"))
        {
            PdfJpegImage image = new PdfJpegImage(imageStream);
            page.Graphics.DrawImage(image, 50, 100, 200, 150);
        }

        document.Save("output.pdf");
    }
}
Imports Xfinium.Pdf
Imports Xfinium.Pdf.Graphics
Imports System.IO

Class Program
    Shared Sub Main()
        Dim document As New PdfFixedDocument()
        Dim page As PdfPage = document.Pages.Add()

        Dim font As New PdfStandardFont(PdfStandardFontFace.Helvetica, 24)
        Dim brush As New PdfBrush(New PdfRgbColor(0, 0, 0))

        page.Graphics.DrawString("Sample PDF Document", font, brush, 50, 50)

        Using imageStream As FileStream = File.OpenRead("image.jpg")
            Dim image As New PdfJpegImage(imageStream)
            page.Graphics.DrawImage(image, 50, 100, 200, 150)
        End Using

        document.Save("output.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

Abordagem IronPDF:

// NuGet: Install-Package IronPdf
using IronPdf;
using System.IO;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

        string imageBase64 = Convert.ToBase64String(File.ReadAllBytes("image.jpg"));
        string html = $@"
            <html>
                <body>
                    <h1>Sample PDF Document</h1>
                    <img src='data:image/jpeg;base64,{imageBase64}' width='200' height='150' />
                </body>
            </html>";

        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System.IO;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

        string imageBase64 = Convert.ToBase64String(File.ReadAllBytes("image.jpg"));
        string html = $@"
            <html>
                <body>
                    <h1>Sample PDF Document</h1>
                    <img src='data:image/jpeg;base64,{imageBase64}' width='200' height='150' />
                </body>
            </html>";

        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("output.pdf");
    }
}
Imports IronPdf
Imports System.IO

Class Program
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()

        Dim imageBase64 As String = Convert.ToBase64String(File.ReadAllBytes("image.jpg"))
        Dim html As String = $"
            <html>
                <body>
                    <h1>Sample PDF Document</h1>
                    <img src='data:image/jpeg;base64,{imageBase64}' width='200' height='150' />
                </body>
            </html>"

        Dim pdf = renderer.RenderHtmlAsPdf(html)
        pdf.SaveAs("output.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

XFINIUM.PDF requer a criação de um documento, adição de uma página, criação de objetos de fonte e pincel, desenho de texto em coordenadas específicas, abertura de um fluxo de imagem, criação de um PdfJpegImage, desenho da imagem em coordenadas com dimensões, fechamento do fluxo e salvamento. O IronPDF utiliza HTML padrão com imagens em base64 incorporadas — a mesma abordagem que os desenvolvedores web usam diariamente.

Referência de mapeamento da API XFINIUM.PDF para o IronPDF

Este mapeamento acelera a migração ao mostrar equivalentes diretos da API:

XFINIUM.PDF IronPDF
PdfFixedDocument ChromePdfRenderer
PdfPage Automático
page.Graphics.DrawString() Elementos de texto HTML
page.Graphics.DrawImage() <img> tag
page.Graphics.DrawLine() CSS border ou <hr>
page.Graphics.DrawRectangle() CSS border em
PdfStandardFont CSS font-family
PdfRgbColor CSS color
PdfBrush Propriedades CSS
PdfJpegImage tag com base64
document.Save(stream) pdf.SaveAs() ou pdf.BinaryData
PdfFlowDocument RenderHtmlAsPdf()
Conversor XHTML de amostra do fornecedor RenderHtmlAsPdf()

Problemas e soluções comuns em migrações

Problema 1: Layout baseado em coordenadas

XFINIUM.PDF: Tudo requer coordenadas X,Y exatas com posicionamento manual.

Solução: Utilize um layout de fluxo HTML/CSS. Para posicionamento absoluto quando necessário, use CSS:

.positioned-element {
    position: absolute;
    top: 100px;
    left: 50px;
}

Problema 2: Gerenciamento de Objetos de Fonte

XFINIUM.PDF: Criar objetos PdfStandardFont ou PdfUnicodeTrueTypeFont para cada fonte.

Solução: Use CSS font-family — as fontes são gerenciadas automaticamente:

<style>
    body { font-family: Arial, sans-serif; }
    h1 { font-family: 'Times New Roman', serif; font-size: 24px; }
</style>
<style>
    body { font-family: Arial, sans-serif; }
    h1 { font-family: 'Times New Roman', serif; font-size: 24px; }
</style>
HTML

Edição 3: Manipulação de Cores

XFINIUM.PDF: Criar objetos PdfRgbColor e PdfBrush para cores.

Solução: Utilize cores CSS padrão:

.header { color: navy; background-color: #f5f5f5; }
.warning { color: rgb(255, 0, 0); }
.info { color: rgba(0, 0, 255, 0.8); }

Edição 4: Quebras de página manuais

XFINIUM.PDF: Monitore a posição Y e crie novas páginas manualmente quando o conteúdo exceder os limites.

Solução: O IronPDF lida com quebras de página automáticas. Para controle explícito, use CSS:

.section { page-break-after: always; }
.keep-together { page-break-inside: avoid; }

Problema 5: Carregamento de imagens

XFINIUM.PDF: Abra fluxos de arquivo, crie objetos PdfJpegImage, desenhe em coordenadas, feche fluxos.

Solução: Use tags HTML com caminhos de arquivo ou dados base64:

<img src="image.jpg" width="200" height="150" />

<img src="data:image/jpeg;base64,..." />
<img src="image.jpg" width="200" height="150" />

<img src="data:image/jpeg;base64,..." />
HTML

Lista de verificação de migração XFINIUM.PDF

Tarefas pré-migração

Faça uma auditoria no seu código-fonte para identificar todos os usos de XFINIUM.PDF:

grep -r "using Xfinium.Pdf" --include="*.cs" .
grep -r "Graphics.DrawString\|Graphics.DrawImage\|Graphics.DrawLine" --include="*.cs" .
grep -r "using Xfinium.Pdf" --include="*.cs" .
grep -r "Graphics.DrawString\|Graphics.DrawImage\|Graphics.DrawLine" --include="*.cs" .
SHELL

Documente os layouts baseados em coordenadas e anote todos os valores de posicionamento X,Y. Identifique objetos de fonte e cor (PdfStandardFont, PdfRgbColor, PdfBrush). Mapeie fluxos de trabalho de PDF mesclados usando PdfFixedDocument.Pages.Add().

Tarefas de atualização de código

  1. Remova o pacote NuGet Xfinium.Pdf.
  2. Instale o pacote NuGet do IronPDF
  3. Atualize as importações de namespace de Xfinium.Pdf para IronPdf
  4. Converta chamadas de DrawString() para elementos de texto HTML
  5. Converta chamadas de DrawImage() para tags HTML
  6. Converta DrawRectangle() e DrawLine() para bordas CSS
  7. Substitua PdfStandardFont por CSS font-family
  8. Substitua PdfRgbColor e PdfBrush por cores CSS
  9. Substitua a mesclagem de loop de página por PdfDocument.Merge()
  10. Adicionar inicialização da licença do IronPDF na inicialização do sistema.

Testes pós-migração

Após a migração, verifique os seguintes aspectos:

  • Compare a saída visual para garantir que a aparência corresponda às expectativas.
  • Verificar a renderização do texto com a nova abordagem HTML/CSS
  • Verificar o posicionamento da imagem usando CSS
  • As quebras de página de teste ocorrem conforme o esperado.
  • Verifique se as configurações de segurança do PDF estão aplicadas corretamente.
  • Testar em todas as plataformas alvo

Principais benefícios da migração para o IronPDF

A migração do XFINIUM.PDF para o IronPDF oferece diversas vantagens importantes:

Criação de conteúdo baseado em HTML: os desenvolvedores web podem aproveitar suas habilidades existentes em HTML e CSS. Não é necessário aprender APIs de desenho baseadas em coordenadas nem gerenciar objetos de fonte e pincel.

Layout automático: a quebra de texto, a paginação e o layout de fluxo acontecem automaticamente. Não é necessário calcular manualmente as posições dos elementos ou as quebras de página.

Suporte a CSS moderno: CSS3 completo, incluindo layouts Flexbox e Grid. Os designs responsivos são convertidos diretamente para PDF.

Operações Simplificadas de PDF: Chamadas de método único para operações comuns como PdfDocument.Merge() substituem loops complexos de iteração de página.

Desenvolvimento Ativo: As atualizações regulares do IronPDF acompanham as versões atuais do .NET e lançamentos de linguagem C#.

Documentação extensa: Grande comunidade com documentação abrangente, tutoriais e recursos de suporte, em comparação com o ecossistema menor do XFINIUM.PDF.

ObserveXfinium PDF é uma marca registrada de seu respectivo proprietário. Este site não é afiliado, endossado ou patrocinado pela XFINIUM Software. 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.

Curtis Chau
Redator Técnico

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais ...

Leia mais

Equipe de Suporte Iron

Estamos online 24 horas por dia, 5 dias por semana.
Bater papo
E-mail
Liga para mim