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
-
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.
-
Windows Forms / Somente Windows: Construído em torno de
System.Drawinge controles WinForms; não projetado para outros frameworks de UI, eSystem.Drawing.Commoné somente para Windows no .NET 6+. -
Sem manipulação de PDF: Não pode mesclar, dividir ou modificar conteúdo de PDF.
-
Dependências binárias nativas: Necessita de binários específicos da plataforma PDFium via
PdfiumViewer.Native.x86.v8-xfaePdfiumViewer.Native.x86_64.v8-xfa(ou as variantes sem V8 / sem XFA). -
Upstream arquivado: Repositório arquivado em 2019-08-02; último lançamento do NuGet 2.13.0 (2017-11-06); sem mais atualizações.
-
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. -
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.
-
Sem cabeçalhos/rodapés: Não pode adicionar números de página ou conteúdo repetitivo.
-
Sem marcas d'água: Não pode carimbar documentos com sobreposições.
- 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
- Ambiente .NET : .NET Framework 4.6.2+ ou .NET Core 3.1+ / .NET 5/6/7/8/9+
- Acesso ao NuGet : Capacidade de instalar pacotes NuGet.
- 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
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"
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" .
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
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
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
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
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
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
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
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" />
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})
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)
Salvar alteração de método
// PdfiumViewer
document.Save(path)
// IronPDF
pdf.SaveAs(path)
// PdfiumViewer
document.Save(path)
// IronPDF
pdf.SaveAs(path)
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")
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}")
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()porPdfDocument.FromFile() - Substitua
document.Save()porpdf.SaveAs() - Substitua
document.Render()porpdf.ToBitmap()ouRasterizeToImageFiles() - Substitua
document.PageSizes[i]porpdf.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

