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

Como migrar do Pdfium para o IronPDF em C#

Migrar de um envoltório PDFium .NET para o IronPDF move seu fluxo de trabalho PDF .NET de um motor focado em renderização com dependências binárias nativas para uma solução PDF abrangente que lida com criação, manipulação e renderização sem complexidade específica de plataforma. Este guia fornece um caminho de migração passo a passo que elimina o gerenciamento de dependência nativa enquanto adiciona capacidades que o próprio PDFium não oferece.

Por que Migrar de um Envoltório PDFium para IronPDF

Entendendo os Envoltórios PDFium .NET

PDFium é o motor de renderização e análise PDF C++ BSD-3-Clause da Google — o mesmo motor que alimenta o visualizador PDF embutido do Chrome. Não há ligação oficial do Google for .NET; em vez disso, o ecossistema .NET consome PDFium através de envoltórios comunitários. Os quatro pacotes NuGet mais comumente citados são PdfiumViewer (pvginkel; Apache 2.0; arquivado em agosto de 2019, última versão 2.13.0 em novembro de 2017, .NET Framework 2.0+), PdfiumViewer.Updated (um fork mantido portado para .NET Core / .NET 6), PDFiumCore (Dtronix; .NET Standard 2.1 vinculações P/Invoke), e Pdfium.Net.SDK (Patagames; SDK comercial, licença perpétua).

Suas APIs diferem, mas compartilham uma característica: o próprio PDFium é um motor de renderização e análise, não um motor de HTML para PDF ou criação de documentos. PDFium não tem um analisador HTML, então nenhum envoltório pode converter HTML para PDF por conta própria. Este guia usa PdfiumViewer como o wrapper representativo para trechos "antes" porque sua API é a mais citada; a abordagem de migração é a mesma para qualquer um dos quatro.

Limitações Críticas dos Envoltórios PDFium

  1. Primeiro Renderização: PDFium não tem analisador de HTML, então nenhum envoltório pode criar PDFs a partir de HTML, URLs ou imagens arbitrárias.

  2. Manipulação Limitada em Envoltórios de Código Aberto: Visualizador de PDF / PDFiumCore expõem visualização e extração de texto por página; mesclagem / divisão / edição de formulários é parcial no Patagames Pdfium.Net.SDK e amplamente ausente nos envoltórios gratuitos.

  3. Dependências Binárias Nativas: Requer binários PDFium específicos da plataforma (pdfium.dll / .so / .dylib) por RID.

  4. Complexidade de Implantação: Deve-se agrupar e gerenciar binários nativos por plataforma com pastas x86, x64, e runtimes.

  5. Extração de Texto Básica: Visualizador de PDF expõe texto bruto por página via GetPdfText(int); metadados de layout / formato não são expostos.

  6. Nenhum HTML para PDF: PDFium não tem analisador de HTML; conteúdo da web não pode ser convertido diretamente.

  7. Sem Cabeçalhos/Rodapés Integrados: Nenhuma API de sobreposição de página de alto nível.

  8. Sem Marcas D'água Integradas: Nenhuma primitiva de carimbo.

  9. Formulários: Somente leitura ou ausentes nos envoltórios gratuitos; disponível no Patagames Pdfium.Net.SDK.

  10. Segurança: Criptografia / permissões não expostas pelos envoltórios gratuitos; disponível no Patagames Pdfium.Net.SDK.

Comparação entre Envoltórios PDFium e IronPDF

Aspecto envoltórios PDFium .NET IronPDF
Foco principal Renderização/visualização Solução completa em PDF
Fidelidade de renderização Renderização de alta fidelidade Alta qualidade, especialmente para HTML/CSS/JS.
Criação de PDF a partir de HTML None Sim (HTML, URL, imagens)
Manipulação de PDF Envoltórios gratuitos: nenhum; Patagames: parcial Sim (mesclar, dividir, editar)
HTML para PDF None Sim (motor Chromium)
Marcas d'água Não embutido Sim
Cabeçalhos/Rodapés Não embutido Sim
Preenchimento de formulários Envoltórios gratuitos: nenhum; Patagames: sim Sim
Segurança Envoltórios gratuitos: nenhum; Patagames: sim Sim
Dependências nativas Obrigatório Integrado / gerenciado pelo NuGet
Multiplataforma Gerenciamento manual de binários nativos Automático
Facilidade de Implantação Complicado por dependências nativas Mais fácil; menos complicações de dependência

