Como migrar do PDF Duo para o IronPDF em C#
A migração do PDF Duo .NET para o IronPDF leva seu fluxo de trabalho de PDF em .NET de uma biblioteca obscura, mal documentada e com status de manutenção incerto para uma solução estável, bem documentada e com manutenção ativa. Este guia fornece um caminho de migração abrangente, passo a passo, que elimina os riscos associados a bibliotecas abandonadas, ao mesmo tempo que permite o acesso a recursos avançados que o PDF Duo não oferece.
Por que migrar do PDF Duo para o IronPDF?
O Problema de Risco do PDF Duo
O PDF Duo .NET é uma biblioteca pouco conhecida e difícil de encontrar no ecossistema .NET . Embora possa ter atraído desenvolvedores que buscam simplicidade, a obscuridade da biblioteca apresenta desafios significativos para aplicações em produção:
-
Origem incerta: Desenvolvedor desconhecido sem respaldo empresarial verificável. Não há repositório visível no GitHub nem código-fonte, as estatísticas de download do NuGet são limitadas e os termos de licenciamento são incertos.
-
Documentação Incompleta: É praticamente impossível encontrar informações confiáveis. Não existe uma referência de API oficial, os exemplos da comunidade são escassos e não há tutoriais ou guias oficiais. Qualquer tentativa de utilizar o PDF Duo é dificultada pela escassez de documentação confiável.
-
Estado de abandono ou inatividade: Sinais de negligência são evidentes, com atualizações esporádicas ou inexistentes. Os fóruns de suporte mostram postagens de 2019 sem respostas. O risco muito real de abandono compromete a sua viabilidade para projetos significativos.
-
Recursos limitados: Funcionalidade básica apenas — conversão simples de HTML para PDF e mesclagem básica de PDFs, sem recursos avançados como formulários, segurança ou marcas d'água.
-
Motor de renderização desconhecido: Nenhuma transparência sobre o que está por trás disso. O suporte a CSS/ JavaScript é desconhecido, a qualidade da renderização é imprevisível e o suporte a recursos modernos da web é incerto.
- Risco de suporte: Sem recurso quando as coisas quebram. Não há apoio profissional, nenhuma comunidade para ajudar e o risco de abandono é total.
Comparação entre PDF Duo e IronPDF
| Aspecto | PDF Duo .NET | IronPDF |
|---|---|---|
| Manutenção | Desconhecido/Inativo | Atualizações ativas e regulares |
| Documentação | Escasso/Ausente | Abrangente |
| Apoiar | Nenhum | Equipe de suporte profissional |
| Comunidade | ~0 usuários | Mais de 41 milhões de downloads do NuGet |
| Renderização | Motor desconhecido | Cromo moderno |
| Características | Básico | Completo |
| Estabilidade | Desconhecido | Comprovado em produção |
| Licenciamento | Não está claro | Transparente |
Para equipes que planejam a adoção do .NET 10 e do C# 14 até 2025 e 2026, o IronPDF oferece uma base sólida com desenvolvimento ativo e documentação abrangente, eliminando as incertezas de depender de uma biblioteca descontinuada.
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 PDF Duo .NET (if you can find the correct package name)
dotnet remove package PDFDuo.NET
dotnet remove package PDFDuo
dotnet remove package PDF-Duo
# Install IronPDF
dotnet add package IronPdf
# Remove PDF Duo .NET (if you can find the correct package name)
dotnet remove package PDFDuo.NET
dotnet remove package PDFDuo
dotnet remove package PDF-Duo
# Install IronPDF
dotnet add package IronPdf
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"
Identificar o uso do PDF Duo
# Find all PDF Duo references
grep -r "PDFDuo\|HtmlToPdfConverter\|PdfMerger" --include="*.cs" .
# Find all PDF Duo references
grep -r "PDFDuo\|HtmlToPdfConverter\|PdfMerger" --include="*.cs" .
Referência completa da API
Alterações de namespace
| PDF Duo .NET | IronPDF |
|---|---|
using PDFDuo; |
using IronPdf; |
using PDFDuo.Document; |
using IronPdf; |
using PDFDuo.Rendering; |
using IronPdf.Rendering; |
using PDFDuo.Settings; |
using IronPdf; |
Mapeamentos de conversão de HTML para PDF
| PDF Duo .NET | IronPDF |
|---|---|
new HtmlToPdfConverter() |
new ChromePdfRenderer() |
converter.ConvertHtmlString(html, path) |
renderer.RenderHtmlAsPdf(html).SaveAs(path) |
converter.ConvertUrl(url, path) |
renderer.RenderUrlAsPdf(url).SaveAs(path) |
converter.ConvertFile(htmlPath, pdfPath) |
renderer.RenderHtmlFileAsPdf(htmlPath).SaveAs(pdfPath) |
Mapeamentos de configuração de página
| PDF Duo .NET | IronPDF |
|---|---|
settings.PageSize = PageSize.A4 |
RenderingOptions.PaperSize = PdfPaperSize.A4 |
settings.PageSize = PageSize.Letter |
RenderingOptions.PaperSize = PdfPaperSize.Letter |
settings.Orientation = Landscape |
RenderingOptions.PaperOrientation = Landscape |
new Margins(top, right, bottom, left) |
Propriedades de margem individuais |
Mapeamentos de Margens
| PDF Duo .NET | IronPDF |
|---|---|
new Margins(top, right, bottom, left) |
Propriedades individuais |
margins.Top |
RenderingOptions.MarginTop |
margins.Right |
RenderingOptions.MarginRight |
margins.Bottom |
RenderingOptions.MarginBottom |
margins.Left |
RenderingOptions.MarginLeft |
Mapeamentos de operações de documentos
| PDF Duo .NET | IronPDF |
|---|---|
PDFDocument.Load(path) |
PdfDocument.FromFile(path) |
document.Save(path) |
pdf.SaveAs(path) |
document.ToBytes() |
pdf.BinaryData |
new PdfMerger() |
PdfDocument.Merge() |
merger.AddFile(path) |
PdfDocument.FromFile(path) |
merger.Merge(output) |
merged.SaveAs(output) |
Novos recursos não disponíveis no PDF Duo
| Recurso | IronPDF |
|---|---|
| Cabeçalhos/Rodapés | RenderingOptions.HtmlHeader, HtmlFooter |
| Números de página | {page}, {total-pages} marcadores de posição |
| Marcas d'água | pdf.ApplyWatermark(html) |
| Proteção por senha | pdf.SecuritySettings |
| Preenchimento de formulário | pdf.Form.Fields |
| Assinaturas digitais | pdf.SignWithFile() |
| Extração de texto | pdf.ExtractAllText() |
| PDF para imagem | pdf.RasterizeToImageFiles() |
Exemplos de migração de código
Exemplo 1: Conversão de HTML para PDF
Antes (PDF Duo):
// NuGet: Install-Package PDFDuo.NET
using PDFDuo;
using System;
class Program
{
static void Main()
{
var converter = new HtmlToPdfConverter();
var htmlContent = "<h1>Hello World</h1><p>This is a PDF document.</p>";
converter.ConvertHtmlString(htmlContent, "output.pdf");
Console.WriteLine("PDF created successfully!");
}
}
// NuGet: Install-Package PDFDuo.NET
using PDFDuo;
using System;
class Program
{
static void Main()
{
var converter = new HtmlToPdfConverter();
var htmlContent = "<h1>Hello World</h1><p>This is a PDF document.</p>";
converter.ConvertHtmlString(htmlContent, "output.pdf");
Console.WriteLine("PDF created successfully!");
}
}
Imports PDFDuo
Imports System
Module Program
Sub Main()
Dim converter As New HtmlToPdfConverter()
Dim htmlContent As String = "<h1>Hello World</h1><p>This is a PDF document.</p>"
converter.ConvertHtmlString(htmlContent, "output.pdf")
Console.WriteLine("PDF created successfully!")
End Sub
End Module
Após (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var htmlContent = "<h1>Hello World</h1><p>This is a PDF document.</p>";
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
pdf.SaveAs("output.pdf");
Console.WriteLine("PDF created successfully!");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var htmlContent = "<h1>Hello World</h1><p>This is a PDF document.</p>";
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
pdf.SaveAs("output.pdf");
Console.WriteLine("PDF created successfully!");
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim htmlContent = "<h1>Hello World</h1><p>This is a PDF document.</p>"
Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)
pdf.SaveAs("output.pdf")
Console.WriteLine("PDF created successfully!")
End Sub
End Class
A diferença fundamental aqui reside no padrão da API. O recurso HtmlToPdfConverter.ConvertHtmlString() do PDF Duo recebe o HTML e o caminho de saída em uma única chamada, realizando a conversão e o salvamento simultaneamente. O ChromePdfRenderer.RenderHtmlAsPdf() do IronPDF retorna primeiro um objeto PdfDocument, que você então salva com SaveAs().
Essa abordagem orientada a objetos oferece vantagens significativas: você pode manipular o PDF (adicionar marcas d'água, mesclar documentos, adicionar segurança, extrair texto) antes de salvar — nada disso é possível com a abordagem de gravação direta em arquivo do PDF Duo. Consulte a documentação de conversão de HTML para PDF para obter opções de renderização adicionais.
Exemplo 2: Conversão de URL para PDF
Antes (PDF Duo):
// NuGet: Install-Package PDFDuo.NET
using PDFDuo;
using System;
class Program
{
static void Main()
{
var converter = new HtmlToPdfConverter();
converter.ConvertUrl("https://www.example.com", "webpage.pdf");
Console.WriteLine("Webpage converted to PDF!");
}
}
// NuGet: Install-Package PDFDuo.NET
using PDFDuo;
using System;
class Program
{
static void Main()
{
var converter = new HtmlToPdfConverter();
converter.ConvertUrl("https://www.example.com", "webpage.pdf");
Console.WriteLine("Webpage converted to PDF!");
}
}
Imports PDFDuo
Imports System
Module Program
Sub Main()
Dim converter As New HtmlToPdfConverter()
converter.ConvertUrl("https://www.example.com", "webpage.pdf")
Console.WriteLine("Webpage converted to PDF!")
End Sub
End Module
Após (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
pdf.SaveAs("webpage.pdf");
Console.WriteLine("Webpage converted to PDF!");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
pdf.SaveAs("webpage.pdf");
Console.WriteLine("Webpage converted to PDF!");
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderUrlAsPdf("https://www.example.com")
pdf.SaveAs("webpage.pdf")
Console.WriteLine("Webpage converted to PDF!")
End Sub
End Class
O PDF Duo usa a mesma classe HtmlToPdfConverter para conversão de URL com ConvertUrl(url, outputPath). IronPDF usa ChromePdfRenderer com o método dedicado RenderUrlAsPdf(url), retornando um objeto PdfDocument.
Uma das principais vantagens é que o mecanismo de renderização do IronPDF, baseado no Chromium, oferece suporte moderno a CSS3 e JavaScript , enquanto o mecanismo de renderização desconhecido do PDF Duo deixa o suporte a CSS/ JavaScript incerto e a qualidade da renderização imprevisível. Saiba mais sobre a conversão de URL para PDF .
Exemplo 3: Fusão de PDFs
Antes (PDF Duo):
// NuGet: Install-Package PDFDuo.NET
using PDFDuo;
using System;
class Program
{
static void Main()
{
var merger = new PdfMerger();
merger.AddFile("document1.pdf");
merger.AddFile("document2.pdf");
merger.Merge("merged.pdf");
Console.WriteLine("PDFs merged successfully!");
}
}
// NuGet: Install-Package PDFDuo.NET
using PDFDuo;
using System;
class Program
{
static void Main()
{
var merger = new PdfMerger();
merger.AddFile("document1.pdf");
merger.AddFile("document2.pdf");
merger.Merge("merged.pdf");
Console.WriteLine("PDFs merged successfully!");
}
}
Imports PDFDuo
Imports System
Class Program
Shared Sub Main()
Dim merger As New PdfMerger()
merger.AddFile("document1.pdf")
merger.AddFile("document2.pdf")
merger.Merge("merged.pdf")
Console.WriteLine("PDFs merged successfully!")
End Sub
End Class
Após (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var pdf1 = PdfDocument.FromFile("document1.pdf");
var pdf2 = PdfDocument.FromFile("document2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
Console.WriteLine("PDFs merged successfully!");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var pdf1 = PdfDocument.FromFile("document1.pdf");
var pdf2 = PdfDocument.FromFile("document2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
Console.WriteLine("PDFs merged successfully!");
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
Dim pdf1 = PdfDocument.FromFile("document1.pdf")
Dim pdf2 = PdfDocument.FromFile("document2.pdf")
Dim merged = PdfDocument.Merge(pdf1, pdf2)
merged.SaveAs("merged.pdf")
Console.WriteLine("PDFs merged successfully!")
End Sub
End Class
Este exemplo demonstra uma diferença arquitetônica fundamental. O PDF Duo usa uma classe dedicada PdfMerger com um método AddFile() para enfileirar arquivos e, em seguida, Merge() para combinar e salvar em uma única etapa.
O IronPDF usa um padrão diferente: carrega cada PDF como um PdfDocument usando PdfDocument.FromFile(), e então usa o método estático PdfDocument.Merge() para combiná-los. Isso retorna um novo objeto PdfDocument que você salva separadamente com SaveAs().
A abordagem do IronPDF oferece mais flexibilidade: você pode manipular qualquer um dos PDFs antes de mesclá-los, adicionar marcas d'água ao resultado da mesclagem, aplicar configurações de segurança e muito mais. Para mesclar vários arquivos, você pode usar LINQ:
var paths = new[] { "document1.pdf", "document2.pdf", "document3.pdf" };
var pdfs = paths.Select(PdfDocument.FromFile).ToList();
var merged = PdfDocument.Merge(pdfs);
merged.SaveAs("merged.pdf");
var paths = new[] { "document1.pdf", "document2.pdf", "document3.pdf" };
var pdfs = paths.Select(PdfDocument.FromFile).ToList();
var merged = PdfDocument.Merge(pdfs);
merged.SaveAs("merged.pdf");
Dim paths = {"document1.pdf", "document2.pdf", "document3.pdf"}
Dim pdfs = paths.Select(AddressOf PdfDocument.FromFile).ToList()
Dim merged = PdfDocument.Merge(pdfs)
merged.SaveAs("merged.pdf")
Saiba mais sobre como mesclar e dividir PDFs .
Novas funcionalidades após a migração
Após migrar para o IronPDF, você obtém recursos que o PDF Duo simplesmente não consegue oferecer:
Cabeçalhos e rodapés com números de página
using IronPdf;
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
HtmlFragment = "<div style='text-align:center; font-size:10px;'>Company Report</div>",
MaxHeight = 25
};
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
HtmlFragment = "<div style='text-align:center; font-size:10px;'>Page {page} of {total-pages}</div>",
MaxHeight = 25
};
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("report.pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
HtmlFragment = "<div style='text-align:center; font-size:10px;'>Company Report</div>",
MaxHeight = 25
};
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
HtmlFragment = "<div style='text-align:center; font-size:10px;'>Page {page} of {total-pages}</div>",
MaxHeight = 25
};
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("report.pdf");
Imports IronPdf
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter With {
.HtmlFragment = "<div style='text-align:center; font-size:10px;'>Company Report</div>",
.MaxHeight = 25
}
renderer.RenderingOptions.HtmlFooter = New HtmlHeaderFooter With {
.HtmlFragment = "<div style='text-align:center; font-size:10px;'>Page {page} of {total-pages}</div>",
.MaxHeight = 25
}
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("report.pdf")
O PDF Duo não suporta cabeçalhos ou rodapés — não existe funcionalidade equivalente. O IronPDF oferece suporte completo a HTML/CSS com espaços reservados integrados para conteúdo dinâmico, como números de página. Consulte o guia de cabeçalhos e rodapés .
Marcas d'água
using IronPdf;
using IronPdf.Editing;
var pdf = PdfDocument.FromFile("document.pdf");
pdf.ApplyWatermark(
"<h1 style='color:red; opacity:0.3;'>CONFIDENTIAL</h1>",
45,
VerticalAlignment.Middle,
HorizontalAlignment.Center);
pdf.SaveAs("watermarked.pdf");
using IronPdf;
using IronPdf.Editing;
var pdf = PdfDocument.FromFile("document.pdf");
pdf.ApplyWatermark(
"<h1 style='color:red; opacity:0.3;'>CONFIDENTIAL</h1>",
45,
VerticalAlignment.Middle,
HorizontalAlignment.Center);
pdf.SaveAs("watermarked.pdf");
Imports IronPdf
Imports IronPdf.Editing
Dim pdf = PdfDocument.FromFile("document.pdf")
pdf.ApplyWatermark("<h1 style='color:red; opacity:0.3;'>CONFIDENTIAL</h1>", 45, VerticalAlignment.Middle, HorizontalAlignment.Center)
pdf.SaveAs("watermarked.pdf")
O PDF Duo não suporta marcas d'água. O IronPDF oferece marcas d'água baseadas em HTML com suporte completo para estilos CSS.
Proteção por senha
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SecuritySettings.UserPassword = "userpassword";
pdf.SecuritySettings.OwnerPassword = "ownerpassword";
pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.FullPrintRights;
pdf.SaveAs("secured.pdf");
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SecuritySettings.UserPassword = "userpassword";
pdf.SecuritySettings.OwnerPassword = "ownerpassword";
pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.FullPrintRights;
pdf.SaveAs("secured.pdf");
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SecuritySettings.UserPassword = "userpassword"
pdf.SecuritySettings.OwnerPassword = "ownerpassword"
pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.FullPrintRights
pdf.SaveAs("secured.pdf")
O PDF Duo não oferece suporte à proteção por senha ou configurações de segurança.
Extração de texto
var pdf = PdfDocument.FromFile("document.pdf");
string text = pdf.ExtractAllText();
var pdf = PdfDocument.FromFile("document.pdf");
string text = pdf.ExtractAllText();
Dim pdf = PdfDocument.FromFile("document.pdf")
Dim text As String = pdf.ExtractAllText()
O PDF Duo não suporta extração de texto.
Notas críticas sobre migração
As margens se opõem às propriedades individuais.
O PDF Duo usa um único objeto Margins; O IronPDF utiliza propriedades individuais:
// PDF Duo:
new Margins(top: 20, right: 15, bottom: 20, left: 15)
// IronPDF:
renderer.RenderingOptions.MarginTop = 20;
renderer.RenderingOptions.MarginRight = 15;
renderer.RenderingOptions.MarginBottom = 20;
renderer.RenderingOptions.MarginLeft = 15;
// PDF Duo:
new Margins(top: 20, right: 15, bottom: 20, left: 15)
// IronPDF:
renderer.RenderingOptions.MarginTop = 20;
renderer.RenderingOptions.MarginRight = 15;
renderer.RenderingOptions.MarginBottom = 20;
renderer.RenderingOptions.MarginLeft = 15;
' PDF Duo:
New Margins(top:=20, right:=15, bottom:=20, left:=15)
' IronPDF:
renderer.RenderingOptions.MarginTop = 20
renderer.RenderingOptions.MarginRight = 15
renderer.RenderingOptions.MarginBottom = 20
renderer.RenderingOptions.MarginLeft = 15
Salvar nomenclatura de método
Nomes diferentes para o método de salvar:
// PDF Duo:
document.Save("output.pdf");
// IronPDF:
pdf.SaveAs("output.pdf");
// PDF Duo:
document.Save("output.pdf");
// IronPDF:
pdf.SaveAs("output.pdf");
' PDF Duo:
document.Save("output.pdf")
' IronPDF:
pdf.SaveAs("output.pdf")
Carregando PDFs
Nomes de métodos diferentes para carregamento:
// PDF Duo:
PDFDocument.Load("document.pdf")
// IronPDF:
PdfDocument.FromFile("document.pdf")
// PDF Duo:
PDFDocument.Load("document.pdf")
// IronPDF:
PdfDocument.FromFile("document.pdf")
' PDF Duo:
PDFDocument.Load("document.pdf")
' IronPDF:
PdfDocument.FromFile("document.pdf")
Objeto de configurações para propriedades
O PDF Duo utiliza objetos de configuração passados para o construtor; O IronPDF utiliza as seguintes propriedades:
// PDF Duo:
var settings = new PDFSettings { PageSize = PageSize.A4 };
var converter = new HtmlToPdfConverter(settings);
// IronPDF:
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
// PDF Duo:
var settings = new PDFSettings { PageSize = PageSize.A4 };
var converter = new HtmlToPdfConverter(settings);
// IronPDF:
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
' PDF Duo:
Dim settings As New PDFSettings With {.PageSize = PageSize.A4}
Dim converter As New HtmlToPdfConverter(settings)
' IronPDF:
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
Comparação de recursos
| Recurso | PDF Duo .NET | IronPDF |
|---|---|---|
| HTML para PDF | Básico | CSS3 completo, JavaScript |
| URL para PDF | Básico | Completo com suporte de autenticação |
| Fusão de PDFs | Sim | Sim |
| Cabeçalhos/Rodapés | Não | Suporte completo a HTML |
| Números de página | Não | Espaços reservados integrados |
| Marcas d'água | Não | Baseado em HTML |
| Proteção por senha | Não | Opções de segurança completas |
| Preenchimento de formulários | Não | Sim |
| Assinaturas digitais | Não | Sim |
| Extração de texto | Não | Sim |
| PDF para imagens | Não | Sim |
| Suporte assíncrono | Desconhecido | assíncrono/await completo |
| .NET Core/5+ | Desconhecido | Apoiado |
Lista de verificação para migração
Pré-migração
- Encontre todas as referências do PDF Duo na base de código.
- Documentar as configurações atuais (tamanho da página, margens, etc.)
- Liste todas as operações de PDF utilizadas.
- Identificar oportunidades para novas funcionalidades (cabeçalhos, marcas d'água, segurança)
- Obtenha a chave de licença do IronPDF
Alterações no pacote
- Remover o pacote NuGet
PDFDuo.NET - Instale o pacote NuGet
IronPdf:dotnet add package IronPdf - Atualizar importações de namespace de
using PDFDuo;parausing IronPdf;
Alterações no código
- Adicionar configuração de chave de licença na inicialização
- Substitua
HtmlToPdfConverterporChromePdfRenderer - Substitua
ConvertHtmlString(html, path)porRenderHtmlAsPdf(html).SaveAs(path) - Substitua
ConvertUrl(url, path)porRenderUrlAsPdf(url).SaveAs(path) - Substitua o padrão
PdfMergerpelo padrãoPdfDocument.Merge() - Converter o objeto
Marginsem propriedades de margem individuais - Substitua
Save()porSaveAs() - Substitua
Load()porFromFile()
Pós-migração
- Execute testes de regressão comparando a saída em PDF.
- Verifique se os tamanhos das páginas e as margens correspondem.
- Teste com HTML/CSS complexo (o mecanismo moderno do IronPDF deve lidar melhor com isso)
- Adicionar novas funcionalidades (cabeçalhos, rodapés, marcas d'água, segurança)
- Atualizar documentação

