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

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

Migrar do Spire.PDF para o IronPDF move sua geração de PDFs de um caminho HTML legado que frequentemente produz texto baseado em imagem para um pipeline Chromium que produz texto verdadeiro, selecionável e pesquisável. Este guia fornece um caminho de migração completo, passo a passo, abordando os trade-offs de renderização HTML do Spire.PDF e problemas relatados de incorporação de fontes.

Por que migrar do Spire.PDF para o IronPDF?

Entendendo o Spire.PDF

Spire.PDF é uma biblioteca PDF comercial robusta, projetada para desenvolvedores .NET lidarem com documentos PDF de forma eficiente. O Spire.PDF se destacou na comunidade de programação por suas funcionalidades específicas, especialmente em aplicações legadas, e suas capacidades de integração se alinham perfeitamente com outros componentes do conjunto de ferramentas E-iceblue.

No entanto, o Spire.PDF apresenta diversos problemas fundamentais que afetam seu uso no mundo real, principalmente em relação à conversão de HTML para PDF e ao suporte aos padrões web modernos.

Problemas técnicos críticos

Emitir Impacto Solução IronPDF
Texto frequentemente renderizado como imagens no caminho HTML legado Os PDFs não são pesquisáveis, não são acessíveis e não é possível copiar o texto. Renderização de texto real
Dependência IE/Edge Legacy ou QtWebKit no caminho legado Renderização desatualizada, problemas de CSS moderno Chromium moderno incluído
Problemas de incorporação de fontes relatados Os documentos parecem estar incorretos em outros sistemas. Manipulação confiável de fontes
Grande área de implantação Maior uso de memória Chromium incluído em runtime
CSS limitado no caminho legado Os layouts modernos não são renderizados corretamente. Suporte completo a CSS3

O problema central: PDFs baseados em imagens

Um inconveniente relatado do caminho legado HTML do Spire.PDF é sua inclinação em renderizar texto dentro de documentos HTML como imagens. Isso produz PDFs onde o texto não é selecionável ou pesquisável — uma limitação para aplicativos que precisam de busca ou interação de texto.

Quando você usa o método LoadFromHTML() do Spire.PDF no mecanismo legado, ele frequentemente renderiza texto como imagens bitmap em vez de texto real, criando esses problemas:

  • Não é possível selecionar texto
  • O texto NÃO pode ser pesquisado
  • O texto NÃO pode ser copiado
  • Os leitores de tela NÃO conseguem ler (violação de acessibilidade)
  • O tamanho do arquivo é MUITO maior
  • O zoom causa pixelização

Comparação entre Spire.PDF e IronPDF

Recurso Spire.PDF IronPDF
Renderização de HTML para PDF IE/QtWebKit por padrão; opt-in ChromeHtmlConverter (requer Chrome do sistema) desde a v10.7.21 Chromium incluído (moderno, sem instalação extra)
Saída de Texto (caminho HTML) Frequentemente renderizado como imagens no caminho legado Texto real (selecionável e pesquisável)
Manipulação de fontes Problemas relatados no caminho legado Manipulação confiável de fontes
Suporte a CSS3 Limitado no caminho legado Completo
Flexbox/Grade Não suportado no caminho legado Apoiado
JavaScript Limitado no caminho legado ES6+ completo
Acessibilidade do PDF Ruim no caminho legado (saída baseada em imagem) Saída de texto marcado
Design de API Muitos overloads, configurações de página manual Renderizador único e fluente
Licenciamento Gratuito/Comercial Comercial

No .NET moderno,IronPDF soluciona os trade-offs HTML para PDF do Spire.PDF ao renderizar texto como texto selecionável real em vez de imagens, assim os PDFs resultantes são pesquisáveis e acessíveis.


Antes de começar