Para equipes visando o .NET moderno, o IronPDF fornece uma base totalmente gerenciada que elimina o gerenciamento de binários nativos enquanto adiciona capacidades abrangentes de criação e manipulação de PDF.


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 whichever PDFium wrapper you used:
#   Visualizador de PDF            (Apache 2.0 - archived 2019, .NET Framework only)
#   PdfiumViewer.Updated    (community fork, .NET Core / .NET 6)
#   PDFiumCore              (Dtronix - .NET Standard 2.1 P/Invoke bindings)
#   Pdfium.Net.SDK          (Patagames - commercial, perpetual license)
dotnet remove package PdfiumViewer
dotnet remove package PdfiumViewer.Updated
dotnet remove package PDFiumCore
dotnet remove package Pdfium.Net.SDK

# Install IronPDF
dotnet add package IronPdf
# Remove whichever PDFium wrapper you used:
#   Visualizador de PDF            (Apache 2.0 - archived 2019, .NET Framework only)
#   PdfiumViewer.Updated    (community fork, .NET Core / .NET 6)
#   PDFiumCore              (Dtronix - .NET Standard 2.1 P/Invoke bindings)
#   Pdfium.Net.SDK          (Patagames - commercial, perpetual license)
dotnet remove package PdfiumViewer
dotnet remove package PdfiumViewer.Updated
dotnet remove package PDFiumCore
dotnet remove package Pdfium.Net.SDK

# Install IronPDF
dotnet add package IronPdf
SHELL

Configuração de licença

// Add at application startup (Program.cs or Startup.cs)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Add at application startup (Program.cs or Startup.cs)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
' Add at application startup (Program.vb or Startup.vb)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
$vbLabelText   $csharpLabel

Identificar Uso de Envoltório PDFium

# Find PDFium wrapper usage
grep -rE "PdfiumViewer|PDFiumCore|Patagames\.Pdf|PdfDocument\.Load|\.Render\(" --include="*.cs" .

# Find native binary references
grep -rE "pdfium\.dll|libpdfium\.(so|dylib)" --include="*.csproj" --include="*.config" .

# Find platform-specific code
grep -rE "#if.*64|WIN32|WIN64|LINUX|OSX" --include="*.cs" .
# Find PDFium wrapper usage
grep -rE "PdfiumViewer|PDFiumCore|Patagames\.Pdf|PdfDocument\.Load|\.Render\(" --include="*.cs" .

# Find native binary references
grep -rE "pdfium\.dll|libpdfium\.(so|dylib)" --include="*.csproj" --include="*.config" .

# Find platform-specific code
grep -rE "#if.*64|WIN32|WIN64|LINUX|OSX" --include="*.cs" .
SHELL

Referência completa da API

Alterações de namespace

// PDFium wrappers (use the one you installed)
using PdfiumViewer;             // Visualizador de PDF / PdfiumViewer.Updated
using PDFiumCore;               // Dtronix PDFiumCore (P/Invoke bindings)
using Patagames.Pdf;            // Patagames Pdfium.Net.SDK
using Patagames.Pdf.Net;        // Patagames Pdfium.Net.SDK

// IronPDF
using IronPdf;
using IronPdf.Rendering;
using IronPdf.Editing;
// PDFium wrappers (use the one you installed)
using PdfiumViewer;             // Visualizador de PDF / PdfiumViewer.Updated
using PDFiumCore;               // Dtronix PDFiumCore (P/Invoke bindings)
using Patagames.Pdf;            // Patagames Pdfium.Net.SDK
using Patagames.Pdf.Net;        // Patagames Pdfium.Net.SDK

// IronPDF
using IronPdf;
using IronPdf.Rendering;
using IronPdf.Editing;
Imports PdfiumViewer ' Visualizador de PDF / PdfiumViewer.Updated
Imports PDFiumCore ' Dtronix PDFiumCore (P/Invoke bindings)
Imports Patagames.Pdf ' Patagames Pdfium.Net.SDK
Imports Patagames.Pdf.Net ' Patagames Pdfium.Net.SDK

