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

Como migrar do PeachPDF para o IronPDF em C#

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 completo, passo a passo, que transforma seu fluxo de trabalho básico de HTML para PDF em uma solução completa de PDF com renderização moderna do Chromium, opções avançadas de segurança e amplas capacidades de manipulação.

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 de PDF relativamente nova e menos conhecida, que carece da maturidade, dos recursos e do suporte de soluções já consolidadas. Principais razões para migrar:

  1. Conjunto limitado de recursos: o PêssegoPDF carece de recursos avançados como assinaturas digitais, conformidade com PDF/A e extração de texto sofisticada.

  2. Comunidade pequena: Documentação, exemplos e suporte da comunidade limitados. Com uma base de usuários menor, o suporte da comunidade pode ser escasso, dificultando a obtenção de assistência ou o acesso a documentação completa.

  3. Futuro incerto: Bibliotecas novas sem histórico comprovado apresentam risco de adoção.

  4. Suporte básico a HTML: Recursos limitados de renderização de CSS e JavaScript .

  5. Sem suporte empresarial: Não há opções de suporte profissional ou SLA.

Comparação entre PêssegoPDF e IronPDF

Característica/Característica PêssegoPDF IronPDF
Implementação .NET puro Gerenciado com ampla compatibilidade
Licença Código aberto (BSD-3-Cláusulas) Comercial
Base de usuários Pequeno Grande (mais de 40 milhões de downloads)
Apoiar Impulsionado pela comunidade Profissional com suporte dedicado
Renderização HTML Básico Cromo completo
Suporte a CSS Limitado CSS3 completo
JavaScript Básico ES2024 completo
Assinaturas digitais Não Sim
Conformidade com PDF/A Não Sim
Documentação Limitado Extenso
Estado de desenvolvimento Em desenvolvimento 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 é uma vantagem definitiva, oferecendo soluções rápidas para os problemas enfrentados pelos desenvolvedores.

Para equipes que planejam a adoção do .NET 10 e do C# 14 até 2025 e 2026, o IronPDF oferece recursos abrangentes e manutenção ativa que garantem estabilidade e compatibilidade a longo prazo com as estruturas .NET modernas.


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
# 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";
// Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
' Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
$vbLabelText   $csharpLabel

Identificar o uso do PeachPDF

# Audit PêssegoPDF usage in codebase
grep -r "using PeachPDF" --include="*.cs" .
grep -r "HtmlToPdfConverter\|Convert\|ConvertUrl" --include="*.cs" .
# Audit PêssegoPDF usage in codebase
grep -r "using PeachPDF" --include="*.cs" .
grep -r "HtmlToPdfConverter\|Convert\|ConvertUrl" --include="*.cs" .
SHELL

Referência completa da API

Alterações de namespace

// Before: PeachPDF
using PeachPDF;
using System.IO;

// After: IronPDF
using IronPdf;
using IronPdf.Rendering;
// Before: PeachPDF
using PeachPDF;
using System.IO;

// After: IronPDF
using IronPdf;
using IronPdf.Rendering;
Imports IronPdf
Imports IronPdf.Rendering
Imports System.IO
$vbLabelText   $csharpLabel

Mapeamentos da API principal

PêssegoPDF IronPDF
new HtmlToPdfConverter() new ChromePdfRenderer()
converter.Convert(html) renderer.RenderHtmlAsPdf(html)
converter.ConvertUrl(url) renderer.RenderUrlAsPdf(url)
converter.Header renderer.RenderingOptions.HtmlHeader
converter.Footer renderer.RenderingOptions.HtmlFooter
File.WriteAllBytes(path, pdf) pdf.SaveAs(path)
pdf (byte[]) pdf.BinaryData
PdfReader.LoadFromFile(path) PdfDocument.FromFile(path)
document.MergeWith(other) PdfDocument.Merge(pdfs)

Exemplos de migração de código

Exemplo 1: Conversão de string HTML para PDF

Antes (PeachPDF):

using PeachPDF;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        var html = "<html><body><h1>Hello World</h1></body></html>";
        var pdf = converter.Convert(html);
        File.WriteAllBytes("output.pdf", pdf);
    }
}
using PeachPDF;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        var html = "<html><body><h1>Hello World</h1></body></html>";
        var pdf = converter.Convert(html);
        File.WriteAllBytes("output.pdf", pdf);
    }
}
Imports PeachPDF
Imports System.IO

