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

Cómo migrar de PDFmyURL a IronPDF en C#

Migración de PDFmyURLa IronPDF: Una guía completa para desarrolladores de C

PDFmyURL es un servicio API basado en la nube diseñado para convertir URL y contenido HTML en documentos PDF. El servicio procesa todas las conversiones en servidores externos, proporcionando una ruta de integración directa que requiere una infraestructura local mínima. Sin embargo, esta arquitectura dependiente de la nube crea problemas importantes para las aplicaciones de producción que manejan datos confidenciales, requieren capacidad offline o necesitan evitar costes de suscripción continuos.

Esta guía proporciona una ruta de migración completa de PDFmyURLa 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 PDFmyURL

El modelo de procesamiento en la nube de PDFmyURLpresenta varios retos que los equipos de desarrollo deben tener en cuenta:

Privacidad y seguridad de los datos: Todos los documentos que conviertes viajan hacia y a través de los servidores de PDFmyURL; los contratos confidenciales, los informes financieros y los datos personales se procesan externamente.

Costes de suscripción continuos: a partir de 39 $/mes, los costes anuales superan los 468 $/año sin propiedad. Este modelo de suscripción supone un gasto continuo independientemente de los patrones de uso.

Dependencia de Internet: Toda conversión requiere conectividad a la red. Las aplicaciones no pueden procesar archivos PDF fuera de línea o durante interrupciones de la red.

Límites de tarifa y estrangulamiento: Las llamadas a la API se pueden estrangular durante los picos de uso, lo que puede afectar al rendimiento de la aplicación.

Disponibilidad del servicio: Su aplicación depende de que un servicio de terceros esté en línea y funcione.

Vendor Lock-in: Los cambios en la API pueden romper su integración sin previo aviso, lo que requiere actualizaciones reactivas del código.

IronPDFfrente a PDFmyURL: Comparación de características

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

AspectoPDFmyURLIronPDF
Lugar de procesamientoServidores externosLocal (su servidor)
TipoEnvoltorio de APIbiblioteca .NET
AutenticaciónClave API por solicitudClave de licencia única
Red RequeridaCada conversiónSólo configuración inicial
Modelo de preciosSuscripción mensual ($39+)Licencia perpetua disponible
Límites de tarifaSí (depende del plan)Ninguno
Privacidad de datosDatos enviados externamenteLos datos permanecen locales
Soporte HTML/CSS/JSConformidad con W3CMotor Chromium completo
Patrón AsyncRequerido (sólo async)Opciones de sincronización y asincronización
Manipulación de PDFLimitadoSuite completa (combinar, dividir, editar)
Caso prácticoAplicaciones de bajo volumenGrandes volúmenes y empresas

Inicio rápido: Migración de PDFmyURLa IronPDF

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

Paso 1: Sustituir paquetes NuGet

Eliminar paquetes PDFmyURL:

# Remove PDFmyURLpackages
dotnet remove package PdfMyUrl
dotnet remove package Pdfcrowd
# Remove PDFmyURLpackages
dotnet remove package PdfMyUrl
dotnet remove package Pdfcrowd
SHELL

Instalar IronPDF:

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

Paso 2: Actualizar los espacios de nombres

Sustituya los espacios de nombres PDFmyURLpor IronPdf:

// Before: PDFmyURL
using PdfMyUrl;
using Pdfcrowd;

// After: IronPDF
using IronPdf;
using IronPdf.Rendering;
// Before: PDFmyURL
using PdfMyUrl;
using Pdfcrowd;

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

Paso 3: 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

Convertir URL en PDF

La operación de URL a PDF demuestra las diferencias fundamentales de la API entre PDFmyURLe IronPDF.

Enfoque PDFmyURL:

// Install PDFmyURLSDK
using System;
using Pdfcrowd;

class Example
{
    static void Main()
    {
        try
        {
            var client = new HtmlToPdfClient("username", "apikey");
            client.convertUrlToFile("https://example.com", "output.pdf");
        }
        catch(Error why)
        {
            Console.WriteLine("Error: " + why);
        }
    }
}
// Install PDFmyURLSDK
using System;
using Pdfcrowd;

