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:
-
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.
-
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.
-
Futuro incerto: Bibliotecas novas sem histórico comprovado apresentam risco de adoção.
-
Suporte básico a HTML: Recursos limitados de renderização de CSS e JavaScript .
- 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
- Ambiente .NET : .NET Framework 4.6.2+ ou .NET Core 3.1+ / .NET 5/6/7/8/9+
- Acesso ao NuGet : Capacidade de instalar pacotes NuGet.
- 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
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"
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" .
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
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
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
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
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
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
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
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()
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
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>"
}
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
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")
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")
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")
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")
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)
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
HtmlToPdfConverterporChromePdfRenderer - Substitua
converter.Convert(html)porrenderer.RenderHtmlAsPdf(html) - Substitua
converter.ConvertUrl(url)porrenderer.RenderUrlAsPdf(url) - Substitua
File.WriteAllBytes(path, pdf)porpdf.SaveAs(path) - Substitua
Footerpelos objetosHtmlFooter - 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.