Imports IronPdf
Imports IronPdf.Rendering
Imports IronPdf.Editing
$vbLabelText   $csharpLabel

Mapeamentos de Classes Principais

Visualizador de PDF IronPDF Notas
PdfiumViewer.PdfDocument IronPdf.PdfDocument Mesmo nome simples em diferentes namespaces
PdfRenderer (controle WinForms) (não aplicável) PdfiumViewer também oferece controles de UI;IronPDF é sem interface
(não disponível) ChromePdfRenderer HTML / URL → PDF
(não disponível) HtmlHeaderFooter Cabeçalhos/rodapés

Mapeamentos de carregamento de documentos

Visualizador de PDF IronPDF Notas
PdfDocument.Load(path) PdfDocument.FromFile(path) Carregar do arquivo
PdfDocument.Load(stream) PdfDocument.FromStream(stream) Carregar do fluxo
(envolver bytes em MemoryStream) PdfDocument.FromBinaryData(bytes) Carregar a partir de bytes

Mapeamentos de propriedades de documentos

Visualizador de PDF IronPDF Notas
document.PageCount document.PageCount Mesmo
document.PageSizes (IList<SizeF>) document.Pages[index].Width / Height PdfiumViewer expõe tamanhos; pages are not first-class objects
document.PageSizes[i].Width document.Pages[i].Width Largura por página em pontos

Mapeamentos de Extração de Texto

Visualizador de PDF IronPDF Notas
document.GetPdfText(pageIndex) document.Pages[index].Text Por página
(loop manual) document.ExtractAllText() Todas as páginas

Salvando Mapeamentos de Documentos

Visualizador de PDF IronPDF Notas
document.Save(stream) document.SaveAs(path) PdfiumViewer aceita um Stream;IronPDF aceita um caminho
(não disponível) document.Stream Acesso a fluxo bruto
(não disponível) document.BinaryData Obter bytes

Mapeamentos de renderização de página

Visualizador de PDF IronPDF Notas
document.Render(page, width, height, dpiX, dpiY, flags) pdf.RasterizeToImageFiles(path, DPI) Rasterizar
Laço manual sobre document.Render(i, ...) pdf.RasterizeToImageFiles("page_*.png") Renderização em lote em todas as páginas
Matemática de escala manual DPI = 72 * scale Conversão de escala para DPI

Novos Recursos Não Disponíveis em Envoltórios PDFium

Recurso IronPDF Descrição
ChromePdfRenderer.RenderHtmlAsPdf() Criar a partir de HTML
ChromePdfRenderer.RenderUrlAsPdf() Criar a partir de um URL
ChromePdfRenderer.RenderHtmlFileAsPdf() Criar a partir de um arquivo HTML
PdfDocument.Merge() Combinar PDFs
pdf.CopyPages() Páginas extraídas
pdf.RemovePages() Excluir páginas
pdf.InsertPdf() Inserir PDF na posição
pdf.ApplyWatermark() Adicionar marcas d'água
pdf.AddHtmlHeaders() Adicionar cabeçalhos
pdf.AddHtmlFooters() Adicionar rodapés
pdf.SecuritySettings Proteção por senha
pdf.SignWithDigitalSignature() Assinaturas digitais
pdf.Form Preenchimento de formulário

Exemplos de migração de código

Exemplo 1: Extração de texto de um PDF

Antes (PdfiumViewer):

// NuGet: Install-Package Visualizador de PDF  (Apache 2.0; archived Aug 2019, .NET Framework 2.0+)
//        or Install-Package PdfiumViewer.Updated  (maintained fork, .NET Core / .NET 6)
//        or Install-Package PDFiumCore             (Dtronix, .NET Standard 2.1 P/Invoke)
//        or Install-Package Pdfium.Net.SDK         (Patagames, commercial perpetual license)
using PdfiumViewer;
using System;
using System.IO;
using System.Text;

