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

Como migrar do PdfPig para o IronPDF em C#

A migração do PdfPig para o IronPDF expande suas capacidades de PDF, transformando-o de uma biblioteca somente leitura em uma solução completa que lida com criação, manipulação, extração de texto e recursos de segurança. Este guia fornece um caminho de migração completo, passo a passo, que preserva seus fluxos de trabalho de extração existentes, ao mesmo tempo que adiciona recursos de geração de PDF, conversão de HTML, manipulação de documentos e segurança que o PdfPig não oferece.

Por que migrar do PdfPig para o IronPDF?

Entendendo o PdfPig

PdfPig é uma biblioteca de código aberto para leitura e extração de PDFs, projetada especificamente para C#. Como parte do renomado projeto Apache PDFBox, esta biblioteca permite que os desenvolvedores acessem o conteúdo de PDFs com notável precisão. Embora o PdfPig se destaque em suas capacidades de extração, seu escopo é bastante limitado em comparação com bibliotecas mais abrangentes disponíveis no mercado.

O PdfPig fornece aos desenvolvedores ferramentas confiáveis ​​para extrair texto, imagens, dados de formulários e metadados de arquivos PDF. Isso a torna uma escolha adequada para aplicações focadas principalmente em análise de documentos e mineração de dados. No entanto, as capacidades do PdfPig são fundamentalmente limitadas à análise de documentos existentes.

A limitação de somente leitura

O PdfPig se concentra exclusivamente na leitura de PDFs. Quando sua aplicação precisa ir além da extração de dados, o PdfPig não pode ajudar:

  1. Sem geração de PDF: Não é possível criar PDFs a partir de HTML, URLs ou programaticamente.

  2. Sem conversão de HTML para PDF: PdfPig é uma biblioteca de leitura/análise de PDF, não uma biblioteca de geração de PDF. Você precisaria usar uma biblioteca diferente para a conversão de HTML para PDF.

  3. Sem manipulação de documentos: Não é possível mesclar, dividir ou modificar PDFs.

  4. Sem recursos de segurança: Não é possível adicionar senhas, criptografia ou assinaturas digitais.

  5. Sem marcas d'água/carimbos: Não é possível adicionar sobreposições visuais a documentos existentes.

  6. Sem preenchimento de formulários: Não é possível preencher formulários PDF programaticamente.

Comparação entre PdfPig e IronPDF

Recurso PdfPig IronPDF
Licença Código aberto (Apache 2.0) Comercial
Leitura/Extração de PDF Excelente Excelente
Geração de PDF Limitado Abrangente
HTML para PDF Não suportado Apoiado
Extração de texto Excelente Excelente
Manipulação de PDF Não suportado Mesclar, dividir, rotacionar
Marcas d'água Não suportado Apoiado
Segurança/Criptografia Não suportado Apoiado
Suporte e documentação Apoio comunitário Suporte dedicado
Indexação de páginas 1-baseado Baseado em 0

O IronPDF oferece um conjunto completo de recursos para criar, ler, editar e assinar PDFs. Essa versatilidade permite que os desenvolvedores gerenciem arquivos PDF do início ao fim. Para equipes que planejam a adoção do .NET 10 e do C# 14 até 2025 e 2026, o IronPDF oferece uma solução completa para o ciclo de vida do PDF que vai além dos recursos de leitura do PdfPig.


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 PdfPig
dotnet remove package PdfPig

# Install IronPDF
dotnet add package IronPdf
# Remove PdfPig
dotnet remove package PdfPig

# 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 PdfPig

# Find PdfPig usage
grep -r "UglyToad\.PdfPig\|PdfDocument\.Open\|GetPages\(\)" --include="*.cs" .

# Find page index references (may need 1→0 conversion)
grep -r "GetPage(\|NumberOfPages" --include="*.cs" .
# Find PdfPig usage
grep -r "UglyToad\.PdfPig\|PdfDocument\.Open\|GetPages\(\)" --include="*.cs" .

# Find page index references (may need 1→0 conversion)
grep -r "GetPage(\|NumberOfPages" --include="*.cs" .
SHELL

Referência completa da API

Alterações de namespace

// Before: PdfPig
using UglyToad.PdfPig;
using UglyToad.PdfPig.Content;
using UglyToad.PdfPig.DocumentLayoutAnalysis.WordExtractor;

// After: IronPDF
using IronPdf;
using IronPdf.Rendering;
// Before: PdfPig
using UglyToad.PdfPig;
using UglyToad.PdfPig.Content;
using UglyToad.PdfPig.DocumentLayoutAnalysis.WordExtractor;

