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

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

A migração do Spire.PDF para o IronPDF transforma seu fluxo de trabalho de geração de PDFs, substituindo uma biblioteca que renderiza texto como imagens por uma que produz texto verdadeiro, selecionável e pesquisável, utilizando um mecanismo de renderização Chromium moderno. Este guia fornece um caminho de migração completo, passo a passo, que resolve as limitações críticas de renderização HTML e os problemas de incorporação de fontes do Spire.PDF.

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 renderizado como imagens 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 do Internet Explorer Renderização desatualizada, riscos de segurança Motor Chromium moderno
falhas na incorporação de fontes Os documentos parecem estar incorretos em outros sistemas. Manipulação confiável de fontes
Grande área de implantação Alto consumo de memória, inicialização lenta. Implantação eficiente
Suporte limitado a CSS Os layouts modernos não são renderizados corretamente. Suporte completo a CSS3

O problema central: PDFs baseados em imagens

Uma desvantagem significativa do Spire.PDF é sua tendência a renderizar o texto em documentos HTML como imagens. Isso resulta em PDFs onde o texto não é selecionável ou pesquisável, o que pode ser uma limitação séria para aplicativos que necessitam de funcionalidade de busca ou interação com o texto do documento.

Ao usar o método LoadFromHTML() do Spire.PDF, o texto frequentemente é renderizado como imagens bitmap em vez de texto propriamente dito, causando os seguintes 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 Texto renderizado como imagens Renderização de texto verdadeira (selecionável e pesquisável)
Motor de renderização O Internet Explorer depende de alguns sistemas. Baseado no Chromium e compatível com os padrões modernos da web.
Manipulação de fontes Problemas conhecidos com a incorporação de fontes Manipulação de fontes confiável e robusta
Suporte a CSS3 Limitado Completo
Flexbox/Grade Não suportado Apoiado
JavaScript Limitado ES6+ completo
Acessibilidade do PDF Ruim (baseado em imagens) Excelente
Design de API Complexo Simples e intuitivo
Área de Implantação Grande Moderado
Licenciamento Gratuito/Comercial Comercial

Para equipes que planejam a adoção do .NET 10 e do C# 14 até 2025 e 2026, o IronPDF resolve problemas críticos com a conversão de HTML para PDF do Spire.PDF, renderizando o texto como texto selecionável em vez de imagens, garantindo que os PDFs sejam 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 geralmente renderiza o texto como imagens bitmap. O resultado são PDFs onde os usuários não podem selecionar, copiar ou pesquisar texto.

O IronPDF usa um ChromePdfRenderer com RenderHtmlAsPdf(), produzindo texto verdadeiro que é totalmente selecionável, pesquisável e acessível. Não é necessário chamar Close() — o IronPDF usa o padrão dispose para limpeza automática. Consulte a documentação de HTML para PDF para obter exemplos completos.

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 o carregamento manual de cada documento com new PdfDocument() + LoadFromFile(), em seguida, o uso de InsertPageRange() para especificar quais páginas inserir e, finalmente, a chamada de Close() em cada documento.

O IronPDF usa o padrão mais simples PdfDocument.FromFile() e um método estático PdfDocument.Merge() que aceita vários documentos. Não são necessárias chamadas Close(). 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 o texto em coordenadas específicas usando PointF.

IronPDF usa um objeto TextStamper com propriedades intuitivas como Text, FontSize, VerticalOffset e HorizontalOffset, e então o 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 de arquivo grandes: A comparação do mesmo conteúdo mostra que o Spire.PDF (baseado em imagens) produz arquivos até 16 vezes maiores que o IronPDF (baseado em texto).

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 Internet Explorer

Mecanismo de renderização do Spire.PDF

O Spire.PDF depende do Internet Explorer/Edge Legacy para renderização de HTML em alguns ambientes. O Internet Explorer foi descontinuado em 2022, o CSS moderno não funciona, o suporte a JavaScript é limitado e a renderização é inconsistente entre os 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)
  • Documentar chamadas LoadFromHTML() (estas são as prioritárias para correção)
  • Obtenha a chave de licença do IronPDF em IronPDF

Atualizações de código

  • Remova o pacote NuGet Spire.PDF (e FreeSpire.PDF se estiver usando a versão gratuita)
  • Instale o pacote NuGet IronPdf
  • Atualizar importações de namespace (using Spire.Pdf;using IronPdf;)
  • Substituir LoadFromHTML() por RenderHtmlAsPdf() (CORREÇÃO CRÍTICA)
  • Substitua new PdfDocument() + LoadFromFile() por PdfDocument.FromFile()
  • Substitua InsertPageRange() por PdfDocument.Merge()
  • Substitua Canvas.DrawString() por TextStamper + ApplyStamp()
  • Substitua 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

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 de ferro

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