Class Program
    Shared Sub Main()
        Dim converter = New HtmlToPdfConverter()
        Dim html = "<html><body><h1>Hello World</h1></body></html>"
        Dim pdf = converter.Convert(html)
        File.WriteAllBytes("output.pdf", pdf)
    End Sub
End Class
$vbLabelText   $csharpLabel

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

Class Program
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()
        Dim html = "<html><body><h1>Hello World</h1></body></html>"
        Dim pdf = renderer.RenderHtmlAsPdf(html)
        pdf.SaveAs("output.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

Este exemplo demonstra a diferença fundamental entre as duas bibliotecas. PêssegoPDF usa HtmlToPdfConverter com um método Convert() que retorna um byte[], exigindo File.WriteAllBytes() para salvar. IronPDF usa ChromePdfRenderer com RenderHtmlAsPdf() que retorna um objeto PdfDocument com um método SaveAs() embutido.

As principais vantagens da abordagem do IronPDF: o objeto PdfDocument pode ser manipulado posteriormente (adição de marcas d'água, mesclagem, configurações de segurança) antes de ser salvo, enquanto o array de bytes do PêssegoPDF é uma saída final. A abordagem do IronPDF oferece uma sintaxe mais limpa e melhor integração com aplicativos .NET modernos. Consulte a documentação de conversão de HTML para PDF para obter exemplos completos.

Exemplo 2: Conversão de URL para PDF

Antes (PeachPDF):

using PeachPDF;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        var url = "https://www.example.com";
        var pdf = converter.ConvertUrl(url);
        File.WriteAllBytes("webpage.pdf", pdf);
    }
}
using PeachPDF;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        var url = "https://www.example.com";
        var pdf = converter.ConvertUrl(url);
        File.WriteAllBytes("webpage.pdf", pdf);
    }
}
Imports PeachPDF
Imports System.IO

Class Program
    Shared Sub Main()
        Dim converter = New HtmlToPdfConverter()
        Dim url = "https://www.example.com"
        Dim pdf = converter.ConvertUrl(url)
        File.WriteAllBytes("webpage.pdf", pdf)
    End Sub
End Class
$vbLabelText   $csharpLabel

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

Class Program
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()
        Dim url = "https://www.example.com"
        Dim pdf = renderer.RenderUrlAsPdf(url)
        pdf.SaveAs("webpage.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

O PêssegoPDF usa ConvertUrl() enquanto o IronPDF usa RenderUrlAsPdf(). A nomenclatura dos métodos no IronPDF é mais descritiva — ela indica explicitamente que uma URL está sendo renderizada como um PDF. Ambas as bibliotecas lidam com a conversão de URL para PDF de forma semelhante, mas o mecanismo Chromium completo do IronPDF oferece renderização superior de páginas da web modernas com CSS e JavaScript complexos. Saiba mais em nossos tutoriais .

Exemplo 3: Adicionando cabeçalhos e rodapés

Antes (PeachPDF):

using PeachPDF;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        converter.Header = "<div style='text-align:center'>My Header</div>";
        converter.Footer = "<div style='text-align:center'>Page {page}</div>";
        var html = "<html><body><h1>Document Content</h1></body></html>";
        var pdf = converter.Convert(html);
        File.WriteAllBytes("document.pdf", pdf);
    }
}
using PeachPDF;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        converter.Header = "<div style='text-align:center'>My Header</div>";
        converter.Footer = "<div style='text-align:center'>Page {page}</div>";
        var html = "<html><body><h1>Document Content</h1></body></html>";
        var pdf = converter.Convert(html);
        File.WriteAllBytes("document.pdf", pdf);
    }
}
Imports PeachPDF
Imports System.IO

Class Program
    Shared Sub Main()
        Dim converter = New HtmlToPdfConverter()
        converter.Header = "<div style='text-align:center'>My Header</div>"
        converter.Footer = "<div style='text-align:center'>Page {page}</div>"
        Dim html = "<html><body><h1>Document Content</h1></body></html>"
        Dim pdf = converter.Convert(html)
        File.WriteAllBytes("document.pdf", pdf)
    End Sub