class Program
{
    static void Main()
    {
        string pdfPath = "document.pdf";

        using (var document = PdfDocument.Load(pdfPath))
        {
            StringBuilder text = new StringBuilder();

            for (int i = 0; i < document.PageCount; i++)
            {
                // PdfiumViewer's text extraction is per-page raw text via GetPdfText(int).
                // No layout / format metadata is exposed.
                string pageText = document.GetPdfText(i);
                text.AppendLine(pageText);
            }

            Console.WriteLine(text.ToString());
        }
    }
}
// NuGet: Install-Package Visualizador de PDF  (Apache 2.0; archived Aug 2019, .NET Framework 2.0+)
//        or Install-Package PdfiumViewer.Updated  (maintained fork, .NET Core / .NET 6)
//        or Install-Package PDFiumCore             (Dtronix, .NET Standard 2.1 P/Invoke)
//        or Install-Package Pdfium.Net.SDK         (Patagames, commercial perpetual license)
using PdfiumViewer;
using System;
using System.IO;
using System.Text;

class Program
{
    static void Main()
    {
        string pdfPath = "document.pdf";

        using (var document = PdfDocument.Load(pdfPath))
        {
            StringBuilder text = new StringBuilder();

            for (int i = 0; i < document.PageCount; i++)
            {
                // PdfiumViewer's text extraction is per-page raw text via GetPdfText(int).
                // No layout / format metadata is exposed.
                string pageText = document.GetPdfText(i);
                text.AppendLine(pageText);
            }

            Console.WriteLine(text.ToString());
        }
    }
}
Imports PdfiumViewer
Imports System
Imports System.IO
Imports System.Text

Module Program
    Sub Main()
        Dim pdfPath As String = "document.pdf"

        Using document = PdfDocument.Load(pdfPath)
            Dim text As New StringBuilder()

            For i As Integer = 0 To document.PageCount - 1
                ' PdfiumViewer's text extraction is per-page raw text via GetPdfText(int).
                ' No layout / format metadata is exposed.
                Dim pageText As String = document.GetPdfText(i)
                text.AppendLine(pageText)
            Next

            Console.WriteLine(text.ToString())
        End Using
    End Sub
End Module
$vbLabelText   $csharpLabel

Após (IronPDF):

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

class Program
{
    static void Main()
    {
        IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

        string pdfPath = "document.pdf";

        var pdf = PdfDocument.FromFile(pdfPath);
        string text = pdf.ExtractAllText();

        Console.WriteLine(text);
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

        string pdfPath = "document.pdf";

        var pdf = PdfDocument.FromFile(pdfPath);
        string text = pdf.ExtractAllText();

        Console.WriteLine(text);
    }
}
Imports IronPdf
Imports System

Class Program
    Shared Sub Main()
        IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"

        Dim pdfPath As String = "document.pdf"

        Dim pdf = PdfDocument.FromFile(pdfPath)
        Dim text As String = pdf.ExtractAllText()

        Console.WriteLine(text)
    End Sub
End Class
$vbLabelText   $csharpLabel

A diferença aqui é significativa. Visualizador de PDF requer um laço manual através de cada página com GetPdfText(int), construindo um StringBuilder e gerenciando a instrução using para descarte adequado—e o texto retornado é texto bruto por página sem metadados de layout/formato.

IronPDF simplifica isso para algumas linhas: carregue com PdfDocument.FromFile(), extraia com ExtractAllText() e produza. O método ExtractAllText() lida com todas as páginas automaticamente. Se você precisar de extração por página, pode usar pdf.Pages[index].Text. Consulte a documentação de extração de texto para obter opções adicionais.

Exemplo 2: Fusão de PDFs

Antes (PdfiumViewer):

