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

Como migrar do PdfiumViewer para o IronPDF em C#

Migrar do Visualizador de PDF para IronPDF move seu fluxo de trabalho .NET PDF de um envoltório de visualizador/renderizador do Windows Forms em torno do PDFium do Google — com dependências de binário nativo e apenas extração de texto em nível de página — para uma solução abrangente de PDF que lida com criação, manipulação, extração completa de texto e renderização em todos os tipos de aplicativos .NET. Este guia fornece um caminho de migração completo e passo a passo que elimina restrições de plataforma enquanto adiciona capacidades que o Visualizador de PDF nunca foi projetado para fornecer.

Por que migrar do Visualizador de PDF para o IronPDF?

Entendendo o PdfiumViewer

PdfiumViewer (pacote NuGet PdfiumViewer, repositório pvginkel/PdfiumViewer, Apache 2.0) é um wrapper .NET em torno do mecanismo de renderização PDFium do Google — o mesmo mecanismo usado no Chrome — expondo visualização de PDF e rasterização para aplicativos Windows Forms.

PdfiumViewer é um visualizador e renderer, não um gerador. Não suporta criação, edição ou manipulação de PDFs, e sua API de texto (PdfDocument.GetPdfText(int page)) retorna texto bruto da página sem layout ou coordenadas por palavra. O repositório upstream foi arquivado por seu mantenedor em 02 de agosto de 2019 e o último lançamento do NuGet (2.13.0) foi enviado em 06 de novembro de 2017 — o código existente continua funcionando, mas não há mais correções, atualizações do .NET 6+ ou patches de CVE a caminho.

Limitações críticas do PdfiumViewer

  1. Apenas visualizador / renderer: Não pode criar PDFs a partir de HTML, imagens ou programaticamente. As capacidades do Visualizador de PDF são limitadas a visualização e rasterização — não suporta criação, edição, fusão ou outras funções manipulativas de PDF.

  2. Windows Forms / Somente Windows: Construído em torno de System.Drawing e controles WinForms; não projetado para outros frameworks de UI, e System.Drawing.Common é somente para Windows no .NET 6+.

  3. Sem manipulação de PDF: Não pode mesclar, dividir ou modificar conteúdo de PDF.

  4. Dependências binárias nativas: Necessita de binários específicos da plataforma PDFium via PdfiumViewer.Native.x86.v8-xfa e PdfiumViewer.Native.x86_64.v8-xfa (ou as variantes sem V8 / sem XFA).

  5. Upstream arquivado: Repositório arquivado em 2019-08-02; último lançamento do NuGet 2.13.0 (2017-11-06); sem mais atualizações.

  6. Extração de texto em nível de página apenas: PdfDocument.GetPdfText(int page) retorna texto bruto da página — sem coordenadas por palavra, sem reconstrução de layout, e sem OCR para PDFs somente de imagem.

  7. Sem HTML para PDF: PDFium não analisa HTML. Para produzir um PDF a partir de HTML, é necessário um gerador separado (wkhtmltopdf, IronPDF, PuppeteerSharp, etc.) e, em seguida, carregar o resultado com o Visualizador de PDF para exibição ou rasterização.

  8. Sem cabeçalhos/rodapés: Não pode adicionar números de página ou conteúdo repetitivo.

  9. Sem marcas d'água: Não pode carimbar documentos com sobreposições.

  10. Sem recursos de segurança: Não pode criptografar ou proteger PDFs com senha.

Comparação entre Visualizador de PDF e IronPDF

Aspecto Visualizador de PDF IronPDF
Foco principal Visualizador de PDF WinForms Solução completa em PDF
Licença Apache 2.0 Comercial
Criação de PDF ✓(HTML, URL, imagens)
Manipulação de PDF ✓(mesclar, dividir, editar)
HTML para PDF ✓(Motor Chromium)
Extração de texto Apenas em nível de página (GetPdfText) Completo (com layout, por página)
Marcas d'água
Cabeçalhos/Rodapés
Segurança
Visualizador integrado ✗(focado no backend)
Suporte da plataforma Windows / WinForms apenas Console, Web, Desktop, multi-plataforma
Suporte de estrutura .NET Framework 2.0+ .NET Framework, Core, 5+
Manutenção Arquivado em 2019-08-02 (último lançamento 2017-11-06) Ativo

