IRONSOFTWAREHOME
VÍDEOS

Como ocultar texto e regiões em um PDF usando C#

Curtis Chau
Curtis Chau
Updated: 19 de julho de 2026

A migração do PêssegoPDF para o IronPDF proporciona acesso à geração de PDFs de nível empresarial com recursos abrangentes, desenvolvimento ativo e suporte profissional. Este guia fornece um caminho de migração passo a passo que leva você do fluxo de trabalho de HTML-para-PDF assíncrono pré-1.0 do PêssegoPDF para uma solução mais completa de PDF com renderização Chromium, configurações de segurança e APIs de manipulação de documentos.

Por que migrar do PêssegoPDF para o IronPDF?

Entendendo o PeachPDF

O PêssegoPDF é um recém-chegado ao ecossistema .NET , projetado para desenvolvedores que precisam converter HTML em PDF. Como biblioteca, o PêssegoPDF promete uma implementação .NET pura, diferenciando-se por não depender de processos externos, garantindo assim uma integração perfeita em todas as plataformas que suportam .NET . Essa característica posiciona o PêssegoPDF como uma opção atraente para projetos que buscam uma solução de biblioteca gerenciada e leve.

Apesar do seu potencial, o PêssegoPDF ainda está em desenvolvimento, o que evidencia tanto possibilidades interessantes quanto limitações importantes. O PêssegoPDF continua atraente devido ao seu .NET Core puro, que promete uma implementação simples em diversos ambientes. Não entanto, isso também se traduz em adoção limitada, com uma base de usuários menor e suporte impulsionado pela comunidade.

As limitações do PeachPDF

PeachPDF é uma biblioteca .NET com manutenção única, versão pré-1.0 (última 0.7.26, outubro de 2025) lançada sobBSD-3-Clausepor jhaygood86. Falta-lhe a maturidade, recursos e suporte de soluções estabelecidas. Principais razões para migrar:

  1. Conjunto de Recursos Pré-1.0: PêssegoPDF não tem assinaturas digitais embutidas, conformidade PDF/A, OCR, preenchimento de formulários ou API de cabeçalho/rodapé em nível de página.

  2. Sem motor JavaScript: PêssegoPDF é um renderizador de layout construído em PeachPDF.PdfSharpCore, não um navegador; scripts e layouts complexos de Grid/Flexbox não são executados.

  3. Apenas net8.0: o pacote tem como alvo net8.0; projetos mais antigos do .NET Framework / .NET 6 precisam ser atualizados ou escolher uma biblioteca diferente.

  4. Comunidade Pequena: um único mantenedor do GitHub, documentação limitada, exemplos limitados.

  5. Sem Suporte Empresarial: nenhum suporte comercial ou opções de SLA.

Comparação entre PêssegoPDF e IronPDF

Característica/CaracterísticaPêssegoPDFIronPDF
ImplementaçãoPuro .NET gerenciado (em PeachPDF.PdfSharpCore + SixLabors)Gerenciado com tempo de execução Chromium incorporado
LicençaBSD-3-ClauseComercial
Framework AlvoApenas net8.0.NET Framework 4.6.2+, .NET 6/7/8
Base de usuáriosPequeno (pré-1.0, 0.7.26 lançado em outubro de 2025)Grande
ApoiarDirigido pela comunidade (manutenção única, jhaygood86)Profissional com suporte dedicado
Renderização HTMLMotor de layout HTML+CSS no PdfSharpCoreCromo completo
Suporte a CSSSubconjunto HTML+CSS, fontes da web, @font-faceCSS3 completo
JavaScriptNão executadoES2024 completo
Assinaturas digitaisNãoSim
Conformidade com PDF/ANãoSim
DocumentaçãoLimitado (único README)Extenso
Estado de desenvolvimentoPré-1.0 (0.7.26, out 2025)Liberação madura e estável

O IronPDF se destaca por sua funcionalidade mais ampla, suportando não apenas conversões de HTML para PDF, mas também OCR, marcas d'água e outros recursos avançados. Sua estrutura de suporte profissional oferece caminhos de resolução rápida para problemas que os desenvolvedores enfrentam.

Para equipes que adotam o moderno .NET, o IronPDF fornece recursos abrangentes e manutenção ativa para apoiar a estabilidade a longo prazo nas versões .NET atuais.


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

# Install IronPDF
dotnet add package IronPdf
SHELL

Configuração de licença

// Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

Identificar o uso do PeachPDF

