IRONSOFTWAREHOME
VÍDEOS

Como definir fontes em PDFs em C#

Curtis Chau
Curtis Chau
Updated: 19 de julho de 2026

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

AspectoVisualizador de PDFIronPDF
Foco principalVisualizador de PDF WinFormsSolução completa em PDF
LicençaApache 2.0Comercial
Criação de PDF✓(HTML, URL, imagens)
Manipulação de PDF✓(mesclar, dividir, editar)
HTML para PDF✓(Motor Chromium)
Extração de textoApenas 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 plataformaWindows / WinForms apenasConsole, Web, Desktop, multi-plataforma
Suporte de estrutura.NET Framework 2.0+.NET Framework, Core, 5+
ManutençãoArquivado 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
SHELL

Configuração de licença

// Add at application startup (Program.cs or Startup.cs)
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" .
SHELL

Referência completa da API

Alterações de namespace

// PdfiumViewer
using PdfiumViewer;

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

Mapeamentos de Classes Principais

Visualizador de PDFIronPDF
PdfDocumentPdfDocument
PdfViewer(sem equivalente)
PdfRendererChromePdfRenderer
(não disponível)HtmlHeaderFooter

Mapeamentos de carregamento de documentos

Visualizador de PDFIronPDF
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 PDFIronPDF
document.PageCountdocument.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 PDFIronPDF
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 PDFIronPDF
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 IronPDFDescriçã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.SecuritySettingsProteção por senha
pdf.FormPreenchimento 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());
}
C#

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}");

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.");
}
C#

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!");

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);
        }
    }
}

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}");

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
Text

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

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

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" />
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 });

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)

Salvar alteração de método

// 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");

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}");

Resumo da comparação de recursos

RecursoVisualizador de PDFIronPDF
Carregar PDF
Renderizar para imagem
Visualizador integrado
Imprimir PDF
Texto extraídoEm 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 CoreLimitado (System.Drawing vinculado ao Windows)
Manutenção ativaArquivado 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

Observe: PdfiumViewer, 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 bem estruturados e visualmente atraentes.

...
Leia mais

Artigos relacionados

Key in blue circle

Obtenha sua chave de avaliação gratuita de 30 dias instantaneamente.

Your trial license will be sent to your email address

Sem limitações. 100% desbloqueado. Sem cartão de crédito.

bullet_checkedNão é necessário cartão de crédito nem criação de conta.Sem limitações. 100% desbloqueado. Sem cartão de crédito.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Agende sua demonstração ao vivo gratuita.
Booking Badge

Aprovado por milhões de engenheiros em todo o mundo.

Logotipos dos clientes da Iron Software
Agende sua consulta sem compromisso.
Preencha o formulário abaixo ou envie um e-mail para sales@ironsoftware.com
Os seus dados serão sempre mantidos em sigilo.
Aprovado por milhões de engenheiros em todo o mundo.
Logotipos dos clientes da Iron Software
Obtenha sua chave de avaliação gratuita de 30 dias instantaneamente.
Não é necessário cartão de crédito nem criação de conta.