Para equipes visando o .NET moderno, o IronPDF fornece uma base abrangente e mantida ativamente que funciona em todos os tipos de aplicativos .NET, eliminando a restrição do Windows Forms e a complexidade de binários nativos.


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 Visualizador de PDF packages
dotnet remove package PdfiumViewer
dotnet remove package PdfiumViewer.Native.x86.v8-xfa
dotnet remove package PdfiumViewer.Native.x86_64.v8-xfa

# Install IronPDF
dotnet add package IronPdf
# Remove Visualizador de PDF packages
dotnet remove package PdfiumViewer
dotnet remove package PdfiumViewer.Native.x86.v8-xfa
dotnet remove package PdfiumViewer.Native.x86_64.v8-xfa

# 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 o uso do PdfiumViewer

# Find Visualizador de PDF usage
grep -r "PdfiumViewer\|PdfViewer\|PdfDocument\.Load" --include="*.cs" .

# Find native binary references
grep -r "pdfium\.dll\|Native\.x86\|Native\.x64" --include="*.csproj" .

# Find viewer control usage
grep -r "PdfViewer" --include="*.cs" --include="*.Designer.cs" .
# Find Visualizador de PDF usage
grep -r "PdfiumViewer\|PdfViewer\|PdfDocument\.Load" --include="*.cs" .

# Find native binary references
grep -r "pdfium\.dll\|Native\.x86\|Native\.x64" --include="*.csproj" .

# Find viewer control usage
grep -r "PdfViewer" --include="*.cs" --include="*.Designer.cs" .
SHELL

Referência completa da API

Alterações de namespace

// PdfiumViewer
using PdfiumViewer;

// IronPDF
using IronPdf;
using IronPdf.Rendering;
using IronPdf.Editing;
// PdfiumViewer
using PdfiumViewer;

// IronPDF
using IronPdf;
using IronPdf.Rendering;
using IronPdf.Editing;
Imports PdfiumViewer

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

Mapeamentos de Classes Principais

Visualizador de PDF IronPDF
PdfDocument PdfDocument
PdfViewer (sem equivalente)
PdfRenderer ChromePdfRenderer
(não disponível) HtmlHeaderFooter

Mapeamentos de carregamento de documentos

Visualizador de PDF IronPDF
PdfDocument.Load(path) PdfDocument.FromFile(path)
PdfDocument.Load(stream) PdfDocument.FromStream(stream)
PdfDocument.Load(path, password) PdfDocument.FromFile(path, password)
(sem sobrecarga de bytes — envolver em MemoryStream) PdfDocument.FromBinaryData(bytes)

Mapeamentos de propriedades de documentos

Visualizador de PDF IronPDF
document.PageCount document.PageCount
document.PageSizes[i] document.Pages[i].Width/Height
document.GetPdfText(pageIndex) pdf.Pages[pageIndex].Text

Mapeamentos de renderização de página

Visualizador de PDF IronPDF
document.Render(pageIndex, dpiX, dpiY, forPrinting) pdf.ToBitmap(pageIndex)
document.Render(pageIndex, width, height, dpiX, dpiY, flags) pdf.RasterizeToImageFiles(path, dpi)

Salvando Mapeamentos de Documentos

Visualizador de PDF IronPDF
document.Save(path) pdf.SaveAs(path)
document.Save(stream) new MemoryStream(pdf.BinaryData)
(não disponível) pdf.BinaryData (retorna byte[])

Novos ou Recursos Substancialmente Ampliados vs PdfiumViewer

Recurso IronPDF Descrição
pdf.ExtractAllText() Extração de texto de documento inteiro (PdfiumViewer oferece apenas GetPdfText em nível de página)
pdf.ExtractTextFromPage(index) Extrair texto de uma página específica
ChromePdfRenderer.RenderHtmlAsPdf() Criar a partir de HTML
ChromePdfRenderer.RenderUrlAsPdf() Criar a partir de um URL
PdfDocument.Merge() Combinar PDFs
pdf.CopyPages() Páginas extraídas
pdf.RemovePages() Excluir páginas
pdf.ApplyWatermark() Adicionar marcas d'água
pdf.AddHtmlHeaders() Adicionar cabeçalhos
pdf.AddHtmlFooters() Adicionar rodapés
pdf.SecuritySettings Proteção por senha
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 PdfiumViewer
//        Install-Package PdfiumViewer.Native.x86.v8-xfa
//        Install-Package PdfiumViewer.Native.x86_64.v8-xfa
using PdfiumViewer;
using System;
using System.Text;

