Saltar al pie de página
GUíAS DE MIGRACIóN

Migración de Haukcode.DinkToPdf a IronPDF

Haukcode.DinkToPdf es una continuación de la otrora popular biblioteca DinkToPdf, que utiliza el binario wkhtmltopdf para convertir HTML a PDF para aplicaciones .NET . Aunque Haukcode.DinkToPdf se mantuvo al día con .NET Core después de que el proyecto original se estancó, conlleva importantes problemas de seguridad debido a su dependencia ascendente. El proyecto wkhtmltopdf se archivó en enero de 2023, por lo que estos problemas nunca se resolverán.

Esta guía ofrece una ruta de migración completa de Haukcode.DinkToPdf a IronPDF, que incluye instrucciones paso a paso, comparaciones de código y ejemplos prácticos para desarrolladores profesionales de .NET que buscan eliminar los riesgos de seguridad de sus flujos de trabajo de generación de PDF.

Alerta de seguridad crítica: CVE-2022-35583

Haukcode.DinkToPdf hereda una importante vulnerabilidad de seguridad de wkhtmltopdf que no se puede solucionar:

CVE-2022-35583 - Vulnerabilidad SSRF crítica (CVSS 9.8)

La biblioteca wkhtmltopdf (y todos sus envoltorios, incluido Haukcode.DinkToPdf) es vulnerable a la falsificación de peticiones del lado del servidor (SSRF):

  • Vector de ataque: El contenido HTML malicioso puede hacer que el servidor obtenga recursos internos
  • Ataque de metadatos de AWS: puede acceder a http://169.254.169.254 para robar credenciales de AWS
  • Acceso a la red interna: Puede escanear y acceder a servicios internos
  • Inclusión de archivos locales: puede leer archivos locales a través del protocolo file://
  • Impacto: Posible adquisición completa de la infraestructura

NO hay solución para esta vulnerabilidad porque wkhtmltopdf fue abandonado y archivado en 2023. La última versión fue la 0.12.6 en 2020.

IronPDF frente a Haukcode.DinkToPdf: Comparación de características

Comprender las diferencias arquitectónicas ayuda a los responsables técnicos a evaluar la inversión en migración:

Aspecto Haukcode.DinkToPdf IronPDF
Motor subyacente wkhtmltopdf (Qt WebKit ~2015) Chromium (actualizado regularmente)
Estado de seguridad CVE-2022-35583 (CRÍTICO, no corregible) Parcheado activamente
Estado del proyecto Bifurcación de proyecto abandonado Desarrollado activamente
HTML5/CSS3 Limitado Se admite
JavaScript Limitado, inseguro Motor V8 completo
Binarios nativos Requisitos (específicos de la plataforma) Autocontenido
Seguridad de hilos Requiere el patrón singleton Thread-safe por diseño
Soporte Sólo para la comunidad Asistencia profesional
Actualizaciones No se espera ninguno Publicaciones periódicas
Licencia MIT (gratuito) Comercial con prueba gratuita

Inicio rápido: Migración de Haukcode.DinkToPdf a IronPDF

La migración puede comenzar inmediatamente con estos pasos básicos.

Paso 1: Eliminar DinkToPdf y los binarios nativos

Elimine los paquetes NuGet de Haukcode.DinkToPdf:

# Remove NuGet packages
dotnet remove package DinkToPdf
dotnet remove package Haukcode.DinkToPdf
dotnet remove package Haukcode.WkHtmlToPdf-DotNet
# Remove NuGet packages
dotnet remove package DinkToPdf
dotnet remove package Haukcode.DinkToPdf
dotnet remove package Haukcode.WkHtmlToPdf-DotNet
SHELL

Eliminar binarios nativos de su proyecto:

  • libwkhtmltox.dll (Windows)
  • libwkhtmltox.so (Linux)
  • libwkhtmltox.dylib (macOS)

Paso 2: Instalar IronPDF

# Install IronPDF
dotnet add package IronPdf
# Install IronPDF
dotnet add package IronPdf
SHELL

Paso 3: Actualizar los espacios de nombres

Sustituya los espacios de nombres de DinkToPdf por IronPdf:

// Before (Haukcode.DinkToPdf)
using DinkToPdf;
using DinkToPdf.Contracts;

