Cómo migrar de TuesPechkin a IronPDF en C#
TuesPechkin ha servido como una envoltura a prueba de hilos alrededor de la biblioteca wkhtmltopdf, ayudando a los desarrolladores .NET a convertir HTML a PDF durante años. Sin embargo, la tecnología wkhtmltopdf subyacente se actualizó por última vez en 2015 y se abandonó oficialmente en diciembre de 2022. Esto crea limitaciones críticas de seguridad, estabilidad y renderización que los equipos de desarrollo ya no pueden ignorar.
Esta guía proporciona una ruta de migración completa de TuesPechkina IronPDF, con instrucciones paso a paso, comparaciones de código y ejemplos prácticos para desarrolladores .NET profesionales que estén evaluando esta transición.
Por qué migrar de TuesPechkinahora
La decisión de migrar de TuesPechkinya no es opcional para los equipos de desarrollo preocupados por la seguridad. La biblioteca wkhtmltopdf subyacente contiene vulnerabilidades críticas sin parche que nunca se solucionarán.
Vulnerabilidad de seguridad crítica: CVE-2022-35583
| Atributo | Valor |
|---|---|
| CVE ID | CVE-2022-35583 |
| Severity | CRITICO (9.8/10) |
| Vector de ataque | Red |
| Estado | NUNCA SERÁ PARCHEADO |
| Afectados | TODAS las versiones de TuesPechkin |
Los responsables de wkhtmltopdf han declarado explícitamente que NO corregirán las vulnerabilidades de seguridad. Toda aplicación que utilice TuesPechkinestá permanentemente expuesta a ataques de Falsificación de Peticiones del Lado del Servidor (SSRF).
Cómo funciona el ataque
Al procesar HTML proporcionado por el usuario, los atacantes pueden inyectar contenido malicioso:
<iframe src="http://169.254.169.254/latest/meta-data/iam/security-credentials/"></iframe>
<img src="http://internal-admin-panel:8080/api/users?export=all" />
<iframe src="http://169.254.169.254/latest/meta-data/iam/security-credentials/"></iframe>
<img src="http://internal-admin-panel:8080/api/users?export=all" />
Esto permite a los atacantes acceder a los puntos finales de metadatos de AWS/Azure/GCP, robar datos de API internos, escanear puertos de redes internas y extraer configuración confidencial.
La crisis tecnológica
TuesPechkin incluye wkhtmltopdf, que utiliza Qt WebKit 4.8, una tecnología antigua, anterior a la era Chrome. Esto significa:
- No es compatible con Flexbox
- No es compatible con CSS Grid
- Ejecución rota de JavaScript
- No es compatible con ES6+
La crisis de estabilidad
Incluso con el anunciado ThreadSafeConverter, TuesPechkinse bloquea bajo carga alta:
// ❌ TuesPechkin- "ThreadSafeConverter" still crashes
var converter = new TuesPechkin.ThreadSafeConverter(
new TuesPechkin.RemotingToolset<PechkinBindings>());
// Under high load, you'll see:
// System.AccessViolationException: Attempted to read or write protected memory
// Process terminated unexpectedly
// Converter hangs indefinitely
// ❌ TuesPechkin- "ThreadSafeConverter" still crashes
var converter = new TuesPechkin.ThreadSafeConverter(
new TuesPechkin.RemotingToolset<PechkinBindings>());
// Under high load, you'll see:
// System.AccessViolationException: Attempted to read or write protected memory
// Process terminated unexpectedly
// Converter hangs indefinitely
' ❌ TuesPechkin- "ThreadSafeConverter" still crashes
Dim converter = New TuesPechkin.ThreadSafeConverter(
New TuesPechkin.RemotingToolset(Of PechkinBindings)())
' Under high load, you'll see:
' System.AccessViolationException: Attempted to read or write protected memory
' Process terminated unexpectedly
' Converter hangs indefinitely
IronPDFvs TuesPechkin: Comparación de características
Comprender las diferencias arquitectónicas ayuda a los responsables técnicos a evaluar la inversión en migración:
| Característica | TuesPechkin | IronPDF |
|---|---|---|
| Licencia | Gratuito (Licencia MIT) | Comercial |
| Seguridad de hilos | Requiere gestión manual | Soporte nativo |
| Moneda | Limitado, puede bloquearse bajo carga | Robusto, maneja alta concurrencia |
| Desarrollo | Inactivo, última actualización 2015 | Mejoras activas y continuas |
| Facilidad de uso | Configuración compleja | Fácil de usar con guías |
| Documentación | Básico | Extenso con ejemplos |
| Seguridad | cVE críticos | ✅ No se conocen vulnerabilidades |
| HTML a PDF | ⚠️ WebKit desactualizado | chromium moderno |
| CSS3 | ❌ Parcial | ✅ Soporte |
| Flexbox/Grid | ❌ No compatible | ✅ Soporte |
| JavaScript | ⚠️ Poco fiable | eS6+ completo |
| Manipulación de PDF | ❌ No disponible | ✅ Completo |
| Firmas digitales | ❌ No disponible | ✅ Completo |
| Cumplimiento de PDF/A | ❌ No disponible | ✅ Completo |
| Relleno de formularios | ❌ No disponible | ✅ Completo |
| Marcas de agua | ❌ No disponible | ✅ Completo |
| Fusionar/Dividir | ❌ No disponible | ✅ Completo |
Inicio rápido: Migración de TuesPechkina IronPDF
La migración puede comenzar inmediatamente con estos pasos básicos.
Paso 1: Sustituir paquetes NuGet
Eliminar todos los paquetes TuesPechkin:
# Remove TuesPechkinand all related packages
dotnet remove package TuesPechkin
dotnet remove package TuesPechkin.Wkhtmltox.Win64
dotnet remove package TuesPechkin.Wkhtmltox.Win32
# Remove TuesPechkinand all related packages
dotnet remove package TuesPechkin
dotnet remove package TuesPechkin.Wkhtmltox.Win64
dotnet remove package TuesPechkin.Wkhtmltox.Win32
Instalar IronPDF:
# Install IronPDF
dotnet add package IronPdf
# Install IronPDF
dotnet add package IronPdf
Paso 2: Eliminar binarios nativos
Elimine estos archivos y carpetas de su proyecto:
wkhtmltox.dllwkhtmltopdf.exe- Cualquier archivo
wkhtmlto* TuesPechkin.Wkhtmltoxcarpeta
Paso 3: Actualizar los espacios de nombres
Sustituya los espacios de nombres TuesPechkinpor el espacio de nombres IronPdf:
// Before (TuesPechkin)
using TuesPechkin;
using TuesPechkin.Wkhtmltox.Win64;
// After (IronPDF)
using IronPdf;
// Before (TuesPechkin)
using TuesPechkin;
using TuesPechkin.Wkhtmltox.Win64;
// After (IronPDF)
using IronPdf;
' Before (TuesPechkin)
Imports TuesPechkin
Imports TuesPechkin.Wkhtmltox.Win64
' After (IronPDF)
Imports IronPdf
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"
Ejemplos de migración de código
Convertir HTML a PDF
El caso de uso más común demuestra la diferencia de complejidad entre estas bibliotecas PDF .NET.
Enfoque TuesPechkin:
// NuGet: Install-Package TuesPechkin
using TuesPechkin;
using System.IO;
class Program
{
static void Main()
{
var converter = new StandardConverter(
new RemotingToolset<PdfToolset>(
new Win64EmbeddedDeployment(
new TempFolderDeployment())));
string html = "<html><body><h1>Hello World</h1></body></html>";
byte[] pdfBytes = converter.Convert(new HtmlToPdfDocument
{
Objects = { new ObjectSettings { HtmlText = html } }
});
File.WriteAllBytes("output.pdf", pdfBytes);
}
}
// NuGet: Install-Package TuesPechkin
using TuesPechkin;
using System.IO;
class Program
{
static void Main()
{
var converter = new StandardConverter(
new RemotingToolset<PdfToolset>(
new Win64EmbeddedDeployment(
new TempFolderDeployment())));
string html = "<html><body><h1>Hello World</h1></body></html>";
byte[] pdfBytes = converter.Convert(new HtmlToPdfDocument
{
Objects = { new ObjectSettings { HtmlText = html } }
});
File.WriteAllBytes("output.pdf", pdfBytes);
}
}
Imports TuesPechkin
Imports System.IO
Class Program
Shared Sub Main()
Dim converter = New StandardConverter(
New RemotingToolset(Of PdfToolset)(
New Win64EmbeddedDeployment(
New TempFolderDeployment())))
Dim html As String = "<html><body><h1>Hello World</h1></body></html>"
Dim pdfBytes As Byte() = converter.Convert(New HtmlToPdfDocument With {
.Objects = {New ObjectSettings With {.HtmlText = html}}
})
File.WriteAllBytes("output.pdf", pdfBytes)
End Sub
End Class
Enfoque IronPDF:
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string html = "<html><body><h1>Hello World</h1></body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string html = "<html><body><h1>Hello World</h1></body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim html As String = "<html><body><h1>Hello World</h1></body></html>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("output.pdf")
End Sub
End Class
La versión TuesPechkinrequiere la creación de un StandardConverter con una cadena de inicialización compleja: RemotingToolset, Win64EmbeddedDeployment y TempFolderDeployment. También debe escribir manualmente bytes en un archivo.
IronPDF elimina esta ceremonia por completo. Crea un ChromePdfRenderer, renderiza HTML y guarda. El código es autodocumentado y no requiere conocimientos de herramientas de despliegue ni de gestión de binarios específicos de la plataforma.
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 presenta diferencias de complejidad similares.
Enfoque TuesPechkin:
// NuGet: Install-Package TuesPechkin
using TuesPechkin;
using System.IO;
class Program
{
static void Main()
{
var converter = new StandardConverter(
new RemotingToolset<PdfToolset>(
new Win64EmbeddedDeployment(
new TempFolderDeployment())));
byte[] pdfBytes = converter.Convert(new HtmlToPdfDocument
{
Objects = {
new ObjectSettings {
PageUrl = "https://www.example.com"
}
}
});
File.WriteAllBytes("webpage.pdf", pdfBytes);
}
}
// NuGet: Install-Package TuesPechkin
using TuesPechkin;
using System.IO;
class Program
{
static void Main()
{
var converter = new StandardConverter(
new RemotingToolset<PdfToolset>(
new Win64EmbeddedDeployment(
new TempFolderDeployment())));
byte[] pdfBytes = converter.Convert(new HtmlToPdfDocument
{
Objects = {
new ObjectSettings {
PageUrl = "https://www.example.com"
}
}
});
File.WriteAllBytes("webpage.pdf", pdfBytes);
}
}
Imports TuesPechkin
Imports System.IO
Class Program
Shared Sub Main()
Dim converter = New StandardConverter(
New RemotingToolset(Of PdfToolset)(
New Win64EmbeddedDeployment(
New TempFolderDeployment())))
Dim pdfBytes As Byte() = converter.Convert(New HtmlToPdfDocument With {
.Objects = {
New ObjectSettings With {
.PageUrl = "https://www.example.com"
}
}
})
File.WriteAllBytes("webpage.pdf", pdfBytes)
End Sub
End Class
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
TuesPechkin usa ObjectSettings.PageUrl anidado dentro de un HtmlToPdfDocument.IronPDFproporciona un método dedicado RenderUrlAsPdf 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 renderizado personalizada
La orientación de la página, el tamaño del papel y los márgenes requieren diferentes enfoques de configuración.
Enfoque TuesPechkin:
// NuGet: Install-Package TuesPechkin
using TuesPechkin;
using System.IO;
class Program
{
static void Main()
{
var converter = new StandardConverter(
new RemotingToolset<PdfToolset>(
new Win64EmbeddedDeployment(
new TempFolderDeployment())));
string html = "<html><body><h1>Custom PDF</h1></body></html>";
var document = new HtmlToPdfDocument
{
GlobalSettings = {
Orientation = GlobalSettings.PdfOrientation.Landscape,
PaperSize = GlobalSettings.PdfPaperSize.A4,
Margins = new MarginSettings { Unit = Unit.Millimeters, Top = 10, Bottom = 10 }
},
Objects = {
new ObjectSettings { HtmlText = html }
}
};
byte[] pdfBytes = converter.Convert(document);
File.WriteAllBytes("custom.pdf", pdfBytes);
}
}
// NuGet: Install-Package TuesPechkin
using TuesPechkin;
using System.IO;
class Program
{
static void Main()
{
var converter = new StandardConverter(
new RemotingToolset<PdfToolset>(
new Win64EmbeddedDeployment(
new TempFolderDeployment())));
string html = "<html><body><h1>Custom PDF</h1></body></html>";
var document = new HtmlToPdfDocument
{
GlobalSettings = {
Orientation = GlobalSettings.PdfOrientation.Landscape,
PaperSize = GlobalSettings.PdfPaperSize.A4,
Margins = new MarginSettings { Unit = Unit.Millimeters, Top = 10, Bottom = 10 }
},
Objects = {
new ObjectSettings { HtmlText = html }
}
};
byte[] pdfBytes = converter.Convert(document);
File.WriteAllBytes("custom.pdf", pdfBytes);
}
}
Imports TuesPechkin
Imports System.IO
Module Program
Sub Main()
Dim converter = New StandardConverter(
New RemotingToolset(Of PdfToolset)(
New Win64EmbeddedDeployment(
New TempFolderDeployment())))
Dim html As String = "<html><body><h1>Custom PDF</h1></body></html>"
Dim document = New HtmlToPdfDocument With {
.GlobalSettings = New GlobalSettings With {
.Orientation = GlobalSettings.PdfOrientation.Landscape,
.PaperSize = GlobalSettings.PdfPaperSize.A4,
.Margins = New MarginSettings With {.Unit = Unit.Millimeters, .Top = 10, .Bottom = 10}
},
.Objects = {
New ObjectSettings With {.HtmlText = html}
}
}
Dim pdfBytes As Byte() = converter.Convert(document)
File.WriteAllBytes("custom.pdf", pdfBytes)
End Sub
End Module
Enfoque IronPDF:
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Engines.Chrome;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 10;
renderer.RenderingOptions.MarginBottom = 10;
string html = "<html><body><h1>Custom PDF</h1></body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("custom.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Engines.Chrome;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 10;
renderer.RenderingOptions.MarginBottom = 10;
string html = "<html><body><h1>Custom PDF</h1></body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("custom.pdf");
}
}
Imports IronPdf
Imports IronPdf.Engines.Chrome
Imports System
Module Program
Sub Main()
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
renderer.RenderingOptions.MarginTop = 10
renderer.RenderingOptions.MarginBottom = 10
Dim html As String = "<html><body><h1>Custom PDF</h1></body></html>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("custom.pdf")
End Sub
End Module
TuesPechkin separa las configuraciones en GlobalSettings para las opciones de todo el documento y ObjectSettings para el contenido.IronPDFconsolida todo en RenderingOptions con nombres de propiedad claros y detectables.
Referencia de la API de TuesPechkina IronPDF
Este mapeo acelera la migración al mostrar los equivalentes directos de las API:
| TuesPechkin | IronPDF |
|---|---|
StandardConverter |
ChromePdfRenderer |
ThreadSafeConverter |
ChromePdfRenderer |
HtmlToPdfDocument |
Parámetros del método |
GlobalSettings |
RenderingOptions |
ObjectSettings.HtmlText |
RenderHtmlAsPdf(html) |
ObjectSettings.PageUrl |
RenderUrlAsPdf(url) |
GlobalSettings.PaperSize |
RenderingOptions.PaperSize |
GlobalSettings.Orientation |
RenderingOptions.PaperOrientation |
MarginSettings |
MarginTop, MarginBottom, etc. |
[page] marcador de posición |
{page} marcador de posición |
[toPage] marcador de posición |
{total-pages} marcador de posición |
RemotingToolset |
No es necesario |
Win64EmbeddedDeployment |
No es necesario |
TempFolderDeployment |
No es necesario |
Problemas comunes de migración y soluciones
Cuestión 1: Código de inicialización complejo
Problema: TuesPechkinrequiere una compleja configuración del conversor con conjuntos de herramientas de despliegue.
Solución:IronPDFes sencillo:
// Before (TuesPechkin)
var converter = new StandardConverter(
new RemotingToolset<PdfToolset>(
new Win64EmbeddedDeployment(
new TempFolderDeployment())));
// After (IronPDF)
var renderer = new ChromePdfRenderer();
// That's it!
// Before (TuesPechkin)
var converter = new StandardConverter(
new RemotingToolset<PdfToolset>(
new Win64EmbeddedDeployment(
new TempFolderDeployment())));
// After (IronPDF)
var renderer = new ChromePdfRenderer();
// That's it!
' Before (TuesPechkin)
Dim converter = New StandardConverter(
New RemotingToolset(Of PdfToolset)(
New Win64EmbeddedDeployment(
New TempFolderDeployment())))
' After (IronPDF)
Dim renderer = New ChromePdfRenderer()
' That's it!
Número 2: Thread Safety Crashes
Problema: ThreadSafeConverter de TuesPechkintodavía falla bajo carga alta con AccessViolationException.
Solución:IronPDFcuenta con seguridad de subprocesos nativa, sin necesidad de configuración especial:
//IronPDFis inherently thread-safe
var renderer = new ChromePdfRenderer();
// Use from any thread without crashes
//IronPDFis inherently thread-safe
var renderer = new ChromePdfRenderer();
// Use from any thread without crashes
'IronPDF is inherently thread-safe
Dim renderer As New ChromePdfRenderer()
' Use from any thread without crashes
Edición 3: Sintaxis del marcador de posición del número de página
Problema: TuesPechkinutiliza los marcadores de posición [page] y [toPage].
Solución: Actualización de la sintaxis de los marcadores de posición de IronPDF:
// Before (TuesPechkin)
"Page [page] of [toPage]"
// After (IronPDF)
"Page {page} of {total-pages}"
// Before (TuesPechkin)
"Page [page] of [toPage]"
// After (IronPDF)
"Page {page} of {total-pages}"
Número 4: CSS Layout Broken
Problema: Los diseños Flexbox y Grid no funcionan en TuesPechkinporque wkhtmltopdf utiliza Qt WebKit 4.8.
Solución: Utilizar CSS moderno adecuado con IronPDF:
// Remove table-based workarounds, use modern CSS
var html = @"
<div style='display: flex; justify-content: space-between;'>
<div>Left</div>
<div>Right</div>
</div>";
var pdf = renderer.RenderHtmlAsPdf(html);
// Works correctly with Chromium!
// Remove table-based workarounds, use modern CSS
var html = @"
<div style='display: flex; justify-content: space-between;'>
<div>Left</div>
<div>Right</div>
</div>";
var pdf = renderer.RenderHtmlAsPdf(html);
// Works correctly with Chromium!
' Remove table-based workarounds, use modern CSS
Dim html As String = "
<div style='display: flex; justify-content: space-between;'>
<div>Left</div>
<div>Right</div>
</div>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
' Works correctly with Chromium!
Número 5: Gestión nativa de binarios
Problema: TuesPechkinrequiere los binarios wkhtmltopdf específicos de la plataforma y la configuración de la ruta.
Solución:IronPDFgestiona todas las dependencias a través de NuGet, sin binarios nativos que gestionar:
# Just install the package
dotnet add package IronPdf
# No wkhtmltopdf binaries needed
# Just install the package
dotnet add package IronPdf
# No wkhtmltopdf binaries needed
Lista de comprobación de la migración a TuesPechkin
Tareas previas a la migración
Audite su código base para identificar el uso de TuesPechkin:
grep -r "using TuesPechkin" --include="*.cs" .
grep -r "ThreadSafeConverter\|RemotingToolset" --include="*.cs" .
grep -r "using TuesPechkin" --include="*.cs" .
grep -r "ThreadSafeConverter\|RemotingToolset" --include="*.cs" .
Documente las configuraciones actuales GlobalSettings (tamaño del papel, orientación, márgenes). Documento ObjectSettings configuraciones (contenido HTML, URL). Identificar las implementaciones de encabezado/pie para la conversión. Localice todos los binarios de wkhtmltopdf para eliminarlos.
Tareas de actualización de código
- Eliminar paquetes NuGet de TuesPechkin
- Eliminar los binarios nativos de wkhtmltopdf
- Instalación del paquete IronPdf NuGet
- Actualizar las declaraciones de uso de
TuesPechkinaIronPdf - Añadir la inicialización de la clave de licencia al inicio
- Reemplace los convertidores con
ChromePdfRenderer - Convertir
GlobalSettingsaRenderingOptions - Convertir
ObjectSettingsen parámetros de método - Actualizar la configuración de márgenes a propiedades individuales
- Actualizar la sintaxis del encabezado/pie de página a HTML
HtmlHeaderFooter - Corregir la sintaxis del marcador de posición de página (
[page]→{page}) - Eliminar todo el código de despliegue/toolset
Pruebas posteriores a la migración
Tras la migración, verifique estos aspectos:
- Ejecutar todas las pruebas unitarias
- Pruebe escenarios seguros para subprocesos (IronPDF maneja subprocesos múltiples sin fallos)
- Comparar la calidad de salida de PDF (Chromium renderiza con más precisión)
- Verificación del renderizado CSS (Flexbox y Grid ahora funcionan)
- Pruebe la ejecución de JavaScript (ahora es compatible con ES6+)
- Prueba de renderizado de encabezado/pie de página
- Operaciones por lotes de pruebas de rendimiento
- Escaneo de seguridad para verificar que no quedan binarios wkhtmltopdf
Beneficios clave de migrar a IronPDF
Pasar de TuesPechkinaIronPDFofrece varias ventajas fundamentales:
Seguridad: Se eliminan CVE-2022-35583y otras vulnerabilidades de wkhtmltopdf. El motor Chromium deIronPDFrecibe actualizaciones de seguridad periódicas.
Seguridad de subprocesos nativos: no más configuraciones complejas ThreadSafeConverter. No más fallos de AccessViolationException bajo carga.IronPDFgestiona la concurrencia automáticamente.
Motor de renderizado moderno: compatibilidad total con CSS3, Flexbox, Grid y JavaScript ES6+. Los PDF se muestran exactamente como aparecen en los navegadores modernos.
Implementación simplificada: no es necesario administrar binarios específicos de la plataforma. No se realizará ninguna ceremonia RemotingToolset, Win64EmbeddedDeployment o TempFolderDeployment. Basta con instalar el paquete NuGet.
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 .
Capacidades ampliadas: TuesPechkinsolo convierte HTML a PDF.IronPDFañade manipulación de PDF, firmas digitales, conformidad con PDF/A, rellenado de formularios, marcas de agua y operaciones de fusión/división.