# Audit PêssegoPDF usage in codebase
grep -r "using PeachPDF" --include="*.cs" .
grep -r "PdfGenerator\|PdfGenerateConfig\|GeneratePdf" --include="*.cs" .
SHELL

Referência completa da API

Alterações de namespace

// Before: PeachPDF
using PeachPDF;
using PeachPDF.PdfSharpCore;
using System.IO;
using System.Threading.Tasks;

// After: IronPDF
using IronPdf;
using IronPdf.Rendering;

Mapeamentos da API principal

PêssegoPDFIronPDF
new PdfGenerator()new ChromePdfRenderer()
await generator.GeneratePdf(html, config)renderer.RenderHtmlAsPdf(html)
document.Save(stream)pdf.SaveAs(path)
document.Save(memStream) então memStream.ToArray()pdf.BinaryData
new PdfGenerateConfig { NetworkAdapter = new HttpClientNetworkAdapter(...) }renderer.RenderUrlAsPdf(url)
config.PageSize, config.PageOrientationrenderer.RenderingOptions.PaperSize, .PaperOrientation
Incorporar no HTML da fonte (CSS position: fixed)RenderingOptions.HtmlHeader / HtmlFooter
Não suportadoPdfDocument.FromFile(path)
Não suportadoPdfDocument.Merge(pdfs) / pdf.AppendPdf(...)

Exemplos de migração de código

Exemplo 1: Conversão de string HTML para PDF

Antes (PeachPDF):

using PeachPDF;
using PeachPDF.PdfSharpCore;
using System.IO;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        var html = "<html><body><h1>Hello World</h1></body></html>";

        var config = new PdfGenerateConfig
        {
            PageSize = PageSize.Letter,
            PageOrientation = PageOrientation.Portrait
        };

        var generator = new PdfGenerator();
        var document = await generator.GeneratePdf(html, config);

        using var stream = File.Create("output.pdf");
        document.Save(stream);
    }
}

Após (IronPDF):

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var html = "<html><body><h1>Hello World</h1></body></html>";
        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("output.pdf");
    }
}

Este exemplo mostra a diferença fundamental entre as duas bibliotecas. PêssegoPDF separa um PdfGenerator (motor) de um PdfGenerateConfig (configurações), expõe um método assíncrono GeneratePdf, e retorna um documento cujo método Save escreve para um Stream.IronPDF usa ChromePdfRenderer com RenderHtmlAsPdf(), que retorna um objeto PdfDocument com um método embutido SaveAs().

Uma vantagem prática da abordagem do IronPDF: o objeto PdfDocument pode ser ainda mais manipulado (adicionando marcas d'água, mesclando, configurações de segurança) antes de salvar, e SaveAs aceita um caminho de arquivo diretamente sem um FileStream intermediário. Veja a documentação de HTML para PDF para mais exemplos.

Exemplo 2: Conversão de URL para PDF

Antes (PeachPDF):

// PêssegoPDF has no ConvertUrl-style helper; URL fetching is wired via
// HttpClientNetworkAdapter and passing null HTML so the engine fetches the page.
using PeachPDF;
using PeachPDF.Network;
using PeachPDF.PdfSharpCore;
using System;
using System.IO;
using System.Net.Http;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        var http = new HttpClient();

        var config = new PdfGenerateConfig
        {
            PageSize = PageSize.Letter,
            NetworkAdapter = new HttpClientNetworkAdapter(http, new Uri("https://www.example.com"))
        };

        var generator = new PdfGenerator();
        var document = await generator.GeneratePdf(null, config);

        using var stream = File.Create("webpage.pdf");
        document.Save(stream);
    }
}
C#

Após (IronPDF):

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var url = "https://www.example.com";
        var pdf = renderer.RenderUrlAsPdf(url);
        pdf.SaveAs("webpage.pdf");
    }
}

PeachPDF não possui um assistente de URL-para-PDF de primeira classe; você define NetworkAdapter na configuração para um HttpClientNetworkAdapter e passa null HTML para que o motor busque a página.IronPDF expõe RenderUrlAsPdf(url) diretamente. Como o PêssegoPDF não executa JavaScript, aplicativos de página única e conteúdo dinâmico geralmente não são renderizados corretamente via rota do adaptador de rede; O motor Chromium do IronPDF lida com CSS moderno e JavaScript. Saiba mais em nossos tutoriais .

Exemplo 3: Adicionando cabeçalhos e rodapés

Antes (PeachPDF):