string pdfPath = "document.pdf";

// Visualizador de PDF exposes page-level text extraction via
// PdfDocument.GetPdfText(int page). It returns raw page text only —
// no layout, no per-word coordinates, no OCR for image-only pages.
using (var document = PdfDocument.Load(pdfPath))
{
    int pageCount = document.PageCount;
    Console.WriteLine($"Total pages: {pageCount}");

    var sb = new StringBuilder();
    for (int i = 0; i < pageCount; i++)
    {
        string pageText = document.GetPdfText(i);
        sb.AppendLine($"--- Page {i + 1} ---");
        sb.AppendLine(pageText);
    }

    Console.WriteLine(sb.ToString());
}
// NuGet: Install-Package PdfiumViewer
//        Install-Package PdfiumViewer.Native.x86.v8-xfa
//        Install-Package PdfiumViewer.Native.x86_64.v8-xfa
using PdfiumViewer;
using System;
using System.Text;

string pdfPath = "document.pdf";

// Visualizador de PDF exposes page-level text extraction via
// PdfDocument.GetPdfText(int page). It returns raw page text only —
// no layout, no per-word coordinates, no OCR for image-only pages.
using (var document = PdfDocument.Load(pdfPath))
{
    int pageCount = document.PageCount;
    Console.WriteLine($"Total pages: {pageCount}");

    var sb = new StringBuilder();
    for (int i = 0; i < pageCount; i++)
    {
        string pageText = document.GetPdfText(i);
        sb.AppendLine($"--- Page {i + 1} ---");
        sb.AppendLine(pageText);
    }

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

Dim pdfPath As String = "document.pdf"

' Visualizador de PDF exposes page-level text extraction via
' PdfDocument.GetPdfText(int page). It returns raw page text only —
' no layout, no per-word coordinates, no OCR for image-only pages.
Using document As PdfDocument = PdfDocument.Load(pdfPath)
    Dim pageCount As Integer = document.PageCount
    Console.WriteLine($"Total pages: {pageCount}")

    Dim sb As New StringBuilder()
    For i As Integer = 0 To pageCount - 1
        Dim pageText As String = document.GetPdfText(i)
        sb.AppendLine($"--- Page {i + 1} ---")
        sb.AppendLine(pageText)
    Next

    Console.WriteLine(sb.ToString())
End Using
$vbLabelText   $csharpLabel

Após (IronPDF):

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

string pdfPath = "document.pdf";

// Open and extract text from PDF
PdfDocument pdf = PdfDocument.FromFile(pdfPath);

// Extract text from all pages
string allText = pdf.ExtractAllText();
Console.WriteLine("Extracted Text:");
Console.WriteLine(allText);

// Extract text from specific page
string pageText = pdf.ExtractTextFromPage(0);
Console.WriteLine($"\nFirst page text: {pageText}");

Console.WriteLine($"\nTotal pages: {pdf.PageCount}");
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

string pdfPath = "document.pdf";

// Open and extract text from PDF
PdfDocument pdf = PdfDocument.FromFile(pdfPath);

// Extract text from all pages
string allText = pdf.ExtractAllText();
Console.WriteLine("Extracted Text:");
Console.WriteLine(allText);

// Extract text from specific page
string pageText = pdf.ExtractTextFromPage(0);
Console.WriteLine($"\nFirst page text: {pageText}");

Console.WriteLine($"\nTotal pages: {pdf.PageCount}");
Imports IronPdf
Imports System

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

        ' Open and extract text from PDF
        Dim pdf As PdfDocument = PdfDocument.FromFile(pdfPath)

        ' Extract text from all pages
        Dim allText As String = pdf.ExtractAllText()
        Console.WriteLine("Extracted Text:")
        Console.WriteLine(allText)

        ' Extract text from specific page
        Dim pageText As String = pdf.ExtractTextFromPage(0)
        Console.WriteLine(vbCrLf & "First page text: " & pageText)

        Console.WriteLine(vbCrLf & "Total pages: " & pdf.PageCount)
    End Sub
End Module
$vbLabelText   $csharpLabel

A API de texto de Visualizador de PDF é PdfDocument.GetPdfText(int page) — apenas texto bruto em nível de página, sem reconstrução de layout, sem coordenadas por palavra, e sem fallback de OCR para PDFs somente de imagem. Qualquer coisa além de um diagrama de texto plano requer heurísticas de layout customizadas ou uma biblioteca diferente.

IronPDF fornece extração de documento inteiro via ExtractAllText() e extração por página via ExtractTextFromPage(index) (ou pdf.Pages[index].Text). Consulte a documentação de extração de texto para obter opções adicionais.

Exemplo 2: Conversão de HTML para PDF

Antes (PdfiumViewer):

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

// Visualizador de PDF wraps Google's PDFium — a renderer, not a generator.
// PDFium does not parse HTML, so Visualizador de PDF has no HTML-to-PDF path.
// To produce a PDF from HTML you need a separate generator (wkhtmltopdf,
// IronPDF, PuppeteerSharp, etc.), then load the result with PdfiumViewer
// for display or rasterization.

string htmlContent = "<h1>Hello World</h1><p>This is a test document.</p>";

// Pretend "output.pdf" was produced by another tool — load and render it.
string existingPdfPath = "output.pdf";
using (var document = PdfDocument.Load(existingPdfPath))
{
    Console.WriteLine($"Loaded PDF with {document.PageCount} page(s).");

    // PdfDocument.Render(int page, float dpiX, float dpiY, bool forPrinting)
    var image = document.Render(0, 300, 300, true);
    Console.WriteLine("Rendered page 1 at 300 DPI.");
}
// NuGet: Install-Package PdfiumViewer
using PdfiumViewer;
using System;

// Visualizador de PDF wraps Google's PDFium — a renderer, not a generator.
// PDFium does not parse HTML, so Visualizador de PDF has no HTML-to-PDF path.
// To produce a PDF from HTML you need a separate generator (wkhtmltopdf,
// IronPDF, PuppeteerSharp, etc.), then load the result with PdfiumViewer
// for display or rasterization.

string htmlContent = "<h1>Hello World</h1><p>This is a test document.</p>";

// Pretend "output.pdf" was produced by another tool — load and render it.
string existingPdfPath = "output.pdf";
using (var document = PdfDocument.Load(existingPdfPath))
{
    Console.WriteLine($"Loaded PDF with {document.PageCount} page(s).");

    // PdfDocument.Render(int page, float dpiX, float dpiY, bool forPrinting)
    var image = document.Render(0, 300, 300, true);
    Console.WriteLine("Rendered page 1 at 300 DPI.");
}
Imports PdfiumViewer
Imports System

' Visualizador de PDF wraps Google's PDFium — a renderer, not a generator.
' PDFium does not parse HTML, so Visualizador de PDF has no HTML-to-PDF path.
' To produce a PDF from HTML you need a separate generator (wkhtmltopdf,
' IronPDF, PuppeteerSharp, etc.), then load the result with PdfiumViewer
' for display or rasterization.

Dim htmlContent As String = "<h1>Hello World</h1><p>This is a test document.</p>"

' Pretend "output.pdf" was produced by another tool — load and render it.
Dim existingPdfPath As String = "output.pdf"
Using document = PdfDocument.Load(existingPdfPath)
    Console.WriteLine($"Loaded PDF with {document.PageCount} page(s).")

    ' PdfDocument.Render(int page, float dpiX, float dpiY, bool forPrinting)
    Dim image = document.Render(0, 300, 300, True)
    Console.WriteLine("Rendered page 1 at 300 DPI.")
End Using
$vbLabelText   $csharpLabel

Após (IronPDF):

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

string htmlContent = "<h1>Hello World</h1><p>This is a test document.</p>";

// Create a PDF from HTML string
var renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlContent);

