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

Cómo migrar de PDFreactor a IronPDF en C#

Migrar de PDFreactora IronPDF: Guía completa de migración a C

La migración de PDFreactoraIronPDFelimina las dependencias de Java y la infraestructura de servidor, al tiempo que proporciona capacidades equivalentes de conversión de HTML a PDF a través de una biblioteca .NET nativa. Esta guía proporciona una ruta de migración completa, paso a paso, que sustituye su arquitectura de servidor basada en Java por una biblioteca en proceso que se integra perfectamente en las aplicaciones .NET.

Por qué migrar de PDFreactora IronPDF

Entendiendo PDFreactor

PDFreactor es un potente servidor de conversión de HTML a PDF que se integra en varias plataformas. Como solución comercial, PDFreactoraprovecha su tecnología patentada para convertir contenido HTML y CSS en documentos PDF de alta calidad. Entre sus notables atributos, PDFreactores compatible con una amplia gama de propiedades CSS, lo que lo convierte en un firme candidato para la representación de diseños complejos.

Sin embargo, la dependencia de PDFreactorde Java presenta ciertos retos en entornos .NET, donde su naturaleza no nativa puede complicar el despliegue y la integración. Su dependencia de Java crea una sobrecarga adicional en las aplicaciones .NET, lo que a menudo requiere un trabajo de integración adicional.

El problema de la dependencia de Java

La arquitectura de PDFreactorplantea varios retos en entornos .NET:

  1. Java Runtime Required: Requiere la instalación de JRE/JDK en todos los servidores.

  2. Arquitectura de servidor: Se ejecuta como un servicio independiente que requiere infraestructura adicional. Como solución basada en servidor, PDFreactorrequiere llamadas a la API REST para cada conversión.

  3. Despliegue complejo: Gestionar las dependencias de Java en un ecosistema principalmente .NET puede complicar la configuración y aumentar los costes de mantenimiento. Dos tiempos de ejecución (Java + .NET) para gestionar en pipelines CI/CD.

  4. Comunicación entre procesos: La API REST o la comunicación por socket añaden latencia. Cada conversión de PDF requiere un viaje de ida y vuelta HTTP al servidor.

  5. Gestión de licencias independiente: Licencia vinculada a la instancia del servidor, no a la aplicación. Licencia por servidor vinculada a una instancia de servicio Java.

  6. Aislamiento de recursos: gestión separada de memoria de proceso y CPU. Servidor adicional para supervisar, escalar y mantener.

Comparación entre PDFreactore IronPDF

Característica/AspectoPDFreactorIronPDF
Librería .NET nativaNo (basado en Java)
RuntimeJava (servidor externo).NET nativo (en proceso)
ArquitecturaServicio API RESTBiblioteca NuGet
DespliegueJava + configuración del servidorPaquete NuGet único
DependenciasJRE + cliente HTTPAutocontenido
LatenciaRed de ida y vueltaLlamadas directas a métodos
Capacidad multiplataformaSí (depende de Java)Sí (incluido Chromium)
Soporte CSSCompatibilidad avanzada con CSS3, CSS Paged MediaCompatibilidad completa con HTML5/CSS3
Complejidad de ImplementaciónMás complejo debido a JavaSencillo, se integra directamente con .NET
Funciones de manipulación de PDFBásico (sólo generación)Extensa, incluyendo fusión, división, edición y anotación

A diferencia de PDFreactor,IronPDFse presenta como una biblioteca .NET nativa, diseñada específicamente para integrarse a la perfección en proyectos .NET sin dependencias externas como Java.IronPDFutiliza un motor de renderizado Chromium integrado, lo que le permite convertir HTML a PDF con sólo unas pocas líneas de código.

Para los equipos que planifican la adopción de .NET 10 y C# 14 hasta 2025 y 2026,IronPDFproporciona una solución nativa .NET que elimina la complejidad del servidor Java a la vez que ofrece una gestión integral del ciclo de vida del PDF.


Antes de empezar

Prerrequisitos

  1. <Entorno .NET: .NET Framework 4.6.2+ o .NET Core 3.1+ / .NET 5/6/7/8/9+
  2. Acceso a NuGet: Capacidad para instalar paquetes NuGet
  3. Licencia IronPDF: Obtenga su clave de licencia en ironpdf.com

Cambios en el paquete NuGet

# Remove PDFreactorNuGet packages
dotnet remove package PDFreactor.NET
dotnet remove package PDFreactor.Native.Windows.x64

# Stop PDFreactorserver service (if running locally)
# Windows: net stop PDFreactor
# Linux: sudo systemctl stop pdfreactor