// After (IronPDF)
using IronPdf;
using IronPdf.Rendering;  // For RenderingOptions
// Before (Haukcode.DinkToPdf)
using DinkToPdf;
using DinkToPdf.Contracts;

// After (IronPDF)
using IronPdf;
using IronPdf.Rendering;  // For RenderingOptions
Imports IronPdf
Imports IronPdf.Rendering
$vbLabelText   $csharpLabel

Paso 4: Inicializar licencia

Añadir inicialización de licencia al inicio de la aplicación:

IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
$vbLabelText   $csharpLabel

Ejemplos de migración de código

Conversión básica de HTML a PDF

La operación más fundamental revela la diferencia de complejidad entre estas bibliotecas PDF .NET.

Enfoque de Haukcode.DinkToPdf:

// NuGet: Install-Package DinkToPdf
using DinkToPdf;
using DinkToPdf.Contracts;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new SynchronizedConverter(new PdfTools());

        var doc = new HtmlToPdfDocument()
        {
            GlobalSettings = {
                ColorMode = ColorMode.Color,
                Orientation = Orientation.Portrait,
                PaperSize = PaperKind.A4,
            },
            Objects = {
                new ObjectSettings() {
                    HtmlContent = "<html><body><h1>Hello World</h1></body></html>",
                }
            }
        };

        byte[] pdf = converter.Convert(doc);
        File.WriteAllBytes("output.pdf", pdf);
    }
}
// NuGet: Install-Package DinkToPdf
using DinkToPdf;
using DinkToPdf.Contracts;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new SynchronizedConverter(new PdfTools());

        var doc = new HtmlToPdfDocument()
        {
            GlobalSettings = {
                ColorMode = ColorMode.Color,
                Orientation = Orientation.Portrait,
                PaperSize = PaperKind.A4,
            },
            Objects = {
                new ObjectSettings() {
                    HtmlContent = "<html><body><h1>Hello World</h1></body></html>",
                }
            }
        };

        byte[] pdf = converter.Convert(doc);
        File.WriteAllBytes("output.pdf", pdf);
    }
}
Imports DinkToPdf
Imports DinkToPdf.Contracts
Imports System.IO

Module Program
    Sub Main()
        Dim converter = New SynchronizedConverter(New PdfTools())

        Dim doc = New HtmlToPdfDocument() With {
            .GlobalSettings = New GlobalSettings() With {
                .ColorMode = ColorMode.Color,
                .Orientation = Orientation.Portrait,
                .PaperSize = PaperKind.A4
            },
            .Objects = New List(Of ObjectSettings) From {
                New ObjectSettings() With {
                    .HtmlContent = "<html><body><h1>Hello World</h1></body></html>"
                }
            }
        }

        Dim pdf As Byte() = converter.Convert(doc)
        File.WriteAllBytes("output.pdf", pdf)
    End Sub
End Module
$vbLabelText   $csharpLabel

Enfoque IronPDF:

// NuGet: Install-Package IronPdf
using IronPdf;
using System.IO;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

        var pdf = renderer.RenderHtmlAsPdf("<html><body><h1>Hello World</h1></body></html>");

        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System.IO;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

        var pdf = renderer.RenderHtmlAsPdf("<html><body><h1>Hello World</h1></body></html>");

        pdf.SaveAs("output.pdf");
    }
}
Imports IronPdf
Imports System.IO