Pré-requisitos

  1. Ambiente .NET : .NET Framework 4.6.2+ ou .NET Core 3.1+ / .NET 5/6/7/8/9+
  2. Acesso ao NuGet : Capacidade de instalar pacotes NuGet.
  3. Licença do IronPDF: Obtenha sua chave de licença em IronPDF

Alterações no pacote NuGet

# Remove Spire.PDF
dotnet remove package Spire.PDF
dotnet remove package FreeSpire.PDF  # If using free version

# Install IronPDF
dotnet add package IronPdf
# Remove Spire.PDF
dotnet remove package Spire.PDF
dotnet remove package FreeSpire.PDF  # If using free version

# Install IronPDF
dotnet add package IronPdf
SHELL

Configuração de licença

// Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
' Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
$vbLabelText   $csharpLabel

Referência completa da API

Alterações de namespace

// Before: Spire.PDF
using Spire.Pdf;
using Spire.Pdf.Graphics;
using Spire.Pdf.HtmlConverter;

// After: IronPDF
using IronPdf;
using IronPdf.Editing;
// Before: Spire.PDF
using Spire.Pdf;
using Spire.Pdf.Graphics;
using Spire.Pdf.HtmlConverter;

// After: IronPDF
using IronPdf;
using IronPdf.Editing;
Imports IronPdf
Imports IronPdf.Editing
$vbLabelText   $csharpLabel

Mapeamentos da API principal

Spire.PDF IronPDF
new PdfDocument() new ChromePdfRenderer()
pdf.LoadFromHTML() renderer.RenderHtmlAsPdf()
pdf.LoadFromFile() PdfDocument.FromFile()
pdf.SaveToFile() pdf.SaveAs()
pdf.Close() Não é necessário
pdf.Pages.Add() renderer.RenderHtmlAsPdf()
pdf.InsertPageRange() PdfDocument.Merge()
page.Canvas.DrawString() TextStamper + ApplyStamp()
PdfFont Estilização CSS em HTML
PdfBrush Estilização CSS em HTML

Exemplos de migração de código

Exemplo 1: Conversão de HTML para PDF

Antes (Spire.PDF):

// NuGet: Install-Package Spire.PDF
using Spire.Pdf;
using Spire.Pdf.Graphics;
using System;

class Program
{
    static void Main()
    {
        PdfDocument pdf = new PdfDocument();
        PdfHtmlLayoutFormat htmlLayoutFormat = new PdfHtmlLayoutFormat();

        string htmlString = "<html><body><h1>Hello World</h1><p>This is a PDF from HTML.</p></body></html>";

        pdf.LoadFromHTML(htmlString, false, true, true);
        pdf.SaveToFile("output.pdf");
        pdf.Close();
    }
}
// NuGet: Install-Package Spire.PDF
using Spire.Pdf;
using Spire.Pdf.Graphics;
using System;

class Program
{
    static void Main()
    {
        PdfDocument pdf = new PdfDocument();
        PdfHtmlLayoutFormat htmlLayoutFormat = new PdfHtmlLayoutFormat();

        string htmlString = "<html><body><h1>Hello World</h1><p>This is a PDF from HTML.</p></body></html>";

        pdf.LoadFromHTML(htmlString, false, true, true);
        pdf.SaveToFile("output.pdf");
        pdf.Close();
    }
}
Imports Spire.Pdf
Imports Spire.Pdf.Graphics
Imports System

Class Program
    Shared Sub Main()
        Dim pdf As New PdfDocument()
        Dim htmlLayoutFormat As New PdfHtmlLayoutFormat()

        Dim htmlString As String = "<html><body><h1>Hello World</h1><p>This is a PDF from HTML.</p></body></html>"

        pdf.LoadFromHTML(htmlString, False, True, True)
        pdf.SaveToFile("output.pdf")
        pdf.Close()
    End Sub
End Class
$vbLabelText   $csharpLabel