// PêssegoPDF v0.7.x has no header/footer API. The closest approach is
// to embed the header/footer markup directly inside the source HTML
// using CSS positioning.
using PeachPDF;
using PeachPDF.PdfSharpCore;
using System.IO;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        var html = @"
            <html><head><style>
              .header { position: fixed; top: 0; left: 0; right: 0; text-align:center; }
              .footer { position: fixed; bottom: 0; left: 0; right: 0; text-align:center; }
            </style></head>
            <body>
              <div class='header'>My Header</div>
              <h1>Document Content</h1>
              <div class='footer'>Footer text</div>
            </body></html>";

        var config = new PdfGenerateConfig { PageSize = PageSize.Letter };
        var generator = new PdfGenerator();
        var document = await generator.GeneratePdf(html, config);

        using var stream = File.Create("document.pdf");
        document.Save(stream);
    }
}
C#

Após (IronPDF):

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter() { HtmlFragment = "<div style='text-align:center'>My Header</div>" };
        renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter() { HtmlFragment = "<div style='text-align:center'>Page {page}</div>" };
        var html = "<html><body><h1>Document Content</h1></body></html>";
        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("document.pdf");
    }
}

Este exemplo mostra uma diferença arquitetônica fundamental. PêssegoPDF não expõe uma API de cabeçalho/rodapé em PdfGenerator ou PdfGenerateConfig, então o chrome da página precisa estar dentro do HTML da fonte usando posicionamento CSS.IronPDF usa objetos HtmlHeaderFooter atribuídos a RenderingOptions.HtmlHeader e RenderingOptions.HtmlFooter, separando o chrome da página do conteúdo do documento.

A abordagem do IronPDF também expõe propriedades como MaxHeight para controlar o tamanho do cabeçalho/rodapé, e suporta os espaços reservados {page} e {total-pages} para numeração de páginas.

Note o namespace adicional necessário para o IronPDF: using IronPdf.Rendering; é necessário para a classe HtmlHeaderFooter.


Notas críticas sobre migração

Alteração de Classe de Gerador/Renderizador

PeachPDF usa um par PdfGenerator + PdfGenerateConfig;IronPDF usa um único ChromePdfRenderer:

// PeachPDF
var config = new PdfGenerateConfig { PageSize = PageSize.Letter };
var generator = new PdfGenerator();

// IronPDF
var renderer = new ChromePdfRenderer();

Assíncrono vs Síncrono, e Tipo de Retorno

O GeneratePdf do PêssegoPDF é apenas assíncrono e retorna um documento cujo método Save aceita um Stream. O RenderHtmlAsPdf do IronPDF é síncrono (uma variante assíncrona RenderHtmlAsPdfAsync também está disponível) e retorna um PdfDocument:

// PeachPDF: async, save to a Stream
var document = await generator.GeneratePdf(html, config);
using var fs = File.Create("output.pdf");
document.Save(fs);

// IronPDF: synchronous PdfDocument object
PdfDocument pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
// Or get bytes: byte[] bytes = pdf.BinaryData;

Alteração da propriedade de cabeçalho/rodapé

// PeachPDF: no header/footer API -- embed in source HTML
// (e.g. via CSS position:fixed)

// IronPDF: HtmlHeaderFooter objects
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
{
    HtmlFragment = "<div>Header</div>"
};
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter()
{
    HtmlFragment = "<div>Footer</div>"
};

Alterações no nome do método

PêssegoPDFIronPDF
await generator.GeneratePdf(html, config)renderer.RenderHtmlAsPdf(html)
NetworkAdapter = new HttpClientNetworkAdapter(...) + GeneratePdf(null, config)renderer.RenderUrlAsPdf(url)
document.Save(stream)pdf.SaveAs(path)

Novas funcionalidades após a migração

Após migrar para o IronPDF, você obtém recursos que o PêssegoPDF não oferece:

Fusão de PDFs

