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

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:

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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

  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 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
SHELL

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"
$vbLabelText   $csharpLabel

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" .
SHELL

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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")
$vbLabelText   $csharpLabel

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")
$vbLabelText   $csharpLabel

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")
$vbLabelText   $csharpLabel

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")
$vbLabelText   $csharpLabel

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()
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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")
$vbLabelText   $csharpLabel

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")
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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; para using IronPdf;

Alterações no código

  • Adicionar configuração de chave de licença na inicialização
  • Substitua HtmlToPdfConverter por ChromePdfRenderer
  • Substitua ConvertHtmlString(html, path) por RenderHtmlAsPdf(html).SaveAs(path)
  • Substitua ConvertUrl(url, path) por RenderUrlAsPdf(url).SaveAs(path)
  • Substitua o padrão PdfMerger pelo padrão PdfDocument.Merge()
  • Converter o objeto Margins em propriedades de margem individuais
  • Substitua Save() por SaveAs()
  • Substitua Load() por FromFile()

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

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