Após (IronPDF):

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

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

        string htmlString = "<html><body><h1>Hello World</h1><p>This is a PDF from HTML.</p></body></html>";

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

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

        string htmlString = "<html><body><h1>Hello World</h1><p>This is a PDF from HTML.</p></body></html>";

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

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

        Dim htmlString As String = "<html><body><h1>Hello World</h1><p>This is a PDF from HTML.</p></body></html>"

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

Este exemplo demonstra a diferença fundamental na renderização de HTML. Spire.PDF usa LoadFromHTML() com um objeto PdfHtmlLayoutFormat, que frequentemente renderiza texto como imagens bitmap. O resultado são PDFs onde os usuários não podem selecionar, copiar ou pesquisar texto.

IronPDF usa um ChromePdfRenderer com RenderHtmlAsPdf(), produzindo texto verdadeiro que é totalmente selecionável, pesquisável e acessível. Nenhuma chamada Close() é necessária—IronPDF usa o padrão de descarte para limpeza automática. Veja a documentação de HTML para PDF para exemplos abrangentes.

Exemplo 2: Mesclar vários PDFs

Antes (Spire.PDF):

// NuGet: Install-Package Spire.PDF
using Spire.Pdf;
using System;

class Program
{
    static void Main()
    {
        PdfDocument pdf1 = new PdfDocument();
        pdf1.LoadFromFile("document1.pdf");

        PdfDocument pdf2 = new PdfDocument();
        pdf2.LoadFromFile("document2.pdf");

        pdf1.InsertPageRange(pdf2, 0, pdf2.Pages.Count - 1);

        pdf1.SaveToFile("merged.pdf");
        pdf1.Close();
        pdf2.Close();
    }
}
// NuGet: Install-Package Spire.PDF
using Spire.Pdf;
using System;

class Program
{
    static void Main()
    {
        PdfDocument pdf1 = new PdfDocument();
        pdf1.LoadFromFile("document1.pdf");

        PdfDocument pdf2 = new PdfDocument();
        pdf2.LoadFromFile("document2.pdf");

        pdf1.InsertPageRange(pdf2, 0, pdf2.Pages.Count - 1);

        pdf1.SaveToFile("merged.pdf");
        pdf1.Close();
        pdf2.Close();
    }
}
Imports Spire.Pdf
Imports System

Class Program
    Shared Sub Main()
        Dim pdf1 As New PdfDocument()
        pdf1.LoadFromFile("document1.pdf")

        Dim pdf2 As New PdfDocument()
        pdf2.LoadFromFile("document2.pdf")

        pdf1.InsertPageRange(pdf2, 0, pdf2.Pages.Count - 1)

        pdf1.SaveToFile("merged.pdf")
        pdf1.Close()
        pdf2.Close()
    End Sub
End Class
$vbLabelText   $csharpLabel

Após (IronPDF):

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

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;

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

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

Spire.PDF requer carregar manualmente cada documento com new PdfDocument() + LoadFromFile(), depois usar InsertPageRange() para especificar quais páginas inserir, e finalmente chamar Close() em cada documento.

IronPDF usa o padrão mais simples PdfDocument.FromFile() e um método estático PdfDocument.Merge() que aceita múltiplos documentos. Nenhuma chamada Close() necessária. Saiba mais em nossos tutoriais .

Exemplo 3: Adicionando texto a um PDF

Antes (Spire.PDF):

// NuGet: Install-Package Spire.PDF
using Spire.Pdf;
using Spire.Pdf.Graphics;
using System.Drawing;
using System;

class Program
{
    static void Main()
    {
        PdfDocument pdf = new PdfDocument();
        PdfPageBase page = pdf.Pages.Add();

        PdfFont font = new PdfFont(PdfFontFamily.Helvetica, 20);
        PdfBrush brush = new PdfSolidBrush(Color.Black);

        page.Canvas.DrawString("Hello from Spire.PDF!", font, brush, new PointF(50, 50));

        pdf.SaveToFile("output.pdf");
        pdf.Close();
    }
}
// NuGet: Install-Package Spire.PDF
using Spire.Pdf;
using Spire.Pdf.Graphics;
using System.Drawing;
using System;