// NuGet: Install-Package Visualizador de PDF  (representative open-source PDFium wrapper)
// Visualizador de PDF and PDFiumCore do not expose PDF merge APIs - PDFium itself
// is a rendering / parsing engine, not a document-authoring engine.
// (Patagames Pdfium.Net.SDK exposes some document-edit operations but is commercial.)
using PdfiumViewer;
using System;
using System.IO;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        List<string> pdfFiles = new List<string>
        {
            "document1.pdf",
            "document2.pdf",
            "document3.pdf"
        };

        // To merge PDFs from a PDFium wrapper you must reach for another library
        // (PdfSharp, iText, IronPDF) or, with Patagames Pdfium.Net.SDK, use its
        // document-edit APIs.

        Console.WriteLine("PDF merging is not supported by Visualizador de PDF / PDFiumCore.");
    }
}
// NuGet: Install-Package Visualizador de PDF  (representative open-source PDFium wrapper)
// Visualizador de PDF and PDFiumCore do not expose PDF merge APIs - PDFium itself
// is a rendering / parsing engine, not a document-authoring engine.
// (Patagames Pdfium.Net.SDK exposes some document-edit operations but is commercial.)
using PdfiumViewer;
using System;
using System.IO;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        List<string> pdfFiles = new List<string>
        {
            "document1.pdf",
            "document2.pdf",
            "document3.pdf"
        };

        // To merge PDFs from a PDFium wrapper you must reach for another library
        // (PdfSharp, iText, IronPDF) or, with Patagames Pdfium.Net.SDK, use its
        // document-edit APIs.

        Console.WriteLine("PDF merging is not supported by Visualizador de PDF / PDFiumCore.");
    }
}
Imports PdfiumViewer
Imports System
Imports System.IO
Imports System.Collections.Generic

Module Program
    Sub Main()
        Dim pdfFiles As New List(Of String) From {
            "document1.pdf",
            "document2.pdf",
            "document3.pdf"
        }

        ' To merge PDFs from a PDFium wrapper you must reach for another library
        ' (PdfSharp, iText, IronPDF) or, with Patagames Pdfium.Net.SDK, use its
        ' document-edit APIs.

        Console.WriteLine("PDF merging is not supported by Visualizador de PDF / PDFiumCore.")
    End Sub
End Module
$vbLabelText   $csharpLabel

Após (IronPDF):

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