End Class
$vbLabelText   $csharpLabel

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");
    }
}
// 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");
    }
}
Imports IronPdf
Imports IronPdf.Rendering
Imports System

Module Program
    Sub Main()
        Dim renderer As New ChromePdfRenderer()
        renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter() With {.HtmlFragment = "<div style='text-align:center'>My Header</div>"}
        renderer.RenderingOptions.HtmlFooter = New HtmlHeaderFooter() With {.HtmlFragment = "<div style='text-align:center'>Page {page}</div>"}
        Dim html As String = "<html><body><h1>Document Content</h1></body></html>"
        Dim pdf = renderer.RenderHtmlAsPdf(html)
        pdf.SaveAs("document.pdf")
    End Sub
End Module
$vbLabelText   $csharpLabel

Este exemplo mostra uma diferença arquitetônica fundamental. O PêssegoPDF usa propriedades de string simples (converter.Header e converter.Footer) para cabeçalhos e rodapés. IronPDF usa objetos HtmlHeaderFooter atribuídos a RenderingOptions.HtmlHeader e RenderingOptions.HtmlFooter.

A abordagem do IronPDF oferece mais flexibilidade — objetos HtmlHeaderFooter podem incluir propriedades adicionais como MaxHeight para controlar o tamanho do cabeçalho/rodapé. Observe que ambas as bibliotecas usam {page} como marcador de posição para o número da página. O IronPDF também suporta {total-pages} para contagem total de páginas.

Observe 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 da classe do conversor

PeachPDF usa HtmlToPdfConverter; IronPDF usa ChromePdfRenderer:

// PeachPDF
var converter = new HtmlToPdfConverter();

// IronPDF
var renderer = new ChromePdfRenderer();
// PeachPDF
var converter = new HtmlToPdfConverter();

// IronPDF
var renderer = new ChromePdfRenderer();
' PeachPDF
Dim converter As New HtmlToPdfConverter()

' IronPDF
Dim renderer As New ChromePdfRenderer()
$vbLabelText   $csharpLabel

Alteração do tipo de retorno

PeachPDF retorna byte[]; IronPDF retorna PdfDocument:

// PeachPDF: Returns byte array
byte[] pdf = converter.Convert(html);
File.WriteAllBytes("output.pdf", pdf);

// IronPDF: Returns PdfDocument object
PdfDocument pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
// Or get bytes: byte[] bytes = pdf.BinaryData;
// PeachPDF: Returns byte array
byte[] pdf = converter.Convert(html);
File.WriteAllBytes("output.pdf", pdf);

// IronPDF: Returns PdfDocument object
PdfDocument pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
// Or get bytes: byte[] bytes = pdf.BinaryData;
' PeachPDF: Returns byte array
Dim pdf As Byte() = converter.Convert(html)
File.WriteAllBytes("output.pdf", pdf)

' IronPDF: Returns PdfDocument object
Dim pdfDoc As PdfDocument = renderer.RenderHtmlAsPdf(html)
pdfDoc.SaveAs("output.pdf")
' Or get bytes: Dim bytes As Byte() = pdfDoc.BinaryData
$vbLabelText   $csharpLabel

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

// PeachPDF: Simple string properties
converter.Header = "<div>Header</div>";
converter.Footer = "<div>Footer</div>";

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

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

' IronPDF: HtmlHeaderFooter objects
renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter() With {
    .HtmlFragment = "<div>Header</div>"
}
renderer.RenderingOptions.HtmlFooter = New HtmlHeaderFooter() With {
    .HtmlFragment = "<div>Footer</div>"
}
$vbLabelText   $csharpLabel

Alterações no nome do método