class Program
{
    static void Main()
    {
        PdfDocument pdf = new PdfDocument();
        PdfPageBase page = pdf.Pages.Add();

        PdfFont font = new PdfFont(PdfFontFamily.Helvetica, 20);
        PdfBrush brush = new PdfSolidBrush(Color.Black);

        page.Canvas.DrawString("Hello from Spire.PDF!", font, brush, new PointF(50, 50));

        pdf.SaveToFile("output.pdf");
        pdf.Close();
    }
}
Imports Spire.Pdf
Imports Spire.Pdf.Graphics
Imports System.Drawing
Imports System

Class Program
    Shared Sub Main()
        Dim pdf As New PdfDocument()
        Dim page As PdfPageBase = pdf.Pages.Add()

        Dim font As New PdfFont(PdfFontFamily.Helvetica, 20)
        Dim brush As PdfBrush = New PdfSolidBrush(Color.Black)

        page.Canvas.DrawString("Hello from Spire.PDF!", font, brush, New PointF(50, 50))

        pdf.SaveToFile("output.pdf")
        pdf.Close()
    End Sub
End Class
$vbLabelText   $csharpLabel

Após (IronPDF):

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<html><body></body></html>");

        var textStamper = new TextStamper()
        {
            Text = "Hello from IronPDF!",
            FontSize = 20,
            VerticalOffset = 50,
            HorizontalOffset = 50
        };

        pdf.ApplyStamp(textStamper);
        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Editing;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<html><body></body></html>");

        var textStamper = new TextStamper()
        {
            Text = "Hello from IronPDF!",
            FontSize = 20,
            VerticalOffset = 50,
            HorizontalOffset = 50
        };

        pdf.ApplyStamp(textStamper);
        pdf.SaveAs("output.pdf");
    }
}
Imports IronPdf
Imports IronPdf.Editing
Imports System