class Program
{
    static void Main()
    {
        IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

        List<string> pdfFiles = new List<string>
        {
            "document1.pdf",
            "document2.pdf",
            "document3.pdf"
        };

        // PdfDocument.Merge accepts an IEnumerable<PdfDocument>, so load each file first.
        var docs = pdfFiles.Select(path => PdfDocument.FromFile(path)).ToList();
        var merged = PdfDocument.Merge(docs);
        merged.SaveAs("merged.pdf");

        Console.WriteLine("PDFs merged successfully");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Collections.Generic;
using System.Linq;

class Program
{
    static void Main()
    {
        IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

        List<string> pdfFiles = new List<string>
        {
            "document1.pdf",
            "document2.pdf",
            "document3.pdf"
        };

        // PdfDocument.Merge accepts an IEnumerable<PdfDocument>, so load each file first.
        var docs = pdfFiles.Select(path => PdfDocument.FromFile(path)).ToList();
        var merged = PdfDocument.Merge(docs);
        merged.SaveAs("merged.pdf");

        Console.WriteLine("PDFs merged successfully");
    }
}
Imports IronPdf
Imports System
Imports System.Collections.Generic
Imports System.Linq

Module Program
    Sub Main()
        IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"

        Dim pdfFiles As New List(Of String) From {
            "document1.pdf",
            "document2.pdf",
            "document3.pdf"
        }

        ' PdfDocument.Merge accepts an IEnumerable(Of PdfDocument), so load each file first.
        Dim docs = pdfFiles.Select(Function(path) PdfDocument.FromFile(path)).ToList()
        Dim merged = PdfDocument.Merge(docs)
        merged.SaveAs("merged.pdf")

        Console.WriteLine("PDFs merged successfully")
    End Sub
End Module
$vbLabelText   $csharpLabel

Este exemplo destaca um vão de capacidade. Envoltórios PDFium gratuitos (PdfiumViewer, PDFiumCore) não expõem APIs de mesclagem; o Patagames Pdfium.Net.SDK expõe algumas operações de edição de documentos, mas é comercial.

IronPDF fornece mesclagem nativa com o método estático PdfDocument.Merge(), que recebe um IEnumerable<PdfDocument>—carregue cada arquivo de entrada com PdfDocument.FromFile() primeiro, depois mescle os documentos resultantes. O resultado é um novo PdfDocument que você salva com SaveAs(). Saiba mais sobre como mesclar e dividir PDFs .

Exemplo 3: Conversão de HTML para PDF

Antes (PdfiumViewer):

// NuGet: Install-Package Visualizador de PDF  (representative PDFium wrapper)
// PDFium is a PDF rendering / parsing engine. It has NO HTML parser, so no
// PDFium .NET wrapper (PdfiumViewer, PdfiumViewer.Updated, PDFiumCore,
// Pdfium.Net.SDK) can convert HTML to PDF on its own.
using PdfiumViewer;
using System;
using System.IO;
using System.Drawing.Printing;

class Program
{
    static void Main()
    {
        // PDFium has no native HTML-to-PDF capability.
        // Produce the PDF with another engine (wkhtmltopdf, headless Chromium,
        // IronPDF, etc.) and then load it with PdfDocument.Load(...) for rendering.
        string htmlContent = "<h1>Hello World</h1>";

        Console.WriteLine("HTML to PDF conversion is not supported by PDFium.");
    }
}
// NuGet: Install-Package Visualizador de PDF  (representative PDFium wrapper)
// PDFium is a PDF rendering / parsing engine. It has NO HTML parser, so no
// PDFium .NET wrapper (PdfiumViewer, PdfiumViewer.Updated, PDFiumCore,
// Pdfium.Net.SDK) can convert HTML to PDF on its own.
using PdfiumViewer;
using System;
using System.IO;
using System.Drawing.Printing;

class Program
{
    static void Main()
    {
        // PDFium has no native HTML-to-PDF capability.
        // Produce the PDF with another engine (wkhtmltopdf, headless Chromium,
        // IronPDF, etc.) and then load it with PdfDocument.Load(...) for rendering.
        string htmlContent = "<h1>Hello World</h1>";

        Console.WriteLine("HTML to PDF conversion is not supported by PDFium.");
    }
}
Imports PdfiumViewer
Imports System
Imports System.IO
Imports System.Drawing.Printing

Module Program
    Sub Main()
        ' PDFium has no native HTML-to-PDF capability.
        ' Produce the PDF with another engine (wkhtmltopdf, headless Chromium,
        ' IronPDF, etc.) and then load it with PdfDocument.Load(...) for rendering.
        Dim htmlContent As String = "<h1>Hello World</h1>"

        Console.WriteLine("HTML to PDF conversion is not supported by PDFium.")
    End Sub
End Module
$vbLabelText   $csharpLabel

Após (IronPDF):

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

class Program
{
    static void Main()
    {
        IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

        var renderer = new ChromePdfRenderer();
        string htmlContent = "<h1>Hello World</h1>";

        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        pdf.SaveAs("output.pdf");

        Console.WriteLine("PDF created successfully");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

        var renderer = new ChromePdfRenderer();
        string htmlContent = "<h1>Hello World</h1>";

        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        pdf.SaveAs("output.pdf");

        Console.WriteLine("PDF created successfully");
    }
}
Imports IronPdf
Imports System

Module Program
    Sub Main()
        IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"

        Dim renderer As New ChromePdfRenderer()
        Dim htmlContent As String = "<h1>Hello World</h1>"

        Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)
        pdf.SaveAs("output.pdf")