var pdf1 = PdfDocument.FromFile("doc1.pdf");
var pdf2 = PdfDocument.FromFile("doc2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
C#

Marcas d'água com HTML

var pdf = PdfDocument.FromFile("document.pdf");
pdf.ApplyWatermark("<div style='color: red; font-size: 48pt;'>DRAFT</div>");
pdf.SaveAs("watermarked.pdf");

Proteção por senha

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Confidential</h1>");

pdf.SecuritySettings.OwnerPassword = "owner123";
pdf.SecuritySettings.UserPassword = "user123";
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.NoPrint;

pdf.SaveAs("protected.pdf");

Assinaturas digitais

using IronPdf.Signing;

var pdf = PdfDocument.FromFile("document.pdf");
var signature = new PdfSignature("certificate.pfx", "password")
{
    SigningReason = "Document Approval",
    SigningLocation = "New York"
};
pdf.Sign(signature);
pdf.SaveAs("signed.pdf");

Operações assíncronas

var renderer = new ChromePdfRenderer();
var pdf = await renderer.RenderHtmlAsPdfAsync("<h1>Async PDF</h1>");
pdf.SaveAs("async_output.pdf");

Resumo da comparação de recursos

RecursoPêssegoPDFIronPDF
HTML para PDFLayout baseado em PdfSharpCoreCromo completo
URL para PDFVia HttpClientNetworkAdapter (sem JS)Sim
CSS Grid/FlexboxParcial / não garantidoSim
JavaScriptNão executadoES2024 completo
Mesclar PDFsNão (HTML->PDF apenas)Sim
Dividir PDFsNãoSim
Marcas d'águaManual via HTMLHTML completo
Cabeçalhos/RodapésManual via HTML/CSSHTML completo
Assinaturas digitaisNãoSim
PDF/ANãoSim
Preenchimento de formuláriosNãoSim
Extração de textoNãoSim
Extração de ImagensNãoSim
Suporte assíncronoAPI apenas assíncronaSim
Multiplataformanet8.0 (Windows / Linux / macOS)Sim

Problemas comuns de migração

Problema 1: Padrão de API diferente

Problema: PêssegoPDF separa PdfGenerator (motor) de PdfGenerateConfig (configurações) e é assíncrono;IronPDF usa um único ChromePdfRenderer que retorna um PdfDocument de forma síncrona.

Solução:

// PêssegoPDF pattern (async, stream-out)
var config = new PdfGenerateConfig { PageSize = PageSize.Letter };
var generator = new PdfGenerator();
var document = await generator.GeneratePdf(html, config);
using var fs = File.Create(path);
document.Save(fs);

//IronPDF pattern
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs(path);
C#

Problema 2: Salva Alvo para um Fluxo, Não um Caminho

Problema: O document.Save(stream) do PêssegoPDF aceita apenas um Stream; O pdf.SaveAs(path) do IronPDF aceita uma string de caminho.

Solução: Use pdf.SaveAs("file.pdf") diretamente no IronPDF em vez de abrir um FileStream.

Problema 3: Sem Operações de PDF Existente

Problema: PêssegoPDF é apenas HTML-para-PDF; não pode carregar, mesclar, dividir ou editar PDFs existentes.

Solução: Substitua essas operações por PdfDocument.FromFile, PdfDocument.Merge e pdf.AppendPdf do IronPDF uma vez migrado.


Lista de verificação para migração

Pré-migração

  • Auditar o uso do PêssegoPDF na base de código
  • Documentar configurações personalizadas
  • Observe todas as implementações de cabeçalho/rodapé
  • Obtenha a chave de licença do IronPDF em IronPDF
  • Teste primeiro com a licença de avaliação do IronPDF

Alterações no pacote

  • Remova o pacote NuGet PeachPDF
  • Instale o pacote NuGet IronPdf: dotnet add package IronPdf

Alterações no código

  • Atualize as importações de namespace (using PeachPDF;using IronPdf;)
  • Adicione using IronPdf.Rendering; para a funcionalidade de cabeçalho/rodapé
  • Substitua PdfGenerator + PdfGenerateConfig por ChromePdfRenderer
  • Substitua await generator.GeneratePdf(html, config) por renderer.RenderHtmlAsPdf(html) (ou RenderHtmlAsPdfAsync para permanecer assíncrono)
  • Substitua HttpClientNetworkAdapter + GeneratePdf(null, config) por renderer.RenderUrlAsPdf(url)
  • Substitua document.Save(stream) por pdf.SaveAs(path)
  • Substitua os cabeçalhos/rodapés incorporados no HTML por objetos HtmlFooter
  • Adicionar inicialização de licença na inicialização do aplicativo

Pós-migração

  • Testar a qualidade da renderização HTML
  • Verificar se o PDF gerado corresponde às expectativas.
  • Testar a renderização do cabeçalho/rodapé com números de página
  • Adicionar novas funcionalidades (segurança, marcas d'água, mesclagem) conforme necessário.

Observe: PeachPDF é uma marca registrada de seu respectivo proprietário. Este site não é afiliado, endossado ou patrocinado por PeachPDF. 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.