class Example
{
    static void Main()
    {
        try
        {
            var client = new HtmlToPdfClient("username", "apikey");
            client.convertUrlToFile("https://example.com", "output.pdf");
        }
        catch(Error why)
        {
            Console.WriteLine("Error: " + why);
        }
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Enfoque IronPDF:

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

class Example
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf("https://example.com");
        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Example
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf("https://example.com");
        pdf.SaveAs("output.pdf");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

PDFmyURL requiere la creación de un <código>HtmlToPdfClient</códigocon nombre de usuario y credenciales de clave API para cada solicitud de conversión, y luego llamar a convertUrlToFile() con la URL y la ruta de salida. Toda la operación debe estar envuelta en try-catch para el tipo personalizado Error de PDFmyURL.

IronPDF simplifica esto a tres líneas: crear un ChromePdfRenderer, llamar a RenderUrlAsPdf(), y utilizar el método incorporado SaveAs(). No se necesitan credenciales por solicitud: la licencia se establece una vez al iniciar la aplicación.

Para escenarios avanzados de URL a PDF, consulte la documentación URL a PDF.

Convertir cadenas HTML a PDF

La conversión de cadenas HTML muestra claramente las diferencias de patrones.

Enfoque PDFmyURL:

// Install PDFmyURLSDK
using System;
using Pdfcrowd;

class Example
{
    static void Main()
    {
        try
        {
            var client = new HtmlToPdfClient("username", "apikey");
            string html = "<html><body><h1>Hello World</h1></body></html>";
            client.convertStringToFile(html, "output.pdf");
        }
        catch(Error why)
        {
            Console.WriteLine("Error: " + why);
        }
    }
}
// Install PDFmyURLSDK
using System;
using Pdfcrowd;

class Example
{
    static void Main()
    {
        try
        {
            var client = new HtmlToPdfClient("username", "apikey");
            string html = "<html><body><h1>Hello World</h1></body></html>";
            client.convertStringToFile(html, "output.pdf");
        }
        catch(Error why)
        {
            Console.WriteLine("Error: " + why);
        }
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Enfoque IronPDF:

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

class Example
{
    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 Example
{
    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

PDFmyURL utiliza convertStringToFile() que envía el contenido HTML a servidores externos para su procesamiento. El RenderHtmlAsPdf() deIronPDFprocesa todo localmente utilizando el motor de renderizado Chromium.

Explore la Guía de conversión de HTML a PDF para conocer otras opciones.

Conversión de archivos HTML con ajustes de página

La configuración del tamaño, la orientación y los márgenes del papel requiere enfoques diferentes en cada biblioteca.

Enfoque PDFmyURL:

// Install PDFmyURLSDK
using System;
using Pdfcrowd;

class Example
{
    static void Main()
    {
        try
        {
            var client = new HtmlToPdfClient("username", "apikey");
            client.setPageSize("A4");
            client.setOrientation("landscape");
            client.setMarginTop("10mm");
            client.convertFileToFile("input.html", "output.pdf");
        }
        catch(Error why)
        {
            Console.WriteLine("Error: " + why);
        }
    }
}
// Install PDFmyURLSDK
using System;
using Pdfcrowd;

class Example
{
    static void Main()
    {
        try
        {
            var client = new HtmlToPdfClient("username", "apikey");
            client.setPageSize("A4");
            client.setOrientation("landscape");
            client.setMarginTop("10mm");
            client.convertFileToFile("input.html", "output.pdf");
        }
        catch(Error why)
        {
            Console.WriteLine("Error: " + why);
        }
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Enfoque IronPDF:

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

class Example
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
        renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
        renderer.RenderingOptions.MarginTop = 10;
        var pdf = renderer.RenderHtmlFileAsPdf("input.html");
        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
using System;

class Example
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
        renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
        renderer.RenderingOptions.MarginTop = 10;
        var pdf = renderer.RenderHtmlFileAsPdf("input.html");
        pdf.SaveAs("output.pdf");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

PDFmyURL utiliza métodos setter con parámetros de cadena como <código>setPageSize("A4")</códigoy setMarginTop("10mm").IronPDFproporciona propiedades fuertemente tipadas a través de RenderingOptions con enums como PdfPaperSize.A4 y valores enteros para márgenes en milímetros.

Referencia de la API PDFmyURLa IronPDF

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

Clases básicas

PDFmyURLIronPDFNotas
<código>HtmlToPdfClient</código<código>ChromePdfRenderer</códigoClase principal de conversión
<código>PdfMyUrlClient</código<código>ChromePdfRenderer</códigoClase de cliente alternativo
Objeto de respuesta APIDocumento PDFResultado Objeto PDF

Métodos

PDFmyURLIronPDFNotas
client.convertUrlToFile(url, file)<código>renderer.RenderUrlAsPdf(url).SaveAs(file)</códigoURL a PDF
<código>client.convertStringToFile(html, file)</código<código>renderer.RenderHtmlAsPdf(html).SaveAs(file)</códigoCadena HTML a PDF
client.convertFileToFile(input, output)<código>renderer.RenderHtmlFileAsPdf(input).SaveAs(output)</códigoArchivo a archivo
response.GetBytes()<código>pdf.BinaryData</códigoObtener bytes en bruto
response.GetStream()<código>pdf.Stream</códigoObtener como flujo

Opciones de configuración

PDFmyURL(métodos setXxx)IronPDF(RenderingOptions)Notas
<código>setPageSize("A4")</código.PaperSize = PdfPaperSize.A4Tamaño del papel
<código>setPageSize("Letra")</código.PaperSize = PdfPaperSize.LetterCarta para EE.UU
<código>setOrientation("landscape")</código.PaperOrientation = PdfPaperOrientation.LandscapeOrientación
<código>setOrientation("portrait")</código.PaperOrientation = PdfPaperOrientation.PortraitRetrato
<código>setMarginTop("10mm")</código.MarginTop = 10Margen superior (mm)
<código>setMarginBottom("10mm")</código.MargenInferior = 10Margen inferior (mm)
<código>setMarginLeft("10mm")</código.MargenIzquierdo = 10Margen izquierdo (mm)
<código>setMarginRight("10mm")</código.MarginRight = 10Margen derecho (mm)
<código>setHeaderHtml(html)</código.HtmlHeader = new HtmlHeaderFooter { HtmlFragment = html }Encabezado
setFooterHtml(html).HtmlFooter = new HtmlHeaderFooter { HtmlFragment = html }Pie de página
<código>setJavascriptDelay(500)</código.RenderDelay = 500Tiempo de espera JS (ms)
<código>setDisableJavascript(true)</código.EnableJavaScript = falseDesactivar JS
<código>setUsePrintMedia(true)</código.CssMediaType = PdfCssMediaType.PrintImprimir CSS

Comparación de autenticación

PDFmyURLIronPDF
new HtmlToPdfClient("nombredeusuario", "apikey")<código>IronPdf.License.LicenseKey = "LICENSE-KEY"</código>
Clave API por solicitudUna sola vez al inicio
Requerido para cada convocatoriaFijar una vez globalmente

Problemas comunes de migración y soluciones

Cuestión 1: Clave API frente a clave de licencia

PDFmyURL: Requiere credenciales para cada solicitud de conversión.

Solución: Configure la licencia deIronPDFuna vez al iniciar la aplicación:

// PDFmyURL: API key per request
var client = new HtmlToPdfClient("username", "apikey");

// IronPDF: One-time license at startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Set once, typically in Program.cs or Startup.cs
// PDFmyURL: API key per request
var client = new HtmlToPdfClient("username", "apikey");

// IronPDF: One-time license at startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Set once, typically in Program.cs or Startup.cs
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Tema 2: Sintaxis de marcador de posición en encabezados/pies de página

PDFmyURL: Utiliza marcadores de posición {page_number} y {total_pages}.

Solución: Actualización al formato de marcador de posición de IronPDF:

// PDFmyURL: "Page {page_number} of {total_pages}"
// IronPDF: "Page {page} of {total-pages}"
// PDFmyURL: "Page {page_number} of {total_pages}"
// IronPDF: "Page {page} of {total-pages}"
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Número 3: Patrones asíncronos

PDFmyURL: Requiere patrones async/await.

Solución:IronPDFes síncrono por defecto; envolver para async si es necesario:

// PDFmyURL: Native async
var response = await client.ConvertUrlAsync(url);

// IronPDF: Sync by default, wrap for async
var pdf = await Task.Run(() => renderer.RenderUrlAsPdf(url));
// PDFmyURL: Native async
var response = await client.ConvertUrlAsync(url);

// IronPDF: Sync by default, wrap for async
var pdf = await Task.Run(() => renderer.RenderUrlAsPdf(url));
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Número 4: Tratamiento de errores

PDFmyURL: Utiliza el tipo de excepción personalizado Pdfcrowd.Error.

Solución: Actualizar los bloques de captura para las excepciones de IronPDF:

// PDFmyURL: Pdfcrowd.Error
catch (Pdfcrowd.Error e) { ... }

// IronPDF: Standard exceptions
catch (IronPdf.Exceptions.IronPdfRenderingException e) { ... }
// PDFmyURL: Pdfcrowd.Error
catch (Pdfcrowd.Error e) { ... }

// IronPDF: Standard exceptions
catch (IronPdf.Exceptions.IronPdfRenderingException e) { ... }
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Número 5: Patrón de configuración

PDFmyURL: Utiliza métodos setter con valores de cadena.

Solución: Utilizar propiedades RenderingOptions fuertemente tipadas:

// PDFmyURL: Setter methods
client.setPageSize("A4");
client.setOrientation("landscape");

// IronPDF: Properties with enums
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
// PDFmyURL: Setter methods
client.setPageSize("A4");
client.setOrientation("landscape");

// IronPDF: Properties with enums
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Lista de comprobación para la migración a PDFmyURL

Tareas previas a la migración

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

# Find PDFmyURLusage
grep -r "PdfMyUrl\|Pdfcrowd\|HtmlToPdfClient" --include="*.cs" .

# Find API key references
grep -r "apikey\|api-key\|api_key" --include="*.cs" --include="*.json" --include="*.config" .

# Find placeholder patterns to migrate
grep -r "{page_number}\|{total_pages}" --include="*.cs" .
# Find PDFmyURLusage
grep -r "PdfMyUrl\|Pdfcrowd\|HtmlToPdfClient" --include="*.cs" .

# Find API key references
grep -r "apikey\|api-key\|api_key" --include="*.cs" --include="*.json" --include="*.config" .

# Find placeholder patterns to migrate
grep -r "{page_number}\|{total_pages}" --include="*.cs" .
SHELL

Documentar las opciones de configuración utilizadas actualmente. Planifique el almacenamiento de claves de licencia mediante variables de entorno.

Tareas de actualización de código

  1. Eliminar los paquetes NuGet PDFmyURL/Pdfcrowd
  2. Instalación del paquete IronPdf NuGet
  3. Actualizar todas las importaciones de espacios de nombres
  4. Sustituir la autenticación de la clave API por la clave de licencia de IronPDF
  5. Convertir métodos setter en propiedades RenderingOptions
  6. Actualizar la sintaxis de los marcadores de posición en encabezados/pies de página ({número_de_página}{página}, {total_páginas}{total-páginas})
  7. Actualización del código de gestión de errores para los tipos de excepción de IronPDF
  8. Añadir la inicialización de la licenciaIronPDFal inicio

Pruebas posteriores a la migración

Tras la migración, verifique estos aspectos:

  • Comprobar que la calidad del PDF se ajusta a las expectativas
  • Verificar que los patrones async funcionan correctamente
  • Comparar la fidelidad del renderizado con el resultado anterior
  • Pruebe que todas las variaciones de la plantilla se muestran correctamente
  • Validación de la configuración de página (tamaño, orientación, márgenes)
  • Instalar las dependencias de Linux si se despliega en servidores Linux

Beneficios clave de migrar a IronPDF

El cambio de PDFmyURLaIronPDFofrece varias ventajas fundamentales:

Privacidad total: Los documentos nunca salen de su servidor. Todo el procesamiento se realiza localmente, lo que elimina los problemas de seguridad de los datos sensibles.

Coste único: La opción de licencia perpetua elimina las cuotas de suscripción recurrentes. Se acabaron los pagos mensuales, independientemente del volumen de uso.

Capacidad offline: Funciona sin internet tras la configuración inicial. Los cortes de red no afectan a la generación de PDF.

Sin límites de velocidad: Procese documentos ilimitados sin preocupaciones de estrangulamiento.

Menor latencia: La ausencia de sobrecarga de red se traduce en conversiones más rápidas, especialmente para aplicaciones de gran volumen.

Control total: Usted controla el entorno de procesamiento, no un servicio de terceros.

Motor Chromium moderno: Soporte completo de CSS3 y JavaScript con el mismo motor de renderizado que el navegador Chrome.

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.

Conclusión

PDFmyURL ofrece una solución sencilla basada en la nube para necesidades de generación de PDF de bajo volumen. Sin embargo, el modelo de procesamiento externo crea problemas de privacidad, costes continuos y riesgos de dependencia que muchas aplicaciones de producción no pueden aceptar.

IronPDF proporciona un procesamiento local que mantiene los datos confidenciales en sus servidores, elimina las cuotas de suscripción con licencias perpetuas y ofrece un moderno motor de renderizado basado en Chromium. La migración es sencilla: sustituya los paquetes NuGet, actualice los métodos setter a propiedades de tipado fuerte y ajuste la sintaxis de los marcadores de posición.

Comience su migración hoy mismo con una prueba gratuita de IronPDF y experimente las ventajas del procesamiento local de PDF.

Para una guía de implementación completa, explore la documentación de IronPDF y tutoriales.

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