        Console.WriteLine("PDF created successfully")
    End Sub
End Module
$vbLabelText   $csharpLabel

Este exemplo demonstra a diferença de capacidade mais significativa. PDFium não tem parser HTML, então nenhum envoltório .NET ao seu redor pode converter HTML para PDF por conta própria.

IronPDF fornece conversão nativa de HTML para PDF através de ChromePdfRenderer, que usa um mecanismo Chromium internamente para renderização precisa de HTML, CSS e JavaScript. O método RenderHtmlAsPdf() converte strings HTML diretamente em documentos PDF.IronPDF também pode renderizar URLs com RenderUrlAsPdf() e arquivos HTML com RenderHtmlFileAsPdf(). Consulte a documentação de conversão de HTML para PDF para obter exemplos completos.


Remoção de dependências nativas

Um dos benefícios mais significativos de migrar de um envoltório PDFium para IronPDF é eliminar o gerenciamento de binários nativos.

Antes (envoltório PDFium) - Implantação Complexa

MyApp/
├── bin/
│ ├── MyApp.dll
│   ├── PdfiumViewer.dll      # or PDFiumCore.dll / Patagames.Pdf.dll
│ ├── x86/
│ │ └── pdfium.dll
│ └── x64/
│ └── pdfium.dll
├── tempos de execução/
│ ├── win-x86/nativo/
│ │ └── pdfium.dll
│   ├── win-x64/native/
│ │ └── pdfium.dll
│   ├── linux-x64/native/
│   │   └── libpdfium.so
│   └── osx-x64/native/
│       └── libpdfium.dylib

Após (IronPDF) - Implantação limpa

MyApp/
├── bin/
│ ├── MyApp.dll
│ └── IronPDF.dll # Tudo incluído

Remover referências binárias nativas

# Delete native PDFium binaries
rm -rf x86/x64/runtimes/

# Remove from .csproj
# Delete any <Content Include="pdfium.dll" /> entries
# Delete any <None Include="x86/pdfium.dll" /> entries
# Delete native PDFium binaries
rm -rf x86/x64/runtimes/

# Remove from .csproj
# Delete any <Content Include="pdfium.dll" /> entries
# Delete any <None Include="x86/pdfium.dll" /> entries
SHELL

Notas críticas sobre migração

Conversão de escala para DPI

O Render(...) do Visualizador de PDF leva dpiX/dpiY explícitos e a renderização subjacente do PDFium é baseada em escala (1.0 = 72 DPI).IronPDF usa DPI diretamente:

// Formula:IronPDF DPI = 72 × PDFium scale
// PDFium scale 2.0 →IronPDF DPI 144
pdf.RasterizeToImageFiles("*.png", DPI: 144);
// Formula:IronPDF DPI = 72 × PDFium scale
// PDFium scale 2.0 →IronPDF DPI 144
pdf.RasterizeToImageFiles("*.png", DPI: 144);
' Formula: IronPDF DPI = 72 × PDFium scale
' PDFium scale 2.0 → IronPDF DPI 144
pdf.RasterizeToImageFiles("*.png", DPI:=144)
$vbLabelText   $csharpLabel

Alteração do método de carregamento do documento

// PdfiumViewer
PdfDocument.Load(path)

// IronPDF
PdfDocument.FromFile(path)
// PdfiumViewer
PdfDocument.Load(path)

// IronPDF
PdfDocument.FromFile(path)
' PdfiumViewer
PdfDocument.Load(path)

' IronPDF
PdfDocument.FromFile(path)
$vbLabelText   $csharpLabel

Salvar alteração de método

// Visualizador de PDF (takes a Stream)
document.Save(stream)

//IronPDF(takes a path)
pdf.SaveAs(path)
// Visualizador de PDF (takes a Stream)
document.Save(stream)

//IronPDF(takes a path)
pdf.SaveAs(path)
' Visualizador de PDF (takes a Stream)
document.Save(stream)

' IronPDF (takes a path)
pdf.SaveAs(path)
$vbLabelText   $csharpLabel

Simplificação do padrão de descarte

// PdfiumViewer: explicit disposal of document and the rendered Image
using (var document = PdfDocument.Load(path))
using (var bitmap = document.Render(0, 1024, 768, 96, 96, PdfRenderFlags.None))
{
    bitmap.Save("output.png");
}

// IronPDF: Simplified
var pdf = PdfDocument.FromFile(path);
pdf.RasterizeToImageFiles("output.png");
// PdfiumViewer: explicit disposal of document and the rendered Image
using (var document = PdfDocument.Load(path))
using (var bitmap = document.Render(0, 1024, 768, 96, 96, PdfRenderFlags.None))
{
    bitmap.Save("output.png");
}

// IronPDF: Simplified
var pdf = PdfDocument.FromFile(path);
pdf.RasterizeToImageFiles("output.png");
Imports PdfiumViewer

' PdfiumViewer: explicit disposal of document and the rendered Image
Using document = PdfDocument.Load(path)
    Using bitmap = document.Render(0, 1024, 768, 96, 96, PdfRenderFlags.None)
        bitmap.Save("output.png")
    End Using
End Using

' IronPDF: Simplified
Dim pdf = PdfDocument.FromFile(path)
pdf.RasterizeToImageFiles("output.png")
$vbLabelText   $csharpLabel

Remoção de código específico da plataforma

// PDFium wrapper: required platform detection / RID-specific binaries
#if WIN64
    // Load x64 pdfium.dll
#else
    // Load x86 pdfium.dll
#endif

// IronPDF: Remove all platform-specific code
// Just use the API directly
// PDFium wrapper: required platform detection / RID-specific binaries
#if WIN64
    // Load x64 pdfium.dll
#else
    // Load x86 pdfium.dll
#endif

// IronPDF: Remove all platform-specific code
// Just use the API directly
$vbLabelText   $csharpLabel

Resumo da comparação de recursos

Recurso envoltórios PDFium .NET IronPDF
Carregar PDF Sim Sim
Renderizar para imagem Sim Sim
Texto extraído Sim (básico, por página) Sim (ordem lógica / visual)
Informações da página Sim Sim
Criar a partir de HTML None Sim
Criar a partir de um URL None Sim
Mesclar PDFs Envoltórios gratuitos: não; Patagames: parcial Sim
Dividir PDFs Envoltórios gratuitos: não; Patagames: parcial Sim
Adicionar marcas d'água Não embutido Sim
Cabeçalhos/Rodapés Não embutido Sim
Preenchimento de formulários Envoltórios gratuitos: não; Patagames: sim Sim
Assinaturas digitais Envoltórios gratuitos: não; Patagames: sim Sim
Proteção por senha Envoltórios gratuitos: não; Patagames: sim Sim
Dependências nativas Obrigatório Integrado / gerenciado pelo NuGet
Multiplataforma Complexo (binários nativos por RID) Automático
Gerenciamento de memória Descarte manual Simplificado

Lista de verificação para migração

Pré-migração