# Install IronPDF
dotnet add package IronPdf
# Remove PDFreactorNuGet packages
dotnet remove package PDFreactor.NET
dotnet remove package PDFreactor.Native.Windows.x64

# Stop PDFreactorserver service (if running locally)
# Windows: net stop PDFreactor
# Linux: sudo systemctl stop pdfreactor

# Install IronPDF
dotnet add package IronPdf
SHELL

Configuración de licencias

PDFreactor (basado en servidor):

// License configured on server via config file or command line
// Client connects to licensed server
var pdfReactor = new PDFreactor("http://pdfreactor-server:9423");
// License configured on server via config file or command line
// Client connects to licensed server
var pdfReactor = new PDFreactor("http://pdfreactor-server:9423");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

IronPDF (nivel de aplicación):

// One-time setup at application startup
IronPdf.License.LicenseKey = "YOUR-IRONPDF-LICENSE-KEY";
// One-time setup at application startup
IronPdf.License.LicenseKey = "YOUR-IRONPDF-LICENSE-KEY";
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Identificar el uso de PDFreactor

# Find PDFreactorusage
grep -r "PDFreactor\|RealObjects\|Configuration.*Document" --include="*.cs" .

# Find CSS Paged Mediarules to convert
grep -r "@page\|counter(page)\|counter(pages)" --include="*.cs" --include="*.css" .
# Find PDFreactorusage
grep -r "PDFreactor\|RealObjects\|Configuration.*Document" --include="*.cs" .

# Find CSS Paged Mediarules to convert
grep -r "@page\|counter(page)\|counter(pages)" --include="*.cs" --include="*.css" .
SHELL

Referencia completa de la API

Cambios en el espacio de nombres

// Before: PDFreactor
using RealObjects.PDFreactor;
using System.IO;

// After: IronPDF
using IronPdf;
using IronPdf.Rendering;
// Before: PDFreactor
using RealObjects.PDFreactor;
using System.IO;

// After: IronPDF
using IronPdf;
using IronPdf.Rendering;
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Core Class Mappings

PDFreactorIronPDFNotas
PDFreactor<código>ChromePdfRenderer</códigoClase principal de conversión
Configuración<código>ChromePdfRenderOptions</códigoAjustes PDF
ResultadoDocumento PDFDocumento de salida
config.Document = htmlrenderer.RenderHtmlAsPdf(html)Entrada HTML
resultado.Document (byte[])<código>pdf.BinaryData</códigoBytes en bruto

Mapeo de propiedades de configuración

Configuración de PDFreactorOpciones de renderizado de IronPDFNotas
config.Document = htmlrenderer.RenderHtmlAsPdf(html)Contenido HTML
config.Document = url<código>renderer.RenderUrlAsPdf(url)</códigoConversión de URL
config.PageFormat = PageFormat.A4<código>RenderingOptions.PaperSize = PdfPaperSize.A4</códigoTamaño del papel
<código>config.PageOrientation</código<código>RenderingOptions.PaperOrientation</códigoOrientación
<código>config.PageMargins</código<código>RenderingOptions.MarginTop/Bottom/Left/Right</códigoMárgenes (mm)
config.EnableJavaScript = true<código>RenderingOptions.EnableJavaScript = true</códigoEjecución JS
<código>config.AddUserStyleSheet(css)</códigoInsertar CSS en HTMLInyección de CSS
<código>config.Title</código<código>pdf.MetaData.Title</códigoMetadatos
<código>config.Encryption</código<código>pdf.SecuritySettings</códigoSeguridad

Nuevas funciones no disponibles en PDFreactor

Características de IronPDFDescripción
PdfDocument.Merge()Combinar varios PDF
<código>pdf.ApplyWatermark()</códigoAñadir marcas de agua
<código>pdf.ExtractAllText()</códigoExtracción de texto
<código>pdf.Form</códigoRelleno de formularios
<código>pdf.Sign()</códigoFirmas digitales

Ejemplos de migración de código

Ejemplo 1: Conversión de cadenas HTML a PDF

Antes (PDFreactor):

// NuGet: Install-Package PDFreactor.Native.Windows.x64
using RealObjects.PDFreactor;
using System.IO;

class Program
{
    static void Main()
    {
        PDFreactorpdfReactor = new PDFreactor();

        string html = "<html><body><h1>Hello World</h1></body></html>";

        Configuration config = new Configuration();
        config.Document = html;

        Result result = pdfReactor.Convert(config);

        File.WriteAllBytes("output.pdf", result.Document);
    }
}
// NuGet: Install-Package PDFreactor.Native.Windows.x64
using RealObjects.PDFreactor;
using System.IO;