// After: IronPDF
using IronPdf;
using IronPdf.Rendering;
' Before: PdfPig
Imports UglyToad.PdfPig
Imports UglyToad.PdfPig.Content
Imports UglyToad.PdfPig.DocumentLayoutAnalysis.WordExtractor

' After: IronPDF
Imports IronPdf
Imports IronPdf.Rendering
$vbLabelText   $csharpLabel

Mapeamentos de carregamento de documentos

PdfPig IronPDF
PdfDocument.Open(path) PdfDocument.FromFile(path)
PdfDocument.Open(bytes) PdfDocument.FromBinaryData(bytes)
PdfDocument.Open(stream) PdfDocument.FromStream(stream)
using (var doc = ...) var pdf = ...

Mapeamento de acesso e propriedades de páginas

PdfPig IronPDF
document.NumberOfPages pdf.PageCount
document.GetPages() pdf.Pages
document.GetPage(1) pdf.Pages[0]

Mapeamentos de Extração de Texto

PdfPig IronPDF
page.Text pdf.Pages[i].Text
page.GetWords() pdf.ExtractTextFromPage(i)
(manual loop) pdf.ExtractAllText()

Mapeamentos de acesso a metadados

PdfPig IronPDF
document.Information.Title pdf.MetaData.Title
document.Information.Author pdf.MetaData.Author
document.Information.Subject pdf.MetaData.Subject
document.Information.Creator pdf.MetaData.Creator
document.Information.Producer pdf.MetaData.Producer

Novos recursos não disponíveis no PdfPig

Recurso IronPDF Descrição
renderer.RenderHtmlAsPdf(html) Conversão de HTML para PDF
renderer.RenderUrlAsPdf(url) Conversão de URL para PDF
PdfDocument.Merge(pdfs) Mesclar vários PDFs
pdf.ApplyWatermark(html) Adicionar marcas d'água
pdf.SecuritySettings.UserPassword Proteção por senha
pdf.Sign(certificate) Assinaturas digitais

Exemplos de migração de código

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

Antes (PdfPig):

// NuGet: Install-Package PdfPig
using UglyToad.PdfPig;
using System;
using System.Text;

class Program
{
    static void Main()
    {
        using (var document = PdfDocument.Open("input.pdf"))
        {
            var text = new StringBuilder();
            foreach (var page in document.GetPages())
            {
                text.AppendLine(page.Text);
            }
            Console.WriteLine(text.ToString());
        }
    }
}
// NuGet: Install-Package PdfPig
using UglyToad.PdfPig;
using System;
using System.Text;

class Program
{
    static void Main()
    {
        using (var document = PdfDocument.Open("input.pdf"))
        {
            var text = new StringBuilder();
            foreach (var page in document.GetPages())
            {
                text.AppendLine(page.Text);
            }
            Console.WriteLine(text.ToString());
        }
    }
}
Imports UglyToad.PdfPig
Imports System
Imports System.Text

Class Program
    Shared Sub Main()
        Using document = PdfDocument.Open("input.pdf")
            Dim text = New StringBuilder()
            For Each page In document.GetPages()
                text.AppendLine(page.Text)
            Next
            Console.WriteLine(text.ToString())
        End Using
    End Sub
End Class
$vbLabelText   $csharpLabel

Após (IronPDF):

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

class Program
{
    static void Main()
    {
        var pdf = PdfDocument.FromFile("input.pdf");
        string text = pdf.ExtractAllText();
        Console.WriteLine(text);
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var pdf = PdfDocument.FromFile("input.pdf");
        string text = pdf.ExtractAllText();
        Console.WriteLine(text);
    }
}
Imports IronPdf
Imports System

Class Program
    Shared Sub Main()
        Dim pdf = PdfDocument.FromFile("input.pdf")
        Dim text As String = pdf.ExtractAllText()
        Console.WriteLine(text)
    End Sub
End Class
$vbLabelText   $csharpLabel

Tanto o PdfPig quanto o IronPDF oferecem excelentes recursos de extração de texto. A principal diferença está no padrão do código. O PdfPig requer uma declaração using com PdfDocument.Open(), iteração manual pelas páginas com GetPages() e um StringBuilder para acumular o texto de cada propriedade page.Text.

O IronPDF simplifica isso para uma única chamada: PdfDocument.FromFile() carrega o documento e ExtractAllText() retorna todo o conteúdo de texto de uma só vez. Nenhuma instrução using necessária, nenhuma iteração manual, nenhum StringBuilder. Consulte a documentação de extração de texto para obter opções adicionais.