Class Program
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()

        Dim pdf = renderer.RenderHtmlAsPdf("<html><body><h1>Hello World</h1></body></html>")

        pdf.SaveAs("output.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

Haukcode.DinkToPdf requiere crear un SynchronizedConverter con PdfTools, construir un HtmlToPdfDocument con GlobalSettings y Objects anidados, agregar un ObjectSettings con HtmlContent, llamar a converter.Convert() para obtener bytes sin procesar y escribir manualmente en un archivo con File.WriteAllBytes().

IronPDF simplifica esto a tres líneas: crea un ChromePdfRenderer, llama a RenderHtmlAsPdf() y usa el método incorporado SaveAs().

Para situaciones avanzadas de conversión de HTML a PDF, consulte la Guía de conversión de HTML a PDF.

Convertir URL en PDF

La conversión de URL a PDF muestra diferencias de patrón similares.

Enfoque de Haukcode.DinkToPdf:

// NuGet: Install-Package DinkToPdf
using DinkToPdf;
using DinkToPdf.Contracts;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new SynchronizedConverter(new PdfTools());

        var doc = new HtmlToPdfDocument()
        {
            GlobalSettings = {
                ColorMode = ColorMode.Color,
                Orientation = Orientation.Portrait,
                PaperSize = PaperKind.A4,
            },
            Objects = {
                new ObjectSettings() {
                    Page = "https://www.example.com",
                }
            }
        };

        byte[] pdf = converter.Convert(doc);
        File.WriteAllBytes("webpage.pdf", pdf);
    }
}
// NuGet: Install-Package DinkToPdf
using DinkToPdf;
using DinkToPdf.Contracts;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new SynchronizedConverter(new PdfTools());

        var doc = new HtmlToPdfDocument()
        {
            GlobalSettings = {
                ColorMode = ColorMode.Color,
                Orientation = Orientation.Portrait,
                PaperSize = PaperKind.A4,
            },
            Objects = {
                new ObjectSettings() {
                    Page = "https://www.example.com",
                }
            }
        };

        byte[] pdf = converter.Convert(doc);
        File.WriteAllBytes("webpage.pdf", pdf);
    }
}
Imports DinkToPdf
Imports DinkToPdf.Contracts
Imports System.IO

Module Program
    Sub Main()
        Dim converter = New SynchronizedConverter(New PdfTools())

        Dim doc = New HtmlToPdfDocument() With {
            .GlobalSettings = New GlobalSettings() With {
                .ColorMode = ColorMode.Color,
                .Orientation = Orientation.Portrait,
                .PaperSize = PaperKind.A4
            },
            .Objects = New List(Of ObjectSettings) From {
                New ObjectSettings() With {
                    .Page = "https://www.example.com"
                }
            }
        }

        Dim pdf As Byte() = converter.Convert(doc)
        File.WriteAllBytes("webpage.pdf", pdf)
    End Sub
End Module
$vbLabelText   $csharpLabel

Enfoque 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");
    }
}
// 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");
    }
}
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")
    End Sub
End Class
$vbLabelText   $csharpLabel

Haukcode.DinkToPdf utiliza el mismo patrón de construcción de documentos con ObjectSettings.Page para las URL.IronPDFproporciona un método RenderUrlAsPdf() dedicado que expresa claramente la intención.

Explore la URL a la documentación PDF para conocer las opciones de autenticación y encabezado personalizado.

Configuración de páginas personalizadas

La configuración de la orientación, el tamaño del papel y los márgenes requiere distintos enfoques.

Enfoque de Haukcode.DinkToPdf:

// NuGet: Install-Package DinkToPdf
using DinkToPdf;
using DinkToPdf.Contracts;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new SynchronizedConverter(new PdfTools());

        var doc = new HtmlToPdfDocument()
        {
            GlobalSettings = {
                ColorMode = ColorMode.Color,
                Orientation = Orientation.Landscape,
                PaperSize = PaperKind.Letter,
                Margins = new MarginSettings() { Top = 10, Bottom = 10, Left = 10, Right = 10 }
            },
            Objects = {
                new ObjectSettings() {
                    HtmlContent = "<html><body><h1>Landscape Document</h1><p>Custom page settings</p></body></html>",
                }
            }
        };

        byte[] pdf = converter.Convert(doc);
        File.WriteAllBytes("landscape.pdf", pdf);
    }
}
// NuGet: Install-Package DinkToPdf
using DinkToPdf;
using DinkToPdf.Contracts;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new SynchronizedConverter(new PdfTools());

        var doc = new HtmlToPdfDocument()
        {
            GlobalSettings = {
                ColorMode = ColorMode.Color,
                Orientation = Orientation.Landscape,
                PaperSize = PaperKind.Letter,
                Margins = new MarginSettings() { Top = 10, Bottom = 10, Left = 10, Right = 10 }
            },
            Objects = {
                new ObjectSettings() {
                    HtmlContent = "<html><body><h1>Landscape Document</h1><p>Custom page settings</p></body></html>",
                }
            }
        };

        byte[] pdf = converter.Convert(doc);
        File.WriteAllBytes("landscape.pdf", pdf);
    }
}
Imports DinkToPdf
Imports DinkToPdf.Contracts
Imports System.IO

