IRONSOFTWAREHOME
VÍDEOS

Como converter XML para PDF usando C#

Curtis Chau
Curtis Chau
Updated: 19 de julho de 2026

Migrar dePdfPigpara IronPDF expande suas capacidades de PDF de uma biblioteca focada em leitura (com uma superfície de escrita estreita para autorias baseadas em coordenadas e fusão básica) para uma solução abrangente de PDF 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 e passo a passo que preserva seus fluxos de trabalho de extração existentes enquanto adiciona conversão HTML, manipulação de documentos de alto nível, marca d'água e autoria de segurança que oPdfPignão fornece.

Por que migrar doPdfPigpara o IronPDF?

Entendendo o PdfPig

PdfPig (pacote NuGet PdfPig, namespace UglyToad.PdfPig) é uma biblioteca open-source de leitura e extração de PDFs .NET, originalmente inspirado — e parcialmente portado de — o projeto Apache PDFBox em Java. Ele permite que os desenvolvedores acessem o conteúdo estrutural dos PDFs com alta precisão. Embora oPdfPigse destaque na extração, seu escopo é mais estreito do que bibliotecas comerciais de ciclo de vida completo. O projeto permanece pré-1.0 (lançamento estável atual é 0.1.14), e seu README observa que "enquanto a versão estiver abaixo de 1.0.0, versões menores mudarão a API pública sem aviso."

PdfPig fornece ferramentas confiáveis para extrair texto (com posições de letra e palavra), imagens, dados de formulário somente leitura, anotações e metadados. Ele também expõe uma superfície de escritor limitada — PdfDocumentBuilder para autoria de novos documentos de baixo nível e PdfMerger (em UglyToad.PdfPig.Writer) para concatenar PDFs existentes. Isso o torna uma escolha adequada para aplicações focadas principalmente em análise de documentos, mineração de dados e concatenação básica.

A Limitação Focada na Leitura

PdfPig é focado na leitura; sua superfície de escrita é intencionalmente estreita. Quando sua aplicação precisa crescer além da extração e fusão básica, oPdfPignão pode ajudar:

  1. Geração de PDF Limitada: Novos documentos requerem posicionamento manual de coordenadas PdfPoint via PdfDocumentBuilder — sem layout de alto nível.

  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. Manipulação de Documentos Limitada: PdfMerger cobre concatenação, mas não há API de divisão/rotação/edição de alto nível.

  4. Nenhuma Autoria de Segurança: Pode ler PDFs criptografados (com senha) mas não pode adicionar senhas, criptografia ou assinaturas digitais.

  5. Sem Marcas d'água/Carimbos: Nenhuma API de alto nível para sobreposições visuais em documentos existentes.

  6. Sem Preenchimento de Formulários: Os formulários são somente leitura — os valores não podem ser alterados ou adicionados.

Comparação entrePdfPige IronPDF

RecursoPdfPigIronPDF
LicençaCódigo aberto (Apache 2.0)Comercial
Pacote NuGetPdfPig (v0.1.14, pré-1.0)IronPdf
Leitura/Extração de PDFExcelenteExcelente
Geração de PDFLimitado (baseado em coordenadas via PdfDocumentBuilder)Abrangente
HTML para PDFNão suportadoApoiado
Extração de textoExcelente (com caixas de delimitação de palavras)Excelente (somente texto)
Mesclagem de PDFSuportado (PdfMerger)Suportado (PdfDocument.Merge)
Dividir / Rotacionar / EditarNão suportado (alto nível)Apoiado
Marcas d'águaNão suportadoApoiado
Autoria de Segurança/CriptografiaNão suportadoApoiado
Suporte e documentaçãoApoio comunitárioSuporte dedicado
Indexação de páginas1-baseadoBaseado 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 no moderno .NET, fornecendo uma solução completa de ciclo de vida de PDF que se estende além das capacidades 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
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 PdfPig

# FindPdfPigusage
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;