// Save the PDF
pdf.SaveAs("output.pdf");

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

string htmlContent = "<h1>Hello World</h1><p>This is a test document.</p>";

// Create a PDF from HTML string
var renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlContent);

// Save the PDF
pdf.SaveAs("output.pdf");

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

Module Program
    Sub Main()
        Dim htmlContent As String = "<h1>Hello World</h1><p>This is a test document.</p>"

        ' Create a PDF from HTML string
        Dim renderer As New ChromePdfRenderer()
        Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(htmlContent)

        ' Save the PDF
        pdf.SaveAs("output.pdf")

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

Esta é a maior lacuna de capacidade. O PDFium não analisa HTML, então o Visualizador de PDF não tem caminho de HTML para PDF — você geraria o PDF com outra ferramenta primeiro e depois usaria o Visualizador de PDF para exibir ou rasterizar.

IronPDF fornece conversão nativa de HTML para PDF através de ChromePdfRenderer, que usa internamente um mecanismo Chromium para renderização de HTML, CSS e JavaScript. RenderHtmlAsPdf() converte strings HTML, RenderUrlAsPdf() captura URLs, e RenderHtmlFileAsPdf() lê arquivos HTML. Consulte a documentação de conversão de HTML para PDF para obter exemplos completos.

Exemplo 3: Conversão de PDF para imagem