Exemplo 2: Conversão de HTML para PDF

Antes (PdfPig):

O PdfPig não suporta a conversão de HTML para PDF. PdfPig é uma biblioteca para leitura e análise de PDFs, não uma biblioteca para geração de PDFs. Você precisaria usar uma biblioteca diferente para a conversão de HTML para PDF.

Após (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>This is a PDF from HTML</p>");
        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>This is a PDF from HTML</p>");
        pdf.SaveAs("output.pdf");
    }
}
Imports IronPdf

Class Program
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()
        Dim pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>This is a PDF from HTML</p>")
        pdf.SaveAs("output.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

Este exemplo destaca a lacuna de funcionalidade mais significativa. O PdfPig afirma explicitamente que "não suporta conversão de HTML para PDF" e que "é uma biblioteca de leitura/análise de PDF, não uma biblioteca de geração de PDF". Se você precisar criar PDFs a partir de HTML com o PdfPig, precisará usar uma biblioteca completamente diferente.

O IronPDF oferece conversão nativa de HTML para PDF através de ChromePdfRenderer. O método RenderHtmlAsPdf() aceita strings HTML e as converte em documentos PDF usando um mecanismo Chromium internamente para renderização precisa de HTML, CSS e JavaScript. O resultado PdfDocument pode ser salvo com SaveAs() ou manipulado posteriormente antes de ser salvo. Consulte a documentação de conversão de HTML para PDF para obter exemplos completos.

Exemplo 3: Leitura de metadados de PDF

Antes (PdfPig):

// NuGet: Install-Package PdfPig
using UglyToad.PdfPig;
using System;

class Program
{
    static void Main()
    {
        using (var document = PdfDocument.Open("input.pdf"))
        {
            var info = document.Information;
            Console.WriteLine($"Title: {info.Title}");
            Console.WriteLine($"Author: {info.Author}");
            Console.WriteLine($"Subject: {info.Subject}");
            Console.WriteLine($"Creator: {info.Creator}");
            Console.WriteLine($"Producer: {info.Producer}");
            Console.WriteLine($"Number of Pages: {document.NumberOfPages}");
        }
    }
}
// NuGet: Install-Package PdfPig
using UglyToad.PdfPig;
using System;

class Program
{
    static void Main()
    {
        using (var document = PdfDocument.Open("input.pdf"))
        {
            var info = document.Information;
            Console.WriteLine($"Title: {info.Title}");
            Console.WriteLine($"Author: {info.Author}");
            Console.WriteLine($"Subject: {info.Subject}");
            Console.WriteLine($"Creator: {info.Creator}");
            Console.WriteLine($"Producer: {info.Producer}");
            Console.WriteLine($"Number of Pages: {document.NumberOfPages}");
        }
    }
}
Imports UglyToad.PdfPig
Imports System

Class Program
    Shared Sub Main()
        Using document = PdfDocument.Open("input.pdf")
            Dim info = document.Information
            Console.WriteLine($"Title: {info.Title}")
            Console.WriteLine($"Author: {info.Author}")
            Console.WriteLine($"Subject: {info.Subject}")
            Console.WriteLine($"Creator: {info.Creator}")
            Console.WriteLine($"Producer: {info.Producer}")
            Console.WriteLine($"Number of Pages: {document.NumberOfPages}")
        End Using
    End Sub
End Class
$vbLabelText   $csharpLabel

Após (IronPDF):

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

class Program
{
    static void Main()
    {
        var pdf = PdfDocument.FromFile("input.pdf");
        var info = pdf.MetaData;
        Console.WriteLine($"Title: {info.Title}");
        Console.WriteLine($"Author: {info.Author}");
        Console.WriteLine($"Subject: {info.Subject}");
        Console.WriteLine($"Creator: {info.Creator}");
        Console.WriteLine($"Producer: {info.Producer}");
        Console.WriteLine($"Number of Pages: {pdf.PageCount}");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var pdf = PdfDocument.FromFile("input.pdf");
        var info = pdf.MetaData;
        Console.WriteLine($"Title: {info.Title}");
        Console.WriteLine($"Author: {info.Author}");
        Console.WriteLine($"Subject: {info.Subject}");
        Console.WriteLine($"Creator: {info.Creator}");
        Console.WriteLine($"Producer: {info.Producer}");
        Console.WriteLine($"Number of Pages: {pdf.PageCount}");
    }
}
Imports IronPdf
Imports System

Class Program
    Shared Sub Main()
        Dim pdf = PdfDocument.FromFile("input.pdf")
        Dim info = pdf.MetaData
        Console.WriteLine($"Title: {info.Title}")
        Console.WriteLine($"Author: {info.Author}")
        Console.WriteLine($"Subject: {info.Subject}")
        Console.WriteLine($"Creator: {info.Creator}")
        Console.WriteLine($"Producer: {info.Producer}")
        Console.WriteLine($"Number of Pages: {pdf.PageCount}")
    End Sub
End Class
$vbLabelText   $csharpLabel

Ambas as bibliotecas fornecem acesso a metadados com padrões quase idênticos. O PdfPig acessa metadados através de document.Information e a contagem de páginas através de document.NumberOfPages. O IronPDF usa pdf.MetaData para metadados e pdf.PageCount para contagem de páginas.

A migração é simples: substitua PdfDocument.Open() por PdfDocument.FromFile(), document.Information por pdf.MetaData e document.NumberOfPages por pdf.PageCount. Remova o wrapper da declaração using, pois o IronPDF não o exige.


Notas críticas sobre migração

Alteração na indexação da página

O PdfPig usa indexação baseada em 1; O IronPDF usa base zero:

// PdfPig: 1-baseado indexing
var firstPage = document.GetPage(1);  // First page

// IronPDF: Baseado em 0 indexing
var firstPage = pdf.Pages[0];  // First page

// Migration helper
int pdfPigIndex = 1;
int ironPdfIndex = pdfPigIndex - 1;
// PdfPig: 1-baseado indexing
var firstPage = document.GetPage(1);  // First page

// IronPDF: Baseado em 0 indexing
var firstPage = pdf.Pages[0];  // First page

// Migration helper
int pdfPigIndex = 1;
int ironPdfIndex = pdfPigIndex - 1;
' PdfPig: 1-based indexing
Dim firstPage = document.GetPage(1)  ' First page

' IronPDF: 0-based indexing
Dim firstPage = pdf.Pages(0)  ' First page

' Migration helper
Dim pdfPigIndex As Integer = 1
Dim ironPdfIndex As Integer = pdfPigIndex - 1
$vbLabelText   $csharpLabel

O uso da instrução using não é necessário.

// PdfPig: Requires using for disposal
using (var document = PdfDocument.Open("input.pdf"))
{
    // ...
}

// IronPDF: No using required (but can use for cleanup)
var pdf = PdfDocument.FromFile("input.pdf");
// ...
// pdf.Dispose(); // Optional
// PdfPig: Requires using for disposal
using (var document = PdfDocument.Open("input.pdf"))
{
    // ...
}

// IronPDF: No using required (but can use for cleanup)
var pdf = PdfDocument.FromFile("input.pdf");
// ...
// pdf.Dispose(); // Optional
Imports PdfPig
Imports IronPDF

Using document = PdfDocument.Open("input.pdf")
    ' ...
End Using

Dim pdf = PdfDocument.FromFile("input.pdf")
' ...
' pdf.Dispose() ' Optional
$vbLabelText   $csharpLabel

Alteração de carregamento de documento

// PdfPig: PdfDocument.Open()
using (var document = PdfDocument.Open("input.pdf"))

// IronPDF: PdfDocument.FromFile()
var pdf = PdfDocument.FromFile("input.pdf");
// PdfPig: PdfDocument.Open()
using (var document = PdfDocument.Open("input.pdf"))

// IronPDF: PdfDocument.FromFile()
var pdf = PdfDocument.FromFile("input.pdf");
Imports PdfPig
Imports IronPDF

Using document = PdfDocument.Open("input.pdf")
End Using

Dim pdf = PdfDocument.FromFile("input.pdf")
$vbLabelText   $csharpLabel

Alteração do nome da propriedade de metadados

// PdfPig: document.Information
var info = document.Information;

// IronPDF: pdf.MetaData
var info = pdf.MetaData;
// PdfPig: document.Information
var info = document.Information;

// IronPDF: pdf.MetaData
var info = pdf.MetaData;
' PdfPig: document.Information
Dim info = document.Information

' IronPDF: pdf.MetaData
Dim info = pdf.MetaData
$vbLabelText   $csharpLabel

Alteração da propriedade Contagem de Páginas

// PdfPig: document.NumberOfPages
Console.WriteLine($"Pages: {document.NumberOfPages}");

// IronPDF: pdf.PageCount
Console.WriteLine($"Pages: {pdf.PageCount}");
// PdfPig: document.NumberOfPages
Console.WriteLine($"Pages: {document.NumberOfPages}");

// IronPDF: pdf.PageCount
Console.WriteLine($"Pages: {pdf.PageCount}");
' PdfPig: document.NumberOfPages
Console.WriteLine($"Pages: {document.NumberOfPages}")

' IronPDF: pdf.PageCount
Console.WriteLine($"Pages: {pdf.PageCount}")
$vbLabelText   $csharpLabel

Novas funcionalidades após a migração

Após migrar para o IronPDF, você obtém recursos que o PdfPig não pode fornecer:

Fusão de PDFs

var pdf1 = PdfDocument.FromFile("document1.pdf");
var pdf2 = PdfDocument.FromFile("document2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
var pdf1 = PdfDocument.FromFile("document1.pdf");
var pdf2 = PdfDocument.FromFile("document2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
Dim pdf1 = PdfDocument.FromFile("document1.pdf")
Dim pdf2 = PdfDocument.FromFile("document2.pdf")
Dim merged = PdfDocument.Merge(pdf1, pdf2)
merged.SaveAs("merged.pdf")
$vbLabelText   $csharpLabel

Marcas d'água

pdf.ApplyWatermark("<h2 style='color:red;'>CONFIDENTIAL</h2>");
pdf.ApplyWatermark("<h2 style='color:red;'>CONFIDENTIAL</h2>");
pdf.ApplyWatermark("<h2 style='color:red;'>CONFIDENTIAL</h2>")
$vbLabelText   $csharpLabel

Proteção por senha

pdf.SecuritySettings.UserPassword = "userpassword";
pdf.SecuritySettings.OwnerPassword = "ownerpassword";
pdf.SecuritySettings.UserPassword = "userpassword";
pdf.SecuritySettings.OwnerPassword = "ownerpassword";
pdf.SecuritySettings.UserPassword = "userpassword"
pdf.SecuritySettings.OwnerPassword = "ownerpassword"
$vbLabelText   $csharpLabel

Assinaturas digitais

var signature = new PdfSignature("certificate.pfx", "password")
{
    SigningContact = "support@company.com",
    SigningReason = "Document Approval"
};
pdf.Sign(signature);
var signature = new PdfSignature("certificate.pfx", "password")
{
    SigningContact = "support@company.com",
    SigningReason = "Document Approval"
};
pdf.Sign(signature);
Dim signature As New PdfSignature("certificate.pfx", "password") With {
    .SigningContact = "support@company.com",
    .SigningReason = "Document Approval"
}
pdf.Sign(signature)
$vbLabelText   $csharpLabel

Resumo da comparação de recursos

Recurso PdfPig IronPDF
Extração de texto
Acesso a metadados
Extração de Imagens
Criação de PDF Limitado
HTML para PDF
URL para PDF
Mesclar PDFs
Dividir PDFs
Marcas d'água
Preenchimento de formulários
Proteção por senha
Assinaturas digitais
Dados de posição da palavra

Lista de verificação para migração

Pré-migração

  • Inventariar todo o uso do PdfPig na base de código.
  • Identifique se você precisa de dados de posição em nível de palavra (considere uma abordagem híbrida)
  • Observe todas as referências de índice de página (é necessário converter de base 1 para base 0)
  • Planeje o armazenamento da chave de licença do IronPDF (variáveis ​​de ambiente recomendadas)
  • Teste primeiro com a licença de avaliação do IronPDF

Alterações no pacote

  • Remover o pacote NuGet PdfPig: dotnet remove package PdfPig
  • Instale o pacote NuGet IronPdf: dotnet add package IronPdf

Alterações no código

  • Atualizar importações de namespace (using UglyToad.PdfPig;using IronPdf;)
  • Substitua PdfDocument.Open() por PdfDocument.FromFile()
  • Substitua document.Information por pdf.MetaData
  • Substitua document.NumberOfPages por pdf.PageCount
  • Converter índices de página de base 1 para base 0
  • Remover declarações using (opcional, o IronPDF não as exige)
  • Adicione a chave de licença do IronPDF na inicialização do aplicativo.

Pós-migração

  • O resultado da extração de texto de teste corresponde às expectativas.
  • Testar todos os cenários de geração de PDF
  • Adicionar novas funcionalidades (fusão, marcas d'água, segurança) conforme necessário.
  • Instale as dependências do Linux se estiver implantando em um sistema Linux.

Curtis Chau
Redator Técnico

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais ...

Leia mais

Equipe de suporte de ferro

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