Cómo migrar de PDF Duo a IronPDF en C#
La migración de PDF Duo .NETaIronPDFtraslada su flujo de trabajo PDF .NET de una biblioteca oscura y mal documentada con un estado de mantenimiento poco claro a una solución estable, bien documentada y mantenida activamente. Esta guía proporciona una ruta de migración completa y paso a paso que elimina los riesgos asociados a las bibliotecas abandonadas, a la vez que se obtiene acceso a funciones avanzadas que PDF Duo no puede proporcionar.
Por qué migrar de PDF Duo a IronPDF
El problema del riesgo del dúo PDF
PDF Duo .NET es una biblioteca escurridiza y menos conocida del ecosistema .NET. Si bien puede haber atraído a los desarrolladores que buscan simplicidad, la oscuridad de la biblioteca presenta desafíos significativos para las aplicaciones de producción:
-
Procedencia poco clara: Desarrollador desconocido sin respaldo empresarial verificable. No hay repositorio visible en GitHub ni código fuente, las estadísticas de descarga de NuGet son limitadas y las condiciones de licencia inciertas.
-
Documentación faltante: es casi imposible encontrar información confiable. No existe ninguna referencia oficial de la API, los ejemplos de la comunidad son escasos y no hay tutoriales ni guías oficiales. Cualquier intento de utilizar PDF Duo se ve obstaculizado por la escasez de documentación fiable.
-
Estado abandonado o inactivo: Los signos de negligencia son evidentes con actualizaciones esporádicas o nulas. Los foros de soporte muestran mensajes de 2019 sin respuesta. El riesgo muy real de abandono compromete su viabilidad para proyectos significativos.
-
Funciones limitadas: solo funcionalidad básica: HTML simple a PDF y fusión básica de PDF sin funciones avanzadas como formularios, seguridad o marcas de agua.
-
Motor de renderizado desconocido: no hay transparencia sobre lo que hay debajo del capó. Se desconoce la compatibilidad con CSS/JavaScript, la calidad de representación es impredecible y la compatibilidad con las funciones web modernas es incierta.
- Riesgo de soporte: No hay recurso cuando las cosas se rompen. No hay soporte profesional, ni comunidad que ayude, y el riesgo de abandono es total.
Comparación entre PDF Duo e IronPDF
| Aspecto | PDF Duo .NET | IronPDF |
|---|---|---|
| Mantenimiento | Desconocido/Inactivo | Actualizaciones activas y regulares |
| Documentación | Escaso/falta | Completo |
| Soporte | Ninguno | Equipo de asistencia profesional |
| Comunidad | ~0 usuarios | 41M+ descargas de NuGet |
| Traducción | Motor desconocido | Chromium moderno |
| Características | Básico | Con todas las funciones |
| Estabilidad | Desconocido | Probado en producción |
| Licencias | Poco claro | Transparente |
Para los equipos que planean la adopción de .NET 10 y C# 14 hasta 2025 y 2026,IronPDFproporciona una base estable con un desarrollo activo y una documentación completa, eliminando las incertidumbres de depender de una biblioteca abandonada.
Antes de empezar
Prerrequisitos
- Entorno .NET : .NET Framework 4.6.2+ o .NET Core 3.1+ / .NET 5/6/7/8/9+
- Acceso a NuGet : Capacidad para instalar paquetes NuGet
- Licencia deIronPDF: Obtenga su clave de licencia en IronPDF
Cambios en el paquete 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
Configuración de licencias
// 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 el uso de 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" .
Referencia completa de la API
Cambios en el espacio de nombres
| PDF Duo .NET | IronPDF |
|---|---|
using PDFDuo; |
using IronPdf; |
using PDFDuo.Document; |
using IronPdf; |
using PDFDuo.Rendering; |
using IronPdf.Rendering; |
using PDFDuo.Settings; |
using IronPdf; |
Conversión de HTML a 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) |
Configuración de páginas
| 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) |
Propiedades de los márgenes individuales |
Marcadores
| PDF Duo .NET | IronPDF |
|---|---|
new Margins(top, right, bottom, left) |
Propiedades individuales |
margins.Top |
RenderingOptions.MarginTop |
margins.Right |
RenderingOptions.MarginRight |
margins.Bottom |
RenderingOptions.MarginBottom |
margins.Left |
RenderingOptions.MarginLeft |
Mapeo de operaciones documentales
| 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) |
Nuevas funciones no disponibles en PDF Duo
| Característica | IronPDF |
|---|---|
| Encabezados/pies de página | RenderingOptions.HtmlHeader, HtmlFooter |
| Números de página | {page}, {total-pages} marcadores de posición |
| Marcas de agua | pdf.ApplyWatermark(html) |
| Protección mediante contraseña | pdf.SecuritySettings |
| Relleno de formularios | pdf.Form.Fields |
| Firmas digitales | pdf.SignWithFile() |
| Extracción de texto | pdf.ExtractAllText() |
| PDF a imagen | pdf.RasterizeToImageFiles() |
Ejemplos de migración de código
Ejemplo 1: Conversión de HTML a 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
Despué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
La diferencia fundamental en este caso es el modelo de API. HtmlToPdfConverter.ConvertHtmlString() de PDF Duo toma la ruta HTML y la ruta de salida en una sola llamada, manejando la conversión y el guardado juntos. ChromePdfRenderer.RenderHtmlAsPdf() deIronPDFdevuelve primero un objeto PdfDocument, que luego se guarda con SaveAs().
Este enfoque orientado a objetos ofrece ventajas significativas: puede manipular el PDF (añadir marcas de agua, fusionar documentos, añadir seguridad, extraer texto) antes de guardarlo, nada de lo cual es posible con el enfoque directo a archivo de PDF Duo. Consulte la documentación HTML a PDF para obtener más opciones de conversión.
Ejemplo 2: Conversión de URL a 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
Despué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
PDF Duo utiliza la misma clase HtmlToPdfConverter para la conversión de URL con ConvertUrl(url, outputPath).IronPDFutiliza ChromePdfRenderer con el método dedicado RenderUrlAsPdf(url), devolviendo un objeto PdfDocument.
Una ventaja clave es que el motor de renderizado basado en Chromium deIronPDFproporciona compatibilidad moderna con CSS3 y JavaScript, mientras que el motor de renderizado desconocido de PDF Duo hace que la compatibilidad con CSS/JavaScript sea incierta y la calidad de renderizado impredecible. Más información sobre Conversión de URL a PDF.
Ejemplo 3: Fusión de PDF
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
Despué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 ejemplo muestra una diferencia arquitectónica fundamental. PDF Duo utiliza una clase dedicada PdfMerger con un método AddFile() para poner en cola los archivos y luego Merge() para combinarlos y guardarlos en un solo paso.
IronPDF utiliza un patrón diferente: carga cada PDF como un PdfDocument usando PdfDocument.FromFile(), luego usa el método estático PdfDocument.Merge() para combinarlos. Esto devuelve un nuevo objeto PdfDocument que se guarda por separado con SaveAs().
El enfoque deIronPDFofrece más flexibilidad: puede manipular cualquiera de los PDF antes de fusionarlos, añadir marcas de agua al resultado fusionado, aplicar ajustes de seguridad, etc. Para fusionar muchos archivos, puede utilizar 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")
Más información sobre mezclar y dividir archivos PDF.
Nuevas capacidades tras la migración
Tras migrar a IronPDF, obtendrá funciones que PDF Duo sencillamente no puede ofrecerle:
Cabeceras y pies de página con 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")
PDF Duo no admite encabezados ni pies de página; no existe una funcionalidad equivalente.IronPDFes totalmente compatible con HTML/CSS e incorpora marcadores de posición para contenido dinámico, como números de página. Consulte la guía encabezados y pies de página.
Marcas de agua
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")
PDF Duo no admite marcas de agua.IronPDFproporciona marcas de agua basadas en HTML con soporte completo de estilos CSS.
Protección con contraseña
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")
PDF Duo no admite protección por contraseña ni ajustes de seguridad.
Extracción 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()
PDF Duo no admite la extracción de texto.
Notas de migración críticas
Objeto de los márgenes a las propiedades individuales
PDF Duo utiliza un único objeto Margins;IronPDFutiliza propiedades individuales:
// 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
Nombres de métodos de ahorro
Diferentes nombres de métodos para guardar:
// 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")
Carga de PDF
Diferentes nombres de métodos de carga:
// 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")
Configuración de objetos a propiedades
PDF Duo utiliza objetos de configuración pasados al constructor;IronPDFutiliza propiedades:
// 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
Comparación de características
| Característica | PDF Duo .NET | IronPDF |
|---|---|---|
| HTML a PDF | Básico | CSS3 completo, JavaScript |
| URL a PDF | Básico | Completo con soporte auth |
| Fusión de PDF | Sí | Sí |
| Encabezados/pies de página | No | Compatibilidad total con HTML |
| Números de página | No | Marcadores de posición incorporados |
| Marcas de agua | No | Basado en HTML |
| Protección por contraseña | No | Opciones de seguridad completas |
| Relleno de formularios | No | Sí |
| Firmas digitales | No | Sí |
| Extracción de Texto | No | Sí |
| PDF a imágenes | No | Sí |
| Soporte de Async | Desconocido | Async/await completo |
| .NET Core/5+ | Desconocido | Se admite |
Lista de comprobación de la migración
Pre-Migración
- Encuentra todas las referencias de PDF Duo en el código base
- Configuraciones actuales del documento (tamaño de página, márgenes, etc.)
- Enumere todas las operaciones PDF utilizadas
- Identificar oportunidades para nuevas funciones (encabezados, marcas de agua, seguridad)
- Obtener la clave de licencia de IronPDF
Cambios en el paquete
- Eliminar el paquete NuGet
PDFDuo.NET - Instalar
IronPdfpaquete NuGet :dotnet add package IronPdf - Actualizar las importaciones de espacios de nombres de
using PDFDuo;ausing IronPdf;
Cambios de código
- Agregar configuración de clave de licencia al inicio
- Reemplace
HtmlToPdfConverterconChromePdfRenderer - Reemplace
ConvertHtmlString(html, path)conRenderHtmlAsPdf(html).SaveAs(path) - Reemplace
ConvertUrl(url, path)conRenderUrlAsPdf(url).SaveAs(path) - Reemplace el patrón
PdfMergercon el patrónPdfDocument.Merge() - Convertir el objeto
Marginsen propiedades de margen individuales - Reemplace
Save()conSaveAs() - Reemplace
Load()conFromFile()
Posmigración
- Ejecutar pruebas de regresión comparando la salida PDF
- Verificar que los tamaños de página y los márgenes coincidan
- Pruebe con HTML/CSS complejo (el motor moderno deIronPDFdebería manejarlo mejor)
- Agregar nuevas funciones (encabezados, pies de página, marcas de agua, seguridad)
- Actualización de la documentación