Class Program
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()
        Dim pdf = renderer.RenderHtmlAsPdf("<html><body></body></html>")

        Dim textStamper = New TextStamper() With {
            .Text = "Hello from IronPDF!",
            .FontSize = 20,
            .VerticalOffset = 50,
            .HorizontalOffset = 50
        }

        pdf.ApplyStamp(textStamper)
        pdf.SaveAs("output.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

Spire.PDF usa um modelo de desenho baseado em tela com PdfFont, PdfBrush e page.Canvas.DrawString() para posicionar texto em coordenadas específicas usando PointF.

IronPDF usa um objeto TextStamper com propriedades intuitivas como Text, FontSize, VerticalOffset e HorizontalOffset, depois aplica com ApplyStamp(). Essa abordagem é mais declarativa e mais fácil de manter.


O problema do texto como imagem

Por que isso é crucial

Quando o Spire.PDF converte HTML para PDF usando renderização baseada em imagens, seus documentos perdem funcionalidades essenciais:

1. Sem busca de texto: os usuários não podem usar Ctrl+F para encontrar texto. Os sistemas de gestão documental não conseguem indexar conteúdo.

2. Sem seleção/cópia de texto: Os usuários que tentam copiar uma citação, referência ou dados não podem selecionar o texto — trata-se de uma imagem.

3. Violações de acessibilidade: PDFs baseados em imagens não estão em conformidade com as diretrizes WCAG 2.1, com a Seção 508 (Governo dos EUA), com os requisitos da ADA e com a compatibilidade com leitores de tela.

4. Tamanhos Grandes de Arquivo: A saída baseada em imagens do caminho legado HTML pode produzir arquivos de ordem de magnitude maiores do que a saída baseada em texto que o IronPDF produz para o mesmo conteúdo.

Detecção: Seu PDF é baseado em imagens?

Abra o documento gerado pelo Spire.PDF e tente os seguintes testes:

  1. Seleção de texto: Clique e arraste sobre o texto. Se nada estiver destacado → BASEADO EM IMAGEM
  2. Pesquisa Ctrl+F: Busca qualquer palavra na página. Se "Nenhum resultado encontrado" → BASEADO EM IMAGEM
  3. Copiar/Colar: Selecione e copie o texto para o bloco de notas. Se nada for colado → BASEADO EM IMAGEM

O Problema do Mecanismo HTML Legado

Mecanismos de Renderização do Spire.PDF

O LoadFromHTML(...) do Spire.PDF historicamente ofereceu dois caminhos: um caminho não-plugin apoiado pelo controle WebBrowser do Windows Internet Explorer / Edge Legacy, e um caminho de plugin QT/WebKit baixado separadamente. Spire.PDF 10.7.21 (meados de 2024) adicionou uma terceira opção, ChromeHtmlConverter, que utiliza um Google Chrome instalado localmente — mas é opt-in e o API original LoadFromHTML ainda é padrão para os mecanismos legados. IE/Edge Legacy foi descontinuado pela Microsoft em 2022, o CSS moderno é confiável no caminho legado, o suporte a JavaScript é parcial, e a renderização pode variar entre sistemas.

CSS moderno que falha no Spire.PDF


<div style="display: flex; justify-content: space-between; gap: 20px;">
    <div style="flex: 1;">Column 1</div>
    <div style="flex: 1;">Column 2</div>
</div>

<div style="display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px;">
    <div>Item 1</div>
    <div>Item 2</div>
    <div>Item 3</div>
</div>

<style>
:root { --primary-color: #007bff; }
h1 { color: var(--primary-color); }
</style>

<div style="display: flex; justify-content: space-between; gap: 20px;">
    <div style="flex: 1;">Column 1</div>
    <div style="flex: 1;">Column 2</div>
</div>

<div style="display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px;">
    <div>Item 1</div>
    <div>Item 2</div>
    <div>Item 3</div>
</div>

<style>
:root { --primary-color: #007bff; }
h1 { color: var(--primary-color); }
</style>
HTML

O IronPDF utiliza a renderização moderna do Chromium, portanto todos esses recursos de CSS funcionam corretamente.


Novas funcionalidades após a migração

Após migrar para o IronPDF, você obtém recursos que o Spire.PDF não oferece:

Texto selecionável e pesquisável

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Important Contract</h1>");
pdf.SaveAs("contract.pdf");

// Result:
// ✅ Text is fully selectable
// ✅ Text is searchable with Ctrl+F
// ✅ Text can be copied to clipboard
// ✅ Screen readers work perfectly
// ✅ File size is compact
// ✅ Zooming is crystal clear
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Important Contract</h1>");
pdf.SaveAs("contract.pdf");

// Result:
// ✅ Text is fully selectable
// ✅ Text is searchable with Ctrl+F
// ✅ Text can be copied to clipboard
// ✅ Screen readers work perfectly
// ✅ File size is compact
// ✅ Zooming is crystal clear
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Important Contract</h1>")
pdf.SaveAs("contract.pdf")

' Result:
' ✅ Text is fully selectable
' ✅ Text is searchable with Ctrl+F
' ✅ Text can be copied to clipboard
' ✅ Screen readers work perfectly
' ✅ File size is compact
' ✅ Zooming is crystal clear
$vbLabelText   $csharpLabel

Suporte a CSS moderno

var renderer = new ChromePdfRenderer();

var html = @"
<style>
    :root { --primary: #007bff; }
    .container { display: flex; gap: 20px; }
    .grid { display: grid; grid-template-columns: repeat(3, 1fr); }
</style>
<div class='container'>
    <div style='flex: 1; color: var(--primary)'>Column 1</div>
    <div style='flex: 1'>Column 2</div>
</div>
<div class='grid'>
    <div>Item 1</div>
    <div>Item 2</div>
    <div>Item 3</div>
</div>";

var pdf = renderer.RenderHtmlAsPdf(html);
// All modern CSS features render correctly!
var renderer = new ChromePdfRenderer();

var html = @"
<style>
    :root { --primary: #007bff; }
    .container { display: flex; gap: 20px; }
    .grid { display: grid; grid-template-columns: repeat(3, 1fr); }
</style>
<div class='container'>
    <div style='flex: 1; color: var(--primary)'>Column 1</div>
    <div style='flex: 1'>Column 2</div>
</div>
<div class='grid'>
    <div>Item 1</div>
    <div>Item 2</div>
    <div>Item 3</div>
</div>";

var pdf = renderer.RenderHtmlAsPdf(html);
// All modern CSS features render correctly!
Dim renderer = New ChromePdfRenderer()

Dim html = "
<style>
    :root { --primary: #007bff; }
    .container { display: flex; gap: 20px; }
    .grid { display: grid; grid-template-columns: repeat(3, 1fr); }
</style>
<div class='container'>
    <div style='flex: 1; color: var(--primary)'>Column 1</div>
    <div style='flex: 1'>Column 2</div>
</div>
<div class='grid'>
    <div>Item 1</div>
    <div>Item 2</div>
    <div>Item 3</div>
</div>"

Dim pdf = renderer.RenderHtmlAsPdf(html)
' All modern CSS features render correctly!
$vbLabelText   $csharpLabel

Marcas d'água baseadas em HTML

var pdf = renderer.RenderHtmlAsPdf(html);
pdf.ApplyWatermark(@"
    <div style='
        font-size: 48px;
        color: rgba(255, 0, 0, 0.5);
        transform: rotate(-45deg);
    '>DRAFT</div>");
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.ApplyWatermark(@"
    <div style='
        font-size: 48px;
        color: rgba(255, 0, 0, 0.5);
        transform: rotate(-45deg);
    '>DRAFT</div>");
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.ApplyWatermark("
    <div style='
        font-size: 48px;
        color: rgba(255, 0, 0, 0.5);
        transform: rotate(-45deg);
    '>DRAFT</div>")
$vbLabelText   $csharpLabel

Lista de verificação para migração

Pré-migração

  • Inventariar todas as utilizações de Spire.PDF na base de código.
  • Testar PDFs existentes quanto à possibilidade de seleção de texto (detecção de problemas críticos)
  • Chamadas de LoadFromHTML() de documento (estas são a prioridade para corrigir)
  • Obtenha a chave de licença do IronPDF em IronPDF

Atualizações de código

  • Remover pacote NuGet Spire.PDF (e FreeSpire.PDF se estiver usando a versão gratuita)
  • Instalar pacote NuGet IronPdf
  • Atualizar importações de namespace (using Spire.Pdf;using IronPdf;)
  • Substituir LoadFromHTML() por RenderHtmlAsPdf() (CORREÇÃO CRÍTICA)
  • Substituir new PdfDocument() + LoadFromFile() por PdfDocument.FromFile()
  • Substituir InsertPageRange() por PdfDocument.Merge()
  • Substituir Canvas.DrawString() por TextStamper + ApplyStamp()
  • Substituir SaveToFile() por SaveAs()
  • Remover todas as chamadas Close() (não necessárias no IronPDF)
  • Adicionar inicialização de licença na inicialização do aplicativo

Testando

  • Verificar se o texto é selecionável nos PDFs gerados (TESTE CRÍTICO)
  • Verificar melhorias na renderização de CSS (Flexbox/Grid agora funcionam)
  • Verifique se os tamanhos dos arquivos são menores.
  • Testar a acessibilidade com leitores de tela
  • Comparação de desempenho

ObserveSpire é uma marca registrada de seu respectivo proprietário. Este site não é afiliado, endossado ou patrocinado por e-iceblue. 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