Antes (PdfiumViewer):

// NuGet: Install-Package PdfiumViewer
using PdfiumViewer;
using System;
using System.Drawing;
using System.Drawing.Imaging;

string pdfPath = "document.pdf";
string outputImage = "page1.png";

// PDFiumViewer excels at rendering PDFs to images
using (var document = PdfDocument.Load(pdfPath))
{
    // Render first page at 300 DPI
    int dpi = 300;
    using (var image = document.Render(0, dpi, dpi, true))
    {
        // Save as PNG
        image.Save(outputImage, ImageFormat.Png);
        Console.WriteLine($"Page rendered to {outputImage}");
    }

    // Render all pages
    for (int i = 0; i < document.PageCount; i++)
    {
        using (var pageImage = document.Render(i, 150, 150, true))
        {
            pageImage.Save($"page_{i + 1}.png", ImageFormat.Png);
        }
    }
}
// NuGet: Install-Package PdfiumViewer
using PdfiumViewer;
using System;
using System.Drawing;
using System.Drawing.Imaging;

string pdfPath = "document.pdf";
string outputImage = "page1.png";

// PDFiumViewer excels at rendering PDFs to images
using (var document = PdfDocument.Load(pdfPath))
{
    // Render first page at 300 DPI
    int dpi = 300;
    using (var image = document.Render(0, dpi, dpi, true))
    {
        // Save as PNG
        image.Save(outputImage, ImageFormat.Png);
        Console.WriteLine($"Page rendered to {outputImage}");
    }

    // Render all pages
    for (int i = 0; i < document.PageCount; i++)
    {
        using (var pageImage = document.Render(i, 150, 150, true))
        {
            pageImage.Save($"page_{i + 1}.png", ImageFormat.Png);
        }
    }
}
Imports PdfiumViewer
Imports System
Imports System.Drawing
Imports System.Drawing.Imaging

Module Module1
    Sub Main()
        Dim pdfPath As String = "document.pdf"
        Dim outputImage As String = "page1.png"

        ' PDFiumViewer excels at rendering PDFs to images
        Using document = PdfDocument.Load(pdfPath)
            ' Render first page at 300 DPI
            Dim dpi As Integer = 300
            Using image = document.Render(0, dpi, dpi, True)
                ' Save as PNG
                image.Save(outputImage, ImageFormat.Png)
                Console.WriteLine($"Page rendered to {outputImage}")
            End Using

            ' Render all pages
            For i As Integer = 0 To document.PageCount - 1
                Using pageImage = document.Render(i, 150, 150, True)
                    pageImage.Save($"page_{i + 1}.png", ImageFormat.Png)
                End Using
            Next
        End Using
    End Sub
End Module
$vbLabelText   $csharpLabel

Após (IronPDF):

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

string pdfPath = "document.pdf";
string outputImage = "page1.png";

// Open PDF and convert to images
PdfDocument pdf = PdfDocument.FromFile(pdfPath);

// Convert first page to image
var firstPageImage = pdf.ToBitmap(0);
firstPageImage[0].Save(outputImage);
Console.WriteLine($"Page rendered to {outputImage}");

// Convert all pages to images
var allPageImages = pdf.ToBitmap();
for (int i = 0; i < allPageImages.Length; i++)
{
    allPageImages[i].Save($"page_{i + 1}.png");
    Console.WriteLine($"Saved page {i + 1}");
}

Console.WriteLine($"Total pages converted: {pdf.PageCount}");
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Linq;

string pdfPath = "document.pdf";
string outputImage = "page1.png";

// Open PDF and convert to images
PdfDocument pdf = PdfDocument.FromFile(pdfPath);

// Convert first page to image
var firstPageImage = pdf.ToBitmap(0);
firstPageImage[0].Save(outputImage);
Console.WriteLine($"Page rendered to {outputImage}");