Module Program
    Sub Main()
        Dim converter = New SynchronizedConverter(New PdfTools())

        Dim doc = New HtmlToPdfDocument() With {
            .GlobalSettings = New GlobalSettings() With {
                .ColorMode = ColorMode.Color,
                .Orientation = Orientation.Landscape,
                .PaperSize = PaperKind.Letter,
                .Margins = New MarginSettings() With {.Top = 10, .Bottom = 10, .Left = 10, .Right = 10}
            },
            .Objects = {
                New ObjectSettings() With {
                    .HtmlContent = "<html><body><h1>Landscape Document</h1><p>Custom page settings</p></body></html>"
                }
            }
        }

        Dim pdf As Byte() = converter.Convert(doc)
        File.WriteAllBytes("landscape.pdf", pdf)
    End Sub
End Module
$vbLabelText   $csharpLabel

Enfoque IronPDF:

// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

        renderer.RenderingOptions.PaperSize = PdfPaperSize.Letter;
        renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
        renderer.RenderingOptions.MarginTop = 10;
        renderer.RenderingOptions.MarginBottom = 10;
        renderer.RenderingOptions.MarginLeft = 10;
        renderer.RenderingOptions.MarginRight = 10;

        var pdf = renderer.RenderHtmlAsPdf("<html><body><h1>Landscape Document</h1><p>Custom page settings</p></body></html>");

        pdf.SaveAs("landscape.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

        renderer.RenderingOptions.PaperSize = PdfPaperSize.Letter;
        renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
        renderer.RenderingOptions.MarginTop = 10;
        renderer.RenderingOptions.MarginBottom = 10;
        renderer.RenderingOptions.MarginLeft = 10;
        renderer.RenderingOptions.MarginRight = 10;

        var pdf = renderer.RenderHtmlAsPdf("<html><body><h1>Landscape Document</h1><p>Custom page settings</p></body></html>");

        pdf.SaveAs("landscape.pdf");
    }
}
Imports IronPdf
Imports IronPdf.Rendering