PêssegoPDF IronPDF
Convert(html) RenderHtmlAsPdf(html)
ConvertUrl(url) RenderUrlAsPdf(url)
File.WriteAllBytes() SaveAs()

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");
var pdf1 = PdfDocument.FromFile("doc1.pdf");
var pdf2 = PdfDocument.FromFile("doc2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
CONVERTER NOT RUNNING
$vbLabelText   $csharpLabel

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");
var pdf = PdfDocument.FromFile("document.pdf");
pdf.ApplyWatermark("<div style='color: red; font-size: 48pt;'>DRAFT</div>");
pdf.SaveAs("watermarked.pdf");
Dim pdf = PdfDocument.FromFile("document.pdf")
pdf.ApplyWatermark("<div style='color: red; font-size: 48pt;'>DRAFT</div>")
pdf.SaveAs("watermarked.pdf")
$vbLabelText   $csharpLabel

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");
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");
Dim renderer As New ChromePdfRenderer()
Dim 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")
$vbLabelText   $csharpLabel

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");
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");
Imports IronPdf.Signing

Dim pdf = PdfDocument.FromFile("document.pdf")
Dim signature = New PdfSignature("certificate.pfx", "password") With {
    .SigningReason = "Document Approval",
    .SigningLocation = "New York"
}
pdf.Sign(signature)
pdf.SaveAs("signed.pdf")
$vbLabelText   $csharpLabel

Operações assíncronas

var renderer = new ChromePdfRenderer();
var pdf = await renderer.RenderHtmlAsPdfAsync("<h1>Async PDF</h1>");
pdf.SaveAs("async_output.pdf");
var renderer = new ChromePdfRenderer();
var pdf = await renderer.RenderHtmlAsPdfAsync("<h1>Async PDF</h1>");
pdf.SaveAs("async_output.pdf");
Dim renderer As New ChromePdfRenderer()
Dim pdf = Await renderer.RenderHtmlAsPdfAsync("<h1>Async PDF</h1>")
pdf.SaveAs("async_output.pdf")
$vbLabelText   $csharpLabel

Resumo da comparação de recursos

Recurso PêssegoPDF IronPDF
HTML para PDF Básico Cromo completo
URL para PDF Limitado Sim
CSS Grid/Flexbox Não Sim
JavaScript Limitado ES2024 completo
Mesclar PDFs Sim Sim
Dividir PDFs Limitado Sim
Marcas d'água Limitado HTML completo
Cabeçalhos/Rodapés Básico HTML completo
Assinaturas digitais Não Sim
PDF/A Não Sim
Preenchimento de formulários Limitado Sim
Extração de texto Básico Sim
Extração de Imagens Não Sim
Suporte assíncrono Limitado Sim
Multiplataforma Desconhecido Sim

Problemas comuns de migração

Problema 1: Padrão de API diferente

Problema: O PêssegoPDF usa um padrão de conversor com saída em formato de matriz de bytes; O IronPDF utiliza um padrão de renderização com saída em formato PdfDocument.

Solução:

// PêssegoPDF pattern
var converter = new HtmlToPdfConverter();
var pdf = converter.Convert(html);
File.WriteAllBytes(path, pdf);

// IronPDF pattern
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs(path);
// PêssegoPDF pattern
var converter = new HtmlToPdfConverter();
var pdf = converter.Convert(html);
File.WriteAllBytes(path, pdf);

// IronPDF pattern
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs(path);
' PêssegoPDF pattern
Dim converter As New HtmlToPdfConverter()
Dim pdf = converter.Convert(html)
File.WriteAllBytes(path, pdf)

' IronPDF pattern
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs(path)
$vbLabelText   $csharpLabel

Problema 2: Diferença no método de salvamento

Problema: PêssegoPDF requer File.WriteAllBytes(); O IronPDF possui SaveAs() integrado.

Solução: Substitua File.WriteAllBytes("path", pdf) por pdf.SaveAs("path").

Problema 3: Objetos de cabeçalho/rodapé

Problema: o PêssegoPDF usa propriedades de string; O IronPDF utiliza propriedades de objeto.

Solução: Envolva as strings HTML em objetos HtmlHeaderFooter com a propriedade HtmlFragment.


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

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

Alterações no código

  • Atualizar importações de namespace (using PeachPDF;using IronPdf;)
  • Adicione using IronPdf.Rendering; para funcionalidade de cabeçalho/rodapé
  • Substitua HtmlToPdfConverter por ChromePdfRenderer
  • Substitua converter.Convert(html) por renderer.RenderHtmlAsPdf(html)
  • Substitua converter.ConvertUrl(url) por renderer.RenderUrlAsPdf(url)
  • Substitua File.WriteAllBytes(path, pdf) por pdf.SaveAs(path)
  • Substitua Footer pelos 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.

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