// Convert all pages to images
var allPageImages = pdf.ToBitmap();
for (int i = 0; i < allPageImages.Length; i++)
{
    allPageImages[i].Save($"page_{i + 1}.png");
    Console.WriteLine($"Saved page {i + 1}");
}

Console.WriteLine($"Total pages converted: {pdf.PageCount}");
Imports IronPdf
Imports System
Imports System.Linq

Module Module1
    Sub Main()
        Dim pdfPath As String = "document.pdf"
        Dim outputImage As String = "page1.png"

        ' Open PDF and convert to images
        Dim pdf As PdfDocument = PdfDocument.FromFile(pdfPath)

        ' Convert first page to image
        Dim firstPageImage = pdf.ToBitmap(0)
        firstPageImage(0).Save(outputImage)
        Console.WriteLine($"Page rendered to {outputImage}")

        ' Convert all pages to images
        Dim allPageImages = pdf.ToBitmap()
        For i As Integer = 0 To allPageImages.Length - 1
            allPageImages(i).Save($"page_{i + 1}.png")
            Console.WriteLine($"Saved page {i + 1}")
        Next

        Console.WriteLine($"Total pages converted: {pdf.PageCount}")
    End Sub
End Module
$vbLabelText   $csharpLabel

Esta é uma área em que o Visualizador de PDF se destaca — a renderização de PDFs em imagens é seu principal ponto forte. Ambas as bibliotecas lidam com essa tarefa de forma eficaz, mas com padrões diferentes.

PdfiumViewer usa document.Render(pageIndex, dpiX, dpiY, forPrinting) com instruções using aninhadas para descarte adequado. Você precisa importar System.Drawing e System.Drawing.Imaging para o enum ImageFormat.

IronPDF usa pdf.ToBitmap(pageIndex) que retorna um array de bitmap. O padrão é mais simples sem requisitos de descarte aninhados. Para operações em lote, ToBitmap() sem parâmetros retorna todas as páginas. Você pode também usar RasterizeToImageFiles() para saída direta de arquivo. Consulte a documentação de conversão de PDF em imagem para obter opções de renderização adicionais.


Remoção de dependências nativas

Um dos benefícios significativos da migração do Visualizador de PDF para o IronPDF é a eliminação do gerenciamento de binários nativos.

Antes (PdfiumViewer) - Implantação Complexa

MyApp/
├── bin/
│ ├── MyApp.dll
│ ├── PdfiumViewer.dll
│ ├── x86/
│ │ └── pdfium.dll
│ └── x64/
│ └── pdfium.dll

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 native package references
# <PackageReference Include="PdfiumViewer.Native.x86.v8-xfa" />
# <PackageReference Include="PdfiumViewer.Native.x64.v8-xfa" />
# Delete native PDFium binaries
rm -rf x86/x64/runtimes/

# Remove from .csproj native package references
# <PackageReference Include="PdfiumViewer.Native.x86.v8-xfa" />
# <PackageReference Include="PdfiumViewer.Native.x64.v8-xfa" />
SHELL

Notas críticas sobre migração

Sem controle de visualização integrado

O IronPDF é focado no backend e não inclui um controle visual para visualização de PDF:

// PdfiumViewer: Built-in viewer control
pdfViewer.Document = document;

// IronPDF: Use external viewer or web-based approach
pdf.SaveAs(tempPath);
Process.Start(new ProcessStartInfo(tempPath) { UseShellExecute = true });
// PdfiumViewer: Built-in viewer control
pdfViewer.Document = document;

// IronPDF: Use external viewer or web-based approach
pdf.SaveAs(tempPath);
Process.Start(new ProcessStartInfo(tempPath) { UseShellExecute = true });
' PdfiumViewer: Built-in viewer control
pdfViewer.Document = document

' IronPDF: Use external viewer or web-based approach
pdf.SaveAs(tempPath)
Process.Start(New ProcessStartInfo(tempPath) With {.UseShellExecute = True})
$vbLabelText   $csharpLabel

Para necessidades de visualização, considere usar Process.Start() para abrir no visualizador de PDF padrão, um controle WebBrowser com o caminho PDF, ou controles de visualizador de terceiros como Syncfusion, DevExpress ou Telerik.

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

// PdfiumViewer
document.Save(path)