  • Identificar qual envoltório PDFium está em uso (PdfiumViewer / PdfiumViewer.Updated / PDFiumCore / Pdfium.Net.SDK)
  • Documentar dimensões de renderização atuais / DPI / escalas usadas
  • Listar localizações de binários nativos no projeto (por RID)
  • Verifique se há código de carregamento específico da plataforma
  • Identificar as necessidades de criação de PDFs (atualmente usando ferramentas separadas?)
  • Analisar os padrões de descarte para conversão.
  • Obtenha a chave de licença do IronPDF

Alterações no pacote

  • Remova o(s) pacote(s) NuGet do wrapper PDFium: PdfiumViewer, PdfiumViewer.Updated, PDFiumCore, ou Pdfium.Net.SDK
  • Exclua os binários nativos pdfium.dll / .so / .dylib das pastas x86/, x64/, runtimes/
  • Remover compilação condicional específica da plataforma
  • Atualize o arquivo .csproj para remover as referências a binários nativos.
  • Instale o pacote NuGet IronPdf: dotnet add package IronPdf

Alterações no código

  • Adicionar configuração de chave de licença na inicialização
  • Substitua PdfDocument.Load() por PdfDocument.FromFile()
  • Substitua document.Save() por pdf.SaveAs()
  • Substitua laços document.GetPdfText(i) por pdf.ExtractAllText()
  • Converter fatores de escala em valores DPI (DPI = 72 × escala)
  • Simplificar os padrões de descarte (remover instruções using aninhadas)
  • Remover código específico da plataforma

Pós-migração

  • Testar a qualidade da renderização
  • Comparar resultados de extração de texto
  • Testar a implementação multiplataforma
  • Adicionar novas funcionalidades (HTML para PDF, mesclagem, marcas d'água, segurança)
  • Atualizar documentação

ObservePDFium é um projeto do Google LLC, lançado sob BSD-3-Clause. PdfiumViewer, PDFiumCore e Pdfium.Net.SDK são marcas registradas de seus respectivos proprietários (pvginkel, Dtronix e Patagames Software Ltd, respectivamente). Este site não é afiliado, endossado ou patrocinado pelo Google, o Projeto Chromium ou qualquer um dos autores de envoltórios. 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