Mapeamentos de carregamento de documentos

PdfPigIronPDF
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

PdfPigIronPDF
document.NumberOfPagespdf.PageCount
document.GetPages()pdf.Pages
document.GetPage(1)pdf.Pages[0]

Mapeamentos de Extração de Texto

PdfPigIronPDF
page.Textpdf.Pages[i].Text
page.GetWords()pdf.ExtractTextFromPage(i)
(manual loop)pdf.ExtractAllText()

Mapeamentos de acesso a metadados

PdfPigIronPDF
document.Information.Titlepdf.MetaData.Title
document.Information.Authorpdf.MetaData.Author
document.Information.Subjectpdf.MetaData.Subject
document.Information.Creatorpdf.MetaData.Creator
document.Information.Producerpdf.MetaData.Producer

Novos recursos não disponíveis no PdfPig

Recurso IronPDFDescrição
renderer.RenderHtmlAsPdf(html)Conversão de HTML para PDF
renderer.RenderUrlAsPdf(url)Conversão de URL para PDF
pdf.ApplyWatermark(html)Adicionar marcas d'água
pdf.SecuritySettings.UserPasswordProteção por senha
pdf.Sign(certificate)Assinaturas digitais

Nota: Fusão de PDFs está disponível em ambas as bibliotecas (PdfMerger em PdfPig, PdfDocument.Merge em IronPDF).


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

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

Tanto oPdfPigquanto o IronPDF oferecem excelentes recursos de extração de texto. A principal diferença está no padrão do código.PdfPigrequer uma declaração using com PdfDocument.Open(), iteração manual através das páginas com GetPages(), e um StringBuilder para acumular texto de cada propriedade @@--CODE-3561@@.

IronPDF simplifica isso para uma única chamada: PdfDocument.FromFile() carrega o documento, e ExtractAllText() retorna todo o conteúdo de texto de uma vez. Nenhuma declaração using é necessária, sem iteração manual, sem 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):

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

Este exemplo destaca a lacuna de funcionalidade mais significativa. OPdfPigafirma 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.

IronPDF fornece 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 internamente um mecanismo Chromium para renderização precisa de HTML, CSS e JavaScript. O PdfDocument resultante pode ser salvo com SaveAs() ou manipulado adicionalmente antes de salvar. 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}");
        }
    }
}

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

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

A migração é direta: substitua PdfDocument.Open() por PdfDocument.FromFile(), document.Information por pdf.MetaData, e document.NumberOfPages por pdf.PageCount. Remova o encapsulamento de declaração using já que IronPDF não o requer.


Notas críticas sobre migração

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

OPdfPigusa 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;

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

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

Alteração do nome da propriedade de metadados

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

// IronPDF: pdf.MetaData
var info = pdf.MetaData;

Alteração da propriedade Contagem de Páginas

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

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

Novas funcionalidades após a migração

Após migrar para o IronPDF, você obtém recursos que oPdfPignã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");

Marcas d'água

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

Proteção por senha

pdf.SecuritySettings.UserPassword = "userpassword";
pdf.SecuritySettings.OwnerPassword = "ownerpassword";

Assinaturas digitais

var signature = new PdfSignature("certificate.pfx", "password")
{
    SigningContact = "support@company.com",
    SigningReason = "Document Approval"
};
pdf.Sign(signature);

Resumo da comparação de recursos

RecursoPdfPigIronPDF
Extração de texto
Acesso a metadados
Extração de Imagens
Criação de PDFLimitado (baseado em coordenadas)
HTML para PDF
URL para PDF
Mesclar PDFs✓(PdfMerger)
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 doPdfPigna 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

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

Alterações no código

  • Atualize as 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
  • Remova as declarações using (opcional,IronPDF não as requer)
  • 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.

Observe: Apache PDFBox ePdfPigsão marcas registradas de seus respectivos proprietários. Este site não é afiliado, apoiado ou patrocinado pela Apache Software Foundation ou UglyToad. 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.