// IronPDF
pdf.SaveAs(path)
// PdfiumViewer
document.Save(path)

// IronPDF
pdf.SaveAs(path)
$vbLabelText   $csharpLabel

Alteração do método de renderização

// PdfiumViewer: Returns image with nested using
using (var image = document.Render(0, 150, 150, true))
{
    image.Save("page.png", ImageFormat.Png);
}

// IronPDF: Returns bitmap array
var images = pdf.ToBitmap(0);
images[0].Save("page.png");
// PdfiumViewer: Returns image with nested using
using (var image = document.Render(0, 150, 150, true))
{
    image.Save("page.png", ImageFormat.Png);
}

// IronPDF: Returns bitmap array
var images = pdf.ToBitmap(0);
images[0].Save("page.png");
Imports System.Drawing.Imaging

' PdfiumViewer: Returns image with nested using
Using image = document.Render(0, 150, 150, True)
    image.Save("page.png", ImageFormat.Png)
End Using

' IronPDF: Returns bitmap array
Dim images = pdf.ToBitmap(0)
images(0).Save("page.png")
$vbLabelText   $csharpLabel

Alterar o tamanho da página Acesso

// PdfiumViewer
var size = document.PageSizes[index];
Console.WriteLine($"{size.Width} x {size.Height}");

// IronPDF
var page = pdf.Pages[index];
Console.WriteLine($"{page.Width} x {page.Height}");
// PdfiumViewer
var size = document.PageSizes[index];
Console.WriteLine($"{size.Width} x {size.Height}");

// IronPDF
var page = pdf.Pages[index];
Console.WriteLine($"{page.Width} x {page.Height}");
' PdfiumViewer
Dim size = document.PageSizes(index)
Console.WriteLine($"{size.Width} x {size.Height}")

' IronPDF
Dim page = pdf.Pages(index)
Console.WriteLine($"{page.Width} x {page.Height}")
$vbLabelText   $csharpLabel

Resumo da comparação de recursos

Recurso Visualizador de PDF IronPDF
Carregar PDF
Renderizar para imagem
Visualizador integrado
Imprimir PDF
Texto extraído Em nível de página (GetPdfText) Completo (ExtractAllText, por página)
Criar a partir de HTML
Criar a partir de um URL
Mesclar PDFs
Dividir PDFs
Adicionar marcas d'água
Cabeçalhos/Rodapés
Preenchimento de formulários
Proteção por senha
Suporte WinForms
Suporte a ASP.NET
Suporte ao .NET Core Limitado (System.Drawing vinculado ao Windows)
Manutenção ativa Arquivado em 2019-08-02

Lista de verificação para migração

Pré-migração

  • Identificar todas as utilizações do Visualizador de PDF na base de código.
  • Listar formulários WinForms usando o controle PdfViewer
  • Documente as configurações atuais de DPI de renderização.
  • Verificar referências binárias nativas
  • Identificar a utilização da funcionalidade de impressão
  • Estratégia de substituição do controle do visualizador de plantas
  • Obtenha a chave de licença do IronPDF

Alterações no pacote

  • Remova o pacote NuGet PdfiumViewer
  • Remova o pacote PdfiumViewer.Native.x86.v8-xfa
  • Remova o pacote PdfiumViewer.Native.x86_64.v8-xfa
  • Exclua os binários nativos do pdfium.dll das pastas x86/e x64/.
  • 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 document.Render() por pdf.ToBitmap() ou RasterizeToImageFiles()
  • Substitua document.PageSizes[i] por pdf.Pages[i].Width/Height
  • Substitua o controle PdfViewer por um visualizador externo ou por Process.Start().
  • Adicionar novas funcionalidades (extração de texto, HTML para PDF, etc.)

Pós-migração

  • Testar a qualidade da renderização
  • Testar a funcionalidade de impressão
  • Testar nas plataformas alvo
  • Adicionar novas funcionalidades (HTML para PDF, mesclagem, marcas d'água, segurança)
  • Atualizar documentação

ObservePdfiumViewer, PDFium, Chromium, DevExpress, Syncfusion, Telerik e wkhtmltopdf são marcas registradas dos seus respectivos proprietários. Este site não é afiliado, endossado ou patrocinado por Pieter van Ginkel, o Projeto Chromium, Google, DevExpress, Syncfusion, Progress Software ou o projeto wkhtmltopdf. 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