Class Program
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()

        renderer.RenderingOptions.PaperSize = PdfPaperSize.Letter
        renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape
        renderer.RenderingOptions.MarginTop = 10
        renderer.RenderingOptions.MarginBottom = 10
        renderer.RenderingOptions.MarginLeft = 10
        renderer.RenderingOptions.MarginRight = 10

        Dim pdf = renderer.RenderHtmlAsPdf("<html><body><h1>Landscape Document</h1><p>Custom page settings</p></body></html>")

        pdf.SaveAs("landscape.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

Haukcode.DinkToPdf anida configuraciones dentro de GlobalSettings con un objeto MarginSettings separado.IronPDFproporciona propiedades directas RenderingOptions con nombres claros como PaperSize, PaperOrientation y propiedades de margen individuales.

Referencia de la API de Haukcode.DinkToPdf a IronPDF

Este mapeo acelera la migración al mostrar los equivalentes directos de las API:

Mapeo de clases conversoras

Haukcode.DinkToPdf IronPDF
SynchronizedConverter ChromePdfRenderer
BasicConverter ChromePdfRenderer
PdfTools N/A
IConverter N/A

Mapeo de configuración de documentos

Haukcode.DinkToPdf IronPDF
HtmlToPdfDocument Llamada al método
GlobalSettings RenderingOptions
ObjectSettings RenderingOptions
converter.Convert(doc) renderer.RenderHtmlAsPdf(html)

Mapeo de propiedades de GlobalSettings

Propiedad GlobalSettings Propiedad de IronPDF
ColorMode RenderingOptions.GrayScale
Orientation RenderingOptions.PaperOrientation
PaperSize RenderingOptions.PaperSize
Margins.Top RenderingOptions.MarginTop
Margins.Bottom RenderingOptions.MarginBottom
Margins.Left RenderingOptions.MarginLeft
Margins.Right RenderingOptions.MarginRight

Mapeo de propiedades de ObjectSettings

Propiedad ObjectSettings Equivalente de IronPDF
HtmlContent Primer parámetro de RenderHtmlAsPdf()
Page (URL) renderer.RenderUrlAsPdf(url)
HeaderSettings.Right = "[page]" TextHeader.RightText = "{page}"

Migración de la sintaxis de los marcadores

Haukcode.DinkToPdf IronPDF
[page] {page}
[toPage] {total-pages}
[date] {date}

Problemas comunes de migración y soluciones

Número 1: Requisito Singleton

Haukcode.DinkToPdf: Requiere SynchronizedConverter como singleton debido a problemas de seguridad de subprocesos con el binario nativo wkhtmltopdf.

Solución: ChromePdfRenderer deIronPDFes seguro para subprocesos por diseño, no requiere singleton:

// Before (DinkToPdf) - MUST be singleton
services.AddSingleton(typeof(IConverter), new SynchronizedConverter(new PdfTools()));

// After (IronPDF) - Can be singleton or transient (both work)
services.AddSingleton<IPdfService, IronPdfService>();
// Or services.AddTransient<IPdfService, IronPdfService>() - both are safe!
// Before (DinkToPdf) - MUST be singleton
services.AddSingleton(typeof(IConverter), new SynchronizedConverter(new PdfTools()));

// After (IronPDF) - Can be singleton or transient (both work)
services.AddSingleton<IPdfService, IronPdfService>();
// Or services.AddTransient<IPdfService, IronPdfService>() - both are safe!
' Before (DinkToPdf) - MUST be singleton
services.AddSingleton(GetType(IConverter), New SynchronizedConverter(New PdfTools()))

' After (IronPDF) - Can be singleton or transient (both work)
services.AddSingleton(Of IPdfService, IronPdfService)()
' Or services.AddTransient(Of IPdfService, IronPdfService)() - both are safe!
$vbLabelText   $csharpLabel

Número 2: Dependencias binarias nativas

Haukcode.DinkToPdf: Requiere bibliotecas nativas específicas de la plataforma (libwkhtmltox.dll/so/dylib).

Solución:IronPDFes autónomo y no tiene dependencias binarias nativas. Elimine estos archivos después de la migración:

  • libwkhtmltox.dll (Windows)
  • libwkhtmltox.so (Linux)
  • libwkhtmltox.dylib (macOS)

Tema 3: Diferencias en los tipos de retorno

Haukcode.DinkToPdf: converter.Convert() devuelve byte[] directamente.

Solución:IronPDFdevuelve un objeto PdfDocument con múltiples opciones de salida:

var pdf = renderer.RenderHtmlAsPdf(html);
byte[] bytes = pdf.BinaryData;  // Get bytes
pdf.SaveAs("output.pdf");       // Or save directly
var pdf = renderer.RenderHtmlAsPdf(html);
byte[] bytes = pdf.BinaryData;  // Get bytes
pdf.SaveAs("output.pdf");       // Or save directly
Dim pdf = renderer.RenderHtmlAsPdf(html)
Dim bytes As Byte() = pdf.BinaryData  ' Get bytes
pdf.SaveAs("output.pdf")  ' Or save directly
$vbLabelText   $csharpLabel

Edición 4: Sintaxis de marcador de posición de encabezado/pie

Haukcode.DinkToPdf: utiliza sintaxis de corchetes como [page] y [toPage].

Solución: Actualización de los marcadores de posición de llaves de IronPDF:

// Before (DinkToPdf)
HeaderSettings = { Right = "Page [page] of [toPage]" }

// After (IronPDF)
renderer.RenderingOptions.TextHeader = new TextHeaderFooter
{
    RightText = "Page {page} of {total-pages}"
};
// Before (DinkToPdf)
HeaderSettings = { Right = "Page [page] of [toPage]" }

// After (IronPDF)
renderer.RenderingOptions.TextHeader = new TextHeaderFooter
{
    RightText = "Page {page} of {total-pages}"
};
' Before (DinkToPdf)
HeaderSettings = New With {.Right = "Page [page] of [toPage]"}

' After (IronPDF)
renderer.RenderingOptions.TextHeader = New TextHeaderFooter With {
    .RightText = "Page {page} of {total-pages}"
}
$vbLabelText   $csharpLabel

Lista de migración de Haukcode.DinkToPdf

Tareas previas a la migración

Audite su código base para identificar todos los usos de DinkToPdf:

# Find DinkToPdf namespace usage
grep -r "using DinkToPdf\|using Haukcode" --include="*.cs" .

# Find converter usage
grep -r "SynchronizedConverter\|BasicConverter\|HtmlToPdfDocument" --include="*.cs" .

# Find native library loading
grep -r "wkhtmltopdf\|libwkhtmltox" --include="*.cs" --include="*.csproj" .

# Find GlobalSettings/ObjectSettings usage
grep -r "GlobalSettings\|ObjectSettings\|MarginSettings" --include="*.cs" .
# Find DinkToPdf namespace usage
grep -r "using DinkToPdf\|using Haukcode" --include="*.cs" .

# Find converter usage
grep -r "SynchronizedConverter\|BasicConverter\|HtmlToPdfDocument" --include="*.cs" .

# Find native library loading
grep -r "wkhtmltopdf\|libwkhtmltox" --include="*.cs" --include="*.csproj" .

# Find GlobalSettings/ObjectSettings usage
grep -r "GlobalSettings\|ObjectSettings\|MarginSettings" --include="*.cs" .
SHELL

Documente las configuraciones actuales de GlobalSettings y ObjectSettings. Identifique cualquier código de carga de biblioteca nativa que pueda eliminarse.

Tareas de actualización de código

  1. Eliminar paquetes NuGet de DinkToPdf
  2. Instalación del paquete IronPdf NuGet
  3. Actualizar las importaciones de espacios de nombres de DinkToPdf a IronPdf
  4. Reemplace SynchronizedConverter con ChromePdfRenderer
  5. Convertir patrones HtmlToPdfDocument en llamadas directas a métodos
  6. Convertir GlobalSettings a RenderingOptions
  7. Convertir ObjectSettings a RenderingOptions
  8. Actualizar la sintaxis del marcador de posición ([page]{page}, [toPage]{total-pages})
  9. Añadir la inicialización de la licenciaIronPDFal inicio

Tareas de limpieza de infraestructuras

  1. Eliminar binarios nativos (libwkhtmltox.*)
  2. Eliminar el código de carga de la biblioteca nativa
  3. Eliminar CustomAssemblyLoadContext si está presente
  4. Actualización de la inyección de dependencias (ya no se requiere singleton)
  5. Eliminar el código de detección de plataformas para los binarios nativos

Pruebas posteriores a la migración

Tras la migración, verifique estos aspectos:

  • Prueba de conversión de HTML a PDF
  • Prueba de conversión de URL a PDF
  • Verificar la configuración de la página (tamaño, orientación, márgenes)
  • Verificación de encabezados y pies de página con marcadores de posición
  • Prueba con plantillas HTML reales
  • Prueba de rendimiento bajo carga

Beneficios clave de migrar a IronPDF

Pasar de Haukcode.DinkToPdf aIronPDFofrece varias ventajas fundamentales:

Seguridad: elimina CVE-2022-35583 (SSRF) y otras vulnerabilidades de wkhtmltopdf que nunca serán parcheadas.

Motor de renderizado moderno: utiliza Chromium actualizado activamente en lugar del abandonado Qt WebKit de 2015. Compatibilidad total con HTML5, CSS3 y JavaScript .

Sin binarios nativos: biblioteca autónoma sin DLL específicos de la plataforma para administrar. Simplifica la implementación en Windows, Linux y macOS.

Seguridad de subprocesos: no se requiere singleton: use ChromePdfRenderer libremente en cualquier patrón, incluida la instanciación por solicitud.

API más simple: llamadas a métodos directos (RenderHtmlAsPdf(), RenderUrlAsPdf()) en lugar de la construcción de objetos de documento complejos.

Desarrollo activo: a medida que aumenta la adopción de .NET 10 y C# 14 hasta 2026, las actualizaciones periódicas deIronPDFgarantizan la compatibilidad con las versiones actuales y futuras de .NET .

Curtis Chau
Escritor Técnico

Curtis Chau tiene una licenciatura en Ciencias de la Computación (Carleton University) y se especializa en el desarrollo front-end con experiencia en Node.js, TypeScript, JavaScript y React. Apasionado por crear interfaces de usuario intuitivas y estéticamente agradables, disfruta trabajando con frameworks modernos y creando manuales bien ...

Leer más

Equipo de soporte de Iron

Estamos disponibles online las 24 horas, 5 días a la semana.
Chat
Email
Llámame