class Program
{
    static void Main()
    {
        PDFreactorpdfReactor = new PDFreactor();

        string html = "<html><body><h1>Hello World</h1></body></html>";

        Configuration config = new Configuration();
        config.Document = html;

        Result result = pdfReactor.Convert(config);

        File.WriteAllBytes("output.pdf", result.Document);
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Después (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");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

La diferencia fundamental es el patrón arquitectónico. PDFreactorrequiere la creación de una instancia de PDFreactor(que se conecta al servidor Java), un objeto Configuraciónseparado para mantener la configuración y el contenido HTML, llamar a Convert() que devuelve un objeto Resultadoy, finalmente, escribir los bytes de result.Document en un archivo utilizando File.WriteAllBytes().

IronPDF simplifica esta tarea creando un ChromePdfRenderer, llamando a RenderHtmlAsPdf() directamente con la cadena HTML y utilizando el método incorporado SaveAs() en el Documento PDFdevuelto. Sin conexión al servidor, sin objeto de configuración, sin manejo manual de bytes. Consulte la documentación HTML a PDF para ver ejemplos completos.

Ejemplo 2: Conversión de URL a PDF

Antes (PDFreactor):

// NuGet: Install-Package PDFreactor.Native.Windows.x64
using RealObjects.PDFreactor;
using System.IO;

class Program
{
    static void Main()
    {
        PDFreactorpdfReactor = new PDFreactor();

        Configuration config = new Configuration();
        config.Document = "https://www.example.com";

        Result result = pdfReactor.Convert(config);

        File.WriteAllBytes("webpage.pdf", result.Document);
    }
}
// NuGet: Install-Package PDFreactor.Native.Windows.x64
using RealObjects.PDFreactor;
using System.IO;

class Program
{
    static void Main()
    {
        PDFreactorpdfReactor = new PDFreactor();

        Configuration config = new Configuration();
        config.Document = "https://www.example.com";

        Result result = pdfReactor.Convert(config);

        File.WriteAllBytes("webpage.pdf", result.Document);
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

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");
    }
}
// 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");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

PDFreactor utiliza la misma propiedad config.Document tanto para cadenas HTML como para URLs, determinando el tipo automáticamente.IronPDFproporciona métodos explícitos: RenderHtmlAsPdf() para cadenas HTML y RenderUrlAsPdf() para URLs. Este enfoque explícito mejora la claridad del código y la compatibilidad con IntelliSense. Más información en nuestros tutoriales.

Ejemplo 3: Encabezados y pies de página con números de página

Antes (PDFreactor):

// NuGet: Install-Package PDFreactor.Native.Windows.x64
using RealObjects.PDFreactor;
using System.IO;

class Program
{
    static void Main()
    {
        PDFreactorpdfReactor = new PDFreactor();

        string html = "<html><body><h1>Document with Headers</h1><p>Content here</p></body></html>";

        Configuration config = new Configuration();
        config.Document = html;
        config.AddUserStyleSheet("@page { @top-center { content: 'Header Text'; } @bottom-center { content: 'Page ' counter(page); } }");

        Result result = pdfReactor.Convert(config);

        File.WriteAllBytes("document.pdf", result.Document);
    }
}
// NuGet: Install-Package PDFreactor.Native.Windows.x64
using RealObjects.PDFreactor;
using System.IO;

class Program
{
    static void Main()
    {
        PDFreactorpdfReactor = new PDFreactor();

        string html = "<html><body><h1>Document with Headers</h1><p>Content here</p></body></html>";

        Configuration config = new Configuration();
        config.Document = html;
        config.AddUserStyleSheet("@page { @top-center { content: 'Header Text'; } @bottom-center { content: 'Page ' counter(page); } }");

        Result result = pdfReactor.Convert(config);

        File.WriteAllBytes("document.pdf", result.Document);
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Después (IronPDF):

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

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

        renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
        {
            CenterText = "Header Text"
        };

        renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
        {
            CenterText = "Page {page}"
        };

        string html = "<html><body><h1>Document with Headers</h1><p>Content here</p></body></html>";

        var pdf = renderer.RenderHtmlAsPdf(html);

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

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

        renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
        {
            CenterText = "Header Text"
        };

        renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
        {
            CenterText = "Page {page}"
        };

        string html = "<html><body><h1>Document with Headers</h1><p>Content here</p></body></html>";

        var pdf = renderer.RenderHtmlAsPdf(html);

        pdf.SaveAs("document.pdf");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Este ejemplo muestra la diferencia sintáctica más significativa. PDFreactorutiliza la sintaxis CSS Paged Mediacon reglas @page, regiones @top-center/@bottom-center y counter(page) para los números de página inyectados mediante AddUserStyleSheet().

IronPDF utiliza una API .NET nativa con objetos TextHeaderFooter asignados a RenderingOptions.TextHeader y RenderingOptions.TextFooter. Los números de página utilizan el marcador de posición {page} en lugar de CSS counter(page). Tenga en cuenta queIronPDFtambién requiere la importación del espacio de nombres IronPdf.Rendering para las clases de encabezado/pie de página.


Notas de migración críticas

No requiere servidor

IronPDF se ejecuta en proceso, sin necesidad de configurar un servidor Java:

// PDFreactor: Requires server connection
var pdfReactor = new PDFreactor("http://localhost:9423");

// IronPDF: No server URL needed
var renderer = new ChromePdfRenderer();
// PDFreactor: Requires server connection
var pdfReactor = new PDFreactor("http://localhost:9423");

// IronPDF: No server URL needed
var renderer = new ChromePdfRenderer();
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

CSS Paged MediaaIronPDFAPI

Sustituir las reglas CSS @page por RenderingOptions:

// PDFreactorCSS: @page { @bottom-center { content: 'Page ' counter(page); } }
//IronPDFequivalent:
renderer.RenderingOptions.TextFooter = new TextHeaderFooter 
{ 
    CenterText = "Page {page}" 
};
// PDFreactorCSS: @page { @bottom-center { content: 'Page ' counter(page); } }
//IronPDFequivalent:
renderer.RenderingOptions.TextFooter = new TextHeaderFooter 
{ 
    CenterText = "Page {page}" 
};
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Sintaxis del marcador de posición del número de página

// PDFreactorCSS: counter(page)
// IronPDF: {page}

// PDFreactorCSS: counter(pages)  
// IronPDF: {total-pages}
// PDFreactorCSS: counter(page)
// IronPDF: {page}

// PDFreactorCSS: counter(pages)  
// IronPDF: {total-pages}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Cambio en la gestión de resultados

El patrón Configuración + Resultado se convierte directamente en PdfDocument:

// PDFreactor: Configuration → Convert → Result → bytes
Result result = pdfReactor.Convert(config);
byte[] bytes = result.Document;
File.WriteAllBytes("output.pdf", bytes);

// IronPDF: Direct PdfDocument with built-in methods
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
// Or: byte[] bytes = pdf.BinaryData;
// PDFreactor: Configuration → Convert → Result → bytes
Result result = pdfReactor.Convert(config);
byte[] bytes = result.Document;
File.WriteAllBytes("output.pdf", bytes);

// IronPDF: Direct PdfDocument with built-in methods
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
// Or: byte[] bytes = pdf.BinaryData;
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Cambio de unidades de margen

PDFreactor utiliza cadenas;IronPDFutiliza milímetros:

// PDFreactor: config.PageMargins.Top = "1in"
// IronPDF: renderer.RenderingOptions.MarginTop = 25.4  // 1 inch in mm
// PDFreactor: config.PageMargins.Top = "1in"
// IronPDF: renderer.RenderingOptions.MarginTop = 25.4  // 1 inch in mm
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Nuevas capacidades tras la migración

Después de migrar a IronPDF, obtendrá capacidades que PDFreactorno puede proporcionar:

Fusión de PDF

var pdf1 = PdfDocument.FromFile("document1.pdf");
var pdf2 = PdfDocument.FromFile("document2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
var pdf1 = PdfDocument.FromFile("document1.pdf");
var pdf2 = PdfDocument.FromFile("document2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Marcas de agua

pdf.ApplyWatermark("<h2 style='color:red;'>CONFIDENTIAL</h2>");
pdf.ApplyWatermark("<h2 style='color:red;'>CONFIDENTIAL</h2>");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Extracción de texto

string text = pdf.ExtractAllText();
string text = pdf.ExtractAllText();
Dim text As String = pdf.ExtractAllText()
$vbLabelText   $csharpLabel

Protección con contraseña

pdf.SecuritySettings.UserPassword = "userpassword";
pdf.SecuritySettings.OwnerPassword = "ownerpassword";
pdf.SecuritySettings.UserPassword = "userpassword";
pdf.SecuritySettings.OwnerPassword = "ownerpassword";
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Resumen comparativo de características

CaracterísticaPDFreactorIronPDF
HTML a PDF
URL a PDF
Encabezados/pies de páginaCSS Paged MediaAPI nativa
Configuración de la página
Soporte de JavaScript
.NET nativo
En proceso
Fusionar PDF
Dividir PDF
Marcas de agua
Extracción de Texto
Relleno de formularios
Firmas digitales

Lista de comprobación de la migración

Pre-Migración

  • [ ] Inventario del uso de PDFreactoren el código base
  • [ ] Documentar todas las reglas CSS Paged Mediautilizadas
  • [ ] Tenga en cuenta todos los ajustes de configuración (márgenes, tamaño de página, JavaScript)
  • [ ] Planificar el almacenamiento de la clave de licencia deIronPDF(se recomiendan variables de entorno)
  • [ ] Pruebe primero con la licencia de prueba de IronPDF

Cambios en el paquete

  • [ ] Eliminar el paquete NuGet PDFreactor.NET
  • [ ] Eliminar el paquete NuGet PDFreactor.Native.Windows.x64
  • [Instale el paquete NuGet IronPdf: dotnet add package IronPdf

Cambios de código

  • [ ] Actualizar las importaciones de espacios de nombres (using RealObjects.PDFreactor;using IronPDF;)
  • [ ] Añadir usando IronPDF.Rendering; para las clases header/footer
  • [ ] Sustituir la clase PDFreactorpor ChromePdfRenderer
  • [Convertir objetos Configuraciónen propiedades RenderingOptions
  • [ ] Sustituya config.Document = htmlpor renderer.RenderHtmlAsPdf(html)
  • [Reemplace config.Document = urlpor renderer.RenderUrlAsPdf(url)
  • [Reemplace File.WriteAllBytes(path, result.Document) por pdf.SaveAs(path)
  • [Convertir reglas CSS @page en objetos TextHeader/TextFooter
  • [ ] Actualizar los marcadores de posición de número de página (contador(página){página})
  • [ ] Convertir unidades de margen de cadenas a milímetros

Migración de infraestructuras

  • [ ] Eliminar el requisito de tiempo de ejecución de Java
  • [ ] Dar de baja el servidor PDFreactor
  • [ ] Actualizar configuraciones de Docker/despliegue
  • [ ] Actualización de procesos CI/CD

Posmigración

  • [ ] Comprobación de que la calidad del PDF se ajusta a las expectativas
  • [ ] Verificar el renderizado de encabezado/pie de página
  • [ ] Verificar la ejecución de JavaScript si se utiliza
  • [ ] Añadir nuevas funciones (fusión, marcas de agua, seguridad) según sea necesario

Conclusión

La migración de PDFreactoraIronPDFelimina las dependencias de Java y la infraestructura de servidor, al tiempo que proporciona capacidades equivalentes de HTML a PDF. La selección de la herramienta adecuada entre PDFreactoreIronPDFdepende en gran medida de los requisitos específicos del proyecto y de la infraestructura existente. Si su proyecto requiere un renderizado de alta fidelidad con amplio soporte de CSS y puede manejar dependencias de Java, PDFreactores un buen candidato. Por el contrario, si está desarrollando en un entorno .NET y desea una integración perfecta y amplias funcionalidades de PDF,IronPDFes una opción más adecuada.

Los cambios clave en esta migración son:

  1. Arquitectura: Servicio Java basado en servidor → Biblioteca .NET en proceso
  2. Clase principal: PDFreactorChromePdfRenderer
  3. Configuración: objeto Configuración→ propiedades RenderingOptions
  4. Conversión HTML: config.Document + Convert()RenderHtmlAsPdf()
  5. Conversión de URL: config.Document + Convert()RenderUrlAsPdf()
  6. Salida: resultado.Document + File.WriteAllBytes()pdf.SaveAs()
  7. Cabeceras/Pies de página: Reglas CSS @page → objetos TextHeaderFooter
  8. Números de página: contador(página){página}
  9. Nuevas funciones: Fusión de PDF, marcas de agua, extracción de texto, firmas digitales y mucho más

Entre las principales ventajas se incluyen la arquitectura simplificada sin necesidad de un proceso de servidor independiente, la integración nativa de .NET con llamadas directas a la API en lugar de REST/IPC, la complejidad reducida con un único paquete NuGet frente al tiempo de ejecución de Java más el servidor, y la compatibilidad completa con el ciclo de vida de PDF más allá de la conversión, incluidas la fusión, la división, la edición y la firma.

Explore la documentación completa de IronPDF, tutoriales, y API reference para acelerar su migración a PDFreactor.

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