Saltar al pie de página
COMPARACIONES DE PRODUCTOS

Una Comparación entre CraftMyPDF e IronPDF

PDF, o formato de documento portátil, es un formato de archivo desarrollado por Adobe para facilitar el intercambio de documentos. Garantiza que los documentos se vean igual en cualquier dispositivo, preservando el formato, fuentes e imágenes. Los PDF son seguros, interactivos y compactos, lo que los hace perfectos para compartir al mantener el contenido intacto.

Las bibliotecas PDF de C# son esenciales para los desarrolladores que trabajan con PDF. Estas herramientas ayudan a crear, modificar y extraer contenido de PDFs. Admiten funciones como el manejo de formularios, firmas digitales y funcionan en diferentes plataformas, mejorando la eficiencia del procesamiento de PDF. Con las bibliotecas PDF de C#, los desarrolladores pueden agregar funcionalidad PDF a sus aplicaciones, lo que facilita la creación, edición y gestión de documentos PDF de manera programática.

In this article, we will compare two different approaches to working with PDFs: the IronPDF C# library and the Craftmypdf API. Veremos sus características y funcionalidades, proporcionaremos ejemplos de código y discutiremos sus licencias.

1. Solución Base API CraftMyPDF

Una Comparación entre CraftMyPDF & IronPDF: Figura 1 - Página de inicio de la Solución Base API CraftMyPDF

CraftMyPDF es una API versátil diseñada para crear documentos PDF. Ofrece un editor web de arrastrar y soltar, que permite diseñar plantillas PDF directamente en el navegador. Esta función es particularmente útil para crear PDFs con precisión de píxeles a partir de plantillas reutilizables y datos JSON. El editor incluye un rico conjunto de componentes de diseño, que admite expresiones potentes, formato avanzado y vinculación de datos, convirtiéndolo en una herramienta robusta para diversas necesidades de generación de PDF.

1.1 Características Clave de CraftMyPDF

  1. Editor de arrastrar y soltar: El editor intuitivo de CraftMyPDF simplifica la creación de plantillas PDF. Puede diseñar plantillas sin conocimientos de codificación, haciéndolo accesible a usuarios de todos los niveles de habilidad. Este editor le permite agregar varios elementos como texto, imágenes y formas, y personalizar su diseño y apariencia.

  2. Reusabilidad de Plantillas: La plataforma admite plantillas reutilizables, lo cual puede ahorrar mucho tiempo. Una vez diseñada una plantilla, se puede utilizar repetidamente con diferentes conjuntos de datos, siendo ideal para la generación de documentos como facturas, informes y certificados. Puede editarlo utilizando el editor de plantillas PDF.

  3. Integración de Datos JSON: CraftMyPDF permite la integración continua con datos JSON. Esto significa que puede introducir datos dinámicos en sus plantillas para generar documentos PDF personalizados. Esta función es particularmente útil para aplicaciones que necesitan producir documentos con contenido variable, como facturas personalizadas o informes detallados.

  4. Formato avanzado y expresiones: La API admite opciones de formato avanzado y expresiones, lo que le permite crear documentos complejos. Puede dar formato a fechas, números y monedas según sus especificaciones y usar expresiones para generar contenido dinámicamente basado en sus datos.

  5. Integraciones de API: CraftMyPDF se puede integrar con varias plataformas utilizando su API REST. Apoya la integración con plataformas sin código como Zapier y Make.com, así como aplicaciones personalizadas. Esta flexibilidad permite a los desarrolladores incorporar capacidades de generación de PDF en sus flujos de trabajo y automatizar procesos de creación de documentos.

  6. Componentes Rellenables: La plataforma también admite componentes PDF rellenables como campos de texto, casillas de verificación y menús desplegables. Esta función es esencial para crear formularios interactivos que los usuarios pueden completar electrónicamente.

  7. Seguridad y Cumplimiento: CraftMyPDF asegura el acceso seguro a los PDFs generados y admite puntos finales regionales de API, cumpliendo con regulaciones de protección de datos como la GDPR. Este enfoque en la seguridad lo convierte en una opción confiable para manejar documentos sensibles.

2. Introducción a IronPDF

Biblioteca PDF IronPDF para desarrolladores .NET es una robusta y versátil biblioteca PDF diseñada para desarrolladores .NET, proporcionando extensas capacidades para generar, editar y gestionar documentos PDF. Escrito en C#, IronPDF simplifica el proceso de trabajar con PDFs permitiendo a los desarrolladores generar documentos PDF con precisión de píxeles a partir de HTML, CSS, JavaScript y formatos de imagen. Su integración con .NET lo convierte en una herramienta poderosa para cualquier aplicación que requiera funcionalidad PDF, desde generación simple de archivos hasta manipulación compleja de documentos.

2.1 Características Clave de IronPDF

  1. Conversión de HTML a PDF: IronPDF se destaca en convertir HTML, CSS y JavaScript directamente en documentos PDF. Esto incluye soporte para HTML5 y CSS3, asegurando que su contenido web se vea como se espera en los PDFs generados. El proceso de conversión mantiene una precisión de píxeles, lo que lo hace ideal para aplicaciones de web a impresión.

  2. URL a PDF: Puede generar PDFs desde cualquier URL, lo cual permite que las páginas web se guarden como archivos PDF fácilmente. Esta característica es útil para archivar contenido web o generar informes a partir de datos en línea.

  3. Imagen a PDF: IronPDF admite la conversión de varios formatos de imagen, incluidos JPG, PNG, GIF, BMP y SVG, en documentos PDF. Esta característica es útil para crear álbumes de fotos, galerías de imágenes o integrar contenido visual en sus PDFs.

  4. Relleno de Formularios y Extracción de Datos: La biblioteca permite tanto crear como rellenar formularios PDF programáticamente. Además, puede extraer datos de formularios existentes, permitiendo un procesamiento de datos fluido y la integración con otros sistemas.

  5. Firmas Digitales y Seguridad: IronPDF proporciona robustas características de seguridad, incluyendo la capacidad de agregar firmas digitales, establecer contraseñas y definir permisos de usuario. Esto asegura que sus documentos PDF sean seguros y cumplan con los estándares de la industria.

  6. Edición de PDF: Puede editar documentos PDF existentes agregando, copiando o eliminando páginas. Importar archivos PDF existentes. IronPDF también permite la fusión y división de PDFs, convirtiéndolo en una herramienta completa para la gestión de documentos.

  7. Anotaciones y Archivos Adjuntos: IronPDF admite agregar anotaciones como notas adhesivas e incrustar archivos adjuntos dentro de documentos PDF. Esta función es útil para revisiones colaborativas de documentos y para agregar información adicional.

  8. Encabezados, Pies de Página y Marcas de Agua: La biblioteca permite agregar encabezados, pies de página y marcas de agua personalizadas a sus documentos PDF. Estos elementos se pueden generar a partir de HTML, proporcionando flexibilidad en el diseño y gestión de contenido.

  9. Compatibilidad Multiplataforma: IronPDF funciona sin problemas en varias plataformas, incluidas Windows, macOS, Linux, Docker, Azure y AWS. Soporta .NET Core, .NET Standard, y .NET Framework, asegurando una amplia compatibilidad y facilidad de implementación en entornos diversos.

  10. Optimización de Rendimiento: Con soporte completo para multihilos y asíncrono, IronPDF optimiza el rendimiento para el procesamiento por lotes y tareas de generación de PDF de gran volumen. Esto asegura un uso eficiente de los recursos y un procesamiento de documentos más rápido.

  11. Documentación y Soporte Integral: IronPDF cuenta con documentación extensa, tutoriales y ejemplos, lo que facilita a los desarrolladores comenzar. La biblioteca también ofrece soporte técnico 24/5, ayudando a los usuarios a resolver problemas de manera rápida.

  12. Sin Dependencias Externas: IronPDF opera como un único DLL sin requerir software adicional ni instalaciones. Esto simplifica la implementación y reduce los posibles conflictos con otros componentes de software.

IronPDF está diseñado para mejorar la productividad y agilizar la gestión de PDF dentro de aplicaciones .NET. Su rico conjunto de funciones, combinado con la facilidad de uso y soporte integral, lo convierte en una herramienta invaluable para los desarrolladores.

3. Crear una Aplicación C# en Visual Studio

Crear una aplicación de consola C# en Visual Studio involucra varios pasos. A continuación, se muestra una guía detallada para ayudarle a configurar y comenzar su proyecto.

3.1. Abrir Visual Studio

Primero, asegúrese de que Visual Studio esté instalado en su computadora. Abra Visual Studio buscándolo en el menú de inicio o haciendo clic en su icono de escritorio.

3.2. Crear un Nuevo Proyecto

Una vez que Visual Studio esté abierto, siga estos pasos para crear un nuevo proyecto:

  1. Haga clic en "Crear un nuevo proyecto" en la página de inicio.

  2. En la ventana "Crear un nuevo proyecto", se mostrará una lista de plantillas de proyectos. Use la barra de búsqueda para encontrar "Aplicación de Consola" o seleccione de la lista de plantillas.

3.3. Elegir la Plantilla del Proyecto

De los resultados de búsqueda o lista, seleccione "Aplicación de Consola (.NET Core)" o "Aplicación de Consola (.NET Framework)", según su preferencia o los requisitos de su proyecto.

3.4. Configurar su Proyecto

Después de seleccionar la plantilla de aplicación de consola, será necesario configurar su nuevo proyecto:

  1. Nombre del Proyecto: Ingrese un nombre para su proyecto. Este será el nombre de la carpeta donde se guardarán los archivos de su proyecto.

  2. Ubicación: Elija la carpeta donde desea guardar su proyecto.

  3. Nombre de la Solución: Esto tipicamente es igual al nombre de su proyecto, pero puede cambiarlo si planea tener varios proyectos en una sola solución.

  4. Haga clic en "Crear" para continuar.

4. Instalar IronPDF

Para comenzar con IronPDF, tiene tres métodos principales de instalación: utilizando el Administrador de Paquetes NuGet, la Consola del Administrador de Paquetes NuGet y descargando desde el sitio web de NuGet.

4.1 Administrador de Paquetes NuGet

Primero, hablemos sobre el Administrador de Paquetes NuGet. Si está utilizando Visual Studio, este método es simple y fácil de usar. Abra su proyecto y haga clic derecho en el nodo "Referencias" o "Dependencias" en el Explorador de Soluciones. Seleccione "Administrar Paquetes NuGet" desde el menú contextual.

En el Administrador de Paquetes NuGet, asegúrese de que la pestaña "Examinar" esté seleccionada, luego escriba "IronPDF" en el cuadro de búsqueda. Una vez que localice el paquete IronPDF, haga clic en "Instalar." Esta acción añadirá la biblioteca IronPDF a su proyecto y lo configurará para su uso.

Una Comparación entre CraftMyPDF & IronPDF: Figura 2 - Buscar IronPDF a través del Administrador de Paquetes NuGet

4.2 Consola del Administrador de Paquetes NuGet

A continuación, la Consola del Administrador de Paquetes NuGet ofrece otra forma conveniente de instalar IronPDF. Para acceder a esto, vaya al menú "Herramientas" en Visual Studio, elija "Administrador de Paquetes NuGet," y luego seleccione "Consola del Administrador de Paquetes." Escriba el siguiente comando en la ventana de la consola:

Install-Package IronPdf

y pulse Enter. Este comando descargará e instalará el paquete IronPDF directamente en su proyecto. Este método es eficiente para aquellos que prefieren trabajar con herramientas de línea de comandos dentro del entorno de Visual Studio.

4.3 Sitio Web de NuGet

Por último, puede descargar el paquete IronPDF directamente desde el sitio web de NuGet. Este método es particularmente útil si necesita gestionar manualmente versiones del paquete o si está trabajando en un entorno donde la gestión directa de paquetes está restringida. Vaya al sitio web de NuGet y busque "IronPDF." Descargue el archivo de paquete (generalmente un archivo .nupkg).

Una vez descargado, abra su proyecto en Visual Studio, haga clic derecho en "Referencias" o "Dependencias," y seleccione "Administrar Paquetes NuGet." Haga clic en el icono de "Configuración," luego elija "Agregar" para especificar la ruta a su paquete descargado. Después de añadir la fuente del paquete, regrese a la pestaña "Examinar," seleccione su nueva fuente e instale IronPDF desde allí.

5. Usando CraftMyPDF

Para usar CraftMyPDF en su programa de C#, primero necesita crear una cuenta, seleccionar el plan gratuito para la API y luego integrarlo en su aplicación. Así es como puede comenzar:

5.1. Crear una Cuenta y Seleccionar el Plan Gratuito

  1. Registrarse: Visite el sitio web CraftMyPDF y regístrese para una cuenta gratuita. Ingrese la información requerida para crear su cuenta.

  2. Seleccionar Plan Gratuito: Una vez creada su cuenta, navegue a la sección de precios y seleccione el plan gratuito. Este plan típicamente le permite usar la API con características y cuotas limitadas, haciéndolo ideal para propósitos de desarrollo y prueba.

Una Comparación entre CraftMyPDF & IronPDF: Figura 3 - Página de cuenta CraftMyPDF

  1. Obtener Clave API: Después de seleccionar el plan, vaya al tablero de su cuenta. Aquí encontrará su clave API. Esta clave es necesaria para autenticar sus solicitudes API.

5.2 Instalar Bibliotecas Requeridas

Asegúrese de tener el espacio de nombres System.Net.Http, RestSharpt, y Newtonsoft JSON disponible, ya que es esencial para realizar solicitudes HTTP a la API CraftMyPDF.

using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using RestSharp;
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using RestSharp;
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Después de eso, realizaremos una llamada a la API CraftMyPDF.

var client = new RestClient("https://api.craftmypdf.com/v1/create");
var request = new RestRequest(Method.Post);
string apiKey = "API Key"; // Replace with your actual API key
string templateId = "Template ID"; // Replace with your actual template ID
request.AddHeader("X-API-KEY", apiKey);
request.AddHeader("Content-Type", "application/json");
var client = new RestClient("https://api.craftmypdf.com/v1/create");
var request = new RestRequest(Method.Post);
string apiKey = "API Key"; // Replace with your actual API key
string templateId = "Template ID"; // Replace with your actual template ID
request.AddHeader("X-API-KEY", apiKey);
request.AddHeader("Content-Type", "application/json");
Dim client = New RestClient("https://api.craftmypdf.com/v1/create")
Dim request = New RestRequest(Method.Post)
Dim apiKey As String = "API Key" ' Replace with your actual API key
Dim templateId As String = "Template ID" ' Replace with your actual template ID
request.AddHeader("X-API-KEY", apiKey)
request.AddHeader("Content-Type", "application/json")
$vbLabelText   $csharpLabel

6. Creación de PDF

Crear PDFs programáticamente le permite automatizar la generación de documentos como informes, facturas y certificados. IronPDF ofrece varios métodos para crear PDFs en C#, incluyendo la conversión de cadenas HTML, URLs y archivos HTML en documentos PDF. Discutiremos los métodos en más detalle más adelante en las secciones.

6.1 Creación de PDFs con IronPDF

6.1.1 HTML a PDF

Convertir HTML a PDF es uno de los casos de uso más comunes. Le permite diseñar su documento usando HTML y CSS y luego convertirlo en un PDF. Este método es altamente flexible, ya que admite estándares web modernos y asegura que el PDF resultante se vea exactamente como fue diseñado. Aquí hay un ejemplo básico de convertir una cadena HTML en un documento PDF usando IronPDF:

using IronPdf;
public class PDFCreator
{
    public void CreatePdfFromHtml()
    {
        var renderer = new ChromePdfRenderer();
        // Define your HTML string
        string htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a sample PDF document created from an HTML string.</p>";
        // Render the HTML as a PDF document
        var pdfDocument = renderer.RenderHtmlAsPdf(htmlContent);
        // Save the PDF document
        pdfDocument.SaveAs("html_output.pdf");
    }
}
using IronPdf;
public class PDFCreator
{
    public void CreatePdfFromHtml()
    {
        var renderer = new ChromePdfRenderer();
        // Define your HTML string
        string htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a sample PDF document created from an HTML string.</p>";
        // Render the HTML as a PDF document
        var pdfDocument = renderer.RenderHtmlAsPdf(htmlContent);
        // Save the PDF document
        pdfDocument.SaveAs("html_output.pdf");
    }
}
Imports IronPdf
Public Class PDFCreator
	Public Sub CreatePdfFromHtml()
		Dim renderer = New ChromePdfRenderer()
		' Define your HTML string
		Dim htmlContent As String = "<h1>Hello, IronPDF!</h1><p>This is a sample PDF document created from an HTML string.</p>"
		' Render the HTML as a PDF document
		Dim pdfDocument = renderer.RenderHtmlAsPdf(htmlContent)
		' Save the PDF document
		pdfDocument.SaveAs("html_output.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel

Una Comparación entre CraftMyPDF & IronPDF: Figura 4 - Ejemplo de salida del código anterior usando IronPDF

En este ejemplo, el ChromePdfRenderer convierte la cadena HTML proporcionada en un PDF. El PDF renderizado luego se guarda en el sistema de archivos.

6.1.2 URL a PDF

Otra característica poderosa de IronPDF es su capacidad para convertir páginas web en documentos PDF directamente desde sus URLs. Esto es particularmente útil para archivar páginas web o generar PDFs de contenido web dinámico. A continuación se muestra un ejemplo de cómo convertir una URL en un documento PDF:

using IronPdf;
public class PDFCreator
{
    public void CreatePdfFromUrl(string url)
    {
        // Initialize the ChromePdfRenderer
        var renderer = new ChromePdfRenderer();
        // Render the URL as a PDF document
        var pdfDocument = renderer.RenderUrlAsPdf(url);
        // Save the PDF document
        pdfDocument.SaveAs("url_output.pdf");
    }
}
using IronPdf;
public class PDFCreator
{
    public void CreatePdfFromUrl(string url)
    {
        // Initialize the ChromePdfRenderer
        var renderer = new ChromePdfRenderer();
        // Render the URL as a PDF document
        var pdfDocument = renderer.RenderUrlAsPdf(url);
        // Save the PDF document
        pdfDocument.SaveAs("url_output.pdf");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Una Comparación entre CraftMyPDF & IronPDF: Figura 5 - Página de inicio de IronPDF

Este método toma una URL como entrada, renderiza la página web en un PDF y guarda el documento resultante. Maneja todo el contenido web, incluyendo HTML, CSS, JavaScript e imágenes, asegurando que el PDF refleje con precisión la página web original.

6.1.3 Archivo HTML a PDF

Convertir un archivo HTML en un PDF es similar a convertir una cadena HTML o URL. Este método le permite usar archivos HTML locales, lo que resulta conveniente para generar PDFs de páginas web preexistentes o plantillas almacenadas en el sistema de archivos. Así es como puede convertir un archivo HTML en un PDF:

using IronPdf;
public class PDFCreator
{
    public void CreatePdfFromHtmlFile(string filePath)
    {
        // Initialize the ChromePdfRenderer
        var renderer = new ChromePdfRenderer();
        // Render the HTML file as a PDF document
        var pdfDocument = renderer.RenderHtmlFileAsPdf(filePath);
        // Save the PDF document
        pdfDocument.SaveAs("html_file_output.pdf");
    }
}
using IronPdf;
public class PDFCreator
{
    public void CreatePdfFromHtmlFile(string filePath)
    {
        // Initialize the ChromePdfRenderer
        var renderer = new ChromePdfRenderer();
        // Render the HTML file as a PDF document
        var pdfDocument = renderer.RenderHtmlFileAsPdf(filePath);
        // Save the PDF document
        pdfDocument.SaveAs("html_file_output.pdf");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

En este ejemplo, el método RenderHtmlFileAsPdf se utiliza para convertir el contenido de un archivo HTML especificado por su ruta de archivo en un documento PDF. Luego se guarda el PDF resultante.

Al aprovechar estos métodos, puede utilizar IronPDF para crear PDFs a partir de diversas fuentes de contenido HTML, proporcionando una solución flexible y potente para la generación de documentos en sus aplicaciones C#. Estos métodos aseguran que puede integrar fácilmente capacidades de creación de PDFs, ya sea que esté trabajando con contenido web dinámico, archivos HTML locales o cadenas HTML definidas directamente.

6.2 Creación de PDFs con API CraftMyPDF

CraftMyPDF proporciona una API flexible para generar PDFs a partir de plantillas. Para crear un PDF usando esta API, primero debe crear una plantilla en el panel CraftMyPDF. Una vez que su plantilla esté lista, puede enviar una solicitud a la API con los datos necesarios para generar el PDF. Aquí están los pasos para lograrlo.

6.2.1 Creación de una Plantilla

  1. Iniciar sesión en CraftMyPDF Dashboard: Inicie sesión en su cuenta CraftMyPDF y navegue hasta el panel.

  2. Crear una Nueva Plantilla: Haga clic en el botón "Crear Plantilla". Utilice el editor de arrastrar y soltar para diseñar su plantilla PDF. Puede incluir texto, imágenes, tablas y otros elementos según sea necesario.

  3. Guardar la Plantilla: Una vez que esté satisfecho con el diseño, guarde la plantilla. Se le proporcionará un ID de plantilla, que necesitará para generar PDFs utilizando esta plantilla.

Una Comparación entre CraftMyPDF & IronPDF: Figura 6 - Panel CraftMyPDF

6.2.2 Enviar una Solicitud para Generar PDF

Después de crear su plantilla, puede usar el siguiente código C# para generar un PDF enviando una solicitud a la API CraftMyPDF.

using System;
using System.Net;
using System.Threading.Tasks;
using RestSharp;

class Program
{
    static async Task Main(string[] args)
    {
        var client = new RestClient("https://api.craftmypdf.com/v1/create");
        var request = new RestRequest(Method.Post);
        string apiKey = "API-Key"; // Replace with your actual API key
        string templateId = "Template-ID"; // Replace with your actual template ID
        request.AddHeader("X-API-KEY", apiKey);
        request.AddHeader("Content-Type", "application/json");
        var body = new
        {
            data = new
            {
                invoice_number = "INV48321",
                date = "2024-05-27",
                due_date = "2024-06-27",
                currency = "EUR",
                discount = 10,
                tax = 5,
                company_name = "Tech Innovations Ltd",
                email = "contact@techinnovations.com",
                client = "Future Solutions GmbH",
                client_address = "1234 Innovation Drive",
                client_address2 = "Berlin",
                client_address3 = "10115",
                items = new[]
                {
                    new { description = "Cloud Hosting Services", quantity = 12, unit_price = 75, total = 900 },
                    new { description = "Custom Web Application", quantity = 3, unit_price = 150, total = 450 },
                    new { description = "Technical Support", quantity = 15, unit_price = 30, total = 450 },
                    new { description = "Digital Marketing Campaign", quantity = 2, unit_price = 500, total = 1000 },
                    new { description = "SEO Optimization", quantity = 5, unit_price = 120, total = 600 }
                },
                gross_total = 3400
            },
            load_data_from = (string)null,
            template_id = templateId,
            version = 8,
            export_type = "json",
            expiration = 60,
            output_file = "output.pdf",
            is_cmyk = false,
            image_resample_res = 600,
            direct_download = 0,
            cloud_storage = 1
        };
        request.AddJsonBody(body);
        RestResponse response = await client.ExecuteAsync(request);
        Console.WriteLine(response.Content);
        if (response.IsSuccessful)
        {
            var content = response.Content;
            dynamic result = Newtonsoft.Json.JsonConvert.DeserializeObject(content);
            string fileUrl = result.file;
            string localPath = "f:\\downloaded_output.pdf";
            using (WebClient webClient = new WebClient())
            {
                webClient.DownloadFile(fileUrl, localPath);
            }
            Console.WriteLine($"PDF downloaded successfully to {localPath}");
        }
        else
        {
            Console.WriteLine($"Error: {response.Content}");
        }
    }
}
using System;
using System.Net;
using System.Threading.Tasks;
using RestSharp;

class Program
{
    static async Task Main(string[] args)
    {
        var client = new RestClient("https://api.craftmypdf.com/v1/create");
        var request = new RestRequest(Method.Post);
        string apiKey = "API-Key"; // Replace with your actual API key
        string templateId = "Template-ID"; // Replace with your actual template ID
        request.AddHeader("X-API-KEY", apiKey);
        request.AddHeader("Content-Type", "application/json");
        var body = new
        {
            data = new
            {
                invoice_number = "INV48321",
                date = "2024-05-27",
                due_date = "2024-06-27",
                currency = "EUR",
                discount = 10,
                tax = 5,
                company_name = "Tech Innovations Ltd",
                email = "contact@techinnovations.com",
                client = "Future Solutions GmbH",
                client_address = "1234 Innovation Drive",
                client_address2 = "Berlin",
                client_address3 = "10115",
                items = new[]
                {
                    new { description = "Cloud Hosting Services", quantity = 12, unit_price = 75, total = 900 },
                    new { description = "Custom Web Application", quantity = 3, unit_price = 150, total = 450 },
                    new { description = "Technical Support", quantity = 15, unit_price = 30, total = 450 },
                    new { description = "Digital Marketing Campaign", quantity = 2, unit_price = 500, total = 1000 },
                    new { description = "SEO Optimization", quantity = 5, unit_price = 120, total = 600 }
                },
                gross_total = 3400
            },
            load_data_from = (string)null,
            template_id = templateId,
            version = 8,
            export_type = "json",
            expiration = 60,
            output_file = "output.pdf",
            is_cmyk = false,
            image_resample_res = 600,
            direct_download = 0,
            cloud_storage = 1
        };
        request.AddJsonBody(body);
        RestResponse response = await client.ExecuteAsync(request);
        Console.WriteLine(response.Content);
        if (response.IsSuccessful)
        {
            var content = response.Content;
            dynamic result = Newtonsoft.Json.JsonConvert.DeserializeObject(content);
            string fileUrl = result.file;
            string localPath = "f:\\downloaded_output.pdf";
            using (WebClient webClient = new WebClient())
            {
                webClient.DownloadFile(fileUrl, localPath);
            }
            Console.WriteLine($"PDF downloaded successfully to {localPath}");
        }
        else
        {
            Console.WriteLine($"Error: {response.Content}");
        }
    }
}
'INSTANT VB NOTE: 'Option Strict Off' is used here since dynamic typing is used:
Option Strict Off

Imports System
Imports System.Net
Imports System.Threading.Tasks
Imports RestSharp

Friend Class Program
	Shared Async Function Main(ByVal args() As String) As Task
		Dim client = New RestClient("https://api.craftmypdf.com/v1/create")
		Dim request = New RestRequest(Method.Post)
		Dim apiKey As String = "API-Key" ' Replace with your actual API key
		Dim templateId As String = "Template-ID" ' Replace with your actual template ID
		request.AddHeader("X-API-KEY", apiKey)
		request.AddHeader("Content-Type", "application/json")
		Dim body = New With {
			Key .data = New With {
				Key .invoice_number = "INV48321",
				Key .date = "2024-05-27",
				Key .due_date = "2024-06-27",
				Key .currency = "EUR",
				Key .discount = 10,
				Key .tax = 5,
				Key .company_name = "Tech Innovations Ltd",
				Key .email = "contact@techinnovations.com",
				Key .client = "Future Solutions GmbH",
				Key .client_address = "1234 Innovation Drive",
				Key .client_address2 = "Berlin",
				Key .client_address3 = "10115",
				Key .items = {
					New With {
						Key .description = "Cloud Hosting Services",
						Key .quantity = 12,
						Key .unit_price = 75,
						Key .total = 900
					},
					New With {
						Key .description = "Custom Web Application",
						Key .quantity = 3,
						Key .unit_price = 150,
						Key .total = 450
					},
					New With {
						Key .description = "Technical Support",
						Key .quantity = 15,
						Key .unit_price = 30,
						Key .total = 450
					},
					New With {
						Key .description = "Digital Marketing Campaign",
						Key .quantity = 2,
						Key .unit_price = 500,
						Key .total = 1000
					},
					New With {
						Key .description = "SEO Optimization",
						Key .quantity = 5,
						Key .unit_price = 120,
						Key .total = 600
					}
				},
				Key .gross_total = 3400
			},
			Key .load_data_from = DirectCast(Nothing, String),
			Key .template_id = templateId,
			Key .version = 8,
			Key .export_type = "json",
			Key .expiration = 60,
			Key .output_file = "output.pdf",
			Key .is_cmyk = False,
			Key .image_resample_res = 600,
			Key .direct_download = 0,
			Key .cloud_storage = 1
		}
		request.AddJsonBody(body)
		Dim response As RestResponse = Await client.ExecuteAsync(request)
		Console.WriteLine(response.Content)
		If response.IsSuccessful Then
			Dim content = response.Content
'INSTANT VB NOTE: In the following line, Instant VB substituted 'Object' for 'dynamic' - this will work in VB with Option Strict Off:
			Dim result As Object = Newtonsoft.Json.JsonConvert.DeserializeObject(content)
			Dim fileUrl As String = result.file
			Dim localPath As String = "f:\downloaded_output.pdf"
			Using webClient As New WebClient()
				webClient.DownloadFile(fileUrl, localPath)
			End Using
			Console.WriteLine($"PDF downloaded successfully to {localPath}")
		Else
			Console.WriteLine($"Error: {response.Content}")
		End If
	End Function
End Class
$vbLabelText   $csharpLabel

Una Comparación entre CraftMyPDF & IronPDF: Figura 7 - Ejemplo de salida indicando un objeto de respuesta exitosa

Y es el documento PDF generado por la API de Generación de PDF CraftMyPdf:

Una Comparación entre CraftMyPDF & IronPDF: Figura 8 - Ejemplo de salida de la API de Generación de PDF CraftMyPdf

Generación de Factura con Bootstrap

La generación profesional de facturas requiere diseños modernos y responsive. Este ejemplo de Bootstrap 5 demuestra la capacidad de IronPDF de crear facturas perfectas en píxeles sin APIs externas o plantillas.

using IronPdf;

var renderer = new ChromePdfRenderer();

string professionalInvoice = @"
<!DOCTYPE html>
<html>
<head>
    <meta charset='utf-8'>
    <link href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css' rel='stylesheet'>
    <style>
        .invoice-header { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white; }
        .invoice-table th { background: #f8f9fa; }
        @media print { .invoice-box { page-break-inside: avoid; } }
    </style>
</head>
<body>
    <div class='container my-4'>
        <div class='card shadow-lg invoice-box'>
            <div class='invoice-header p-4'>
                <div class='row align-items-center'>
                    <div class='col-md-8'>
                        <h1 class='mb-0'>INVOICE</h1>
                        <p class='mb-0 opacity-75'>Invoice #INV-2024-0427</p>
                    </div>
                    <div class='col-md-4 text-md-end'>
                        <h3 class='mb-0'>$3,400.00</h3>
                        <small class='opacity-75'>Due: June 27, 2024</small>
                    </div>
                </div>
            </div>

            <div class='card-body p-4'>
                <div class='row mb-4'>
                    <div class='col-md-6'>
                        <h6 class='text-primary text-uppercase mb-2'>From</h6>
                        <strong>Tech Innovations Ltd</strong><br>
                        contact@techinnovations.com
                    </div>
                    <div class='col-md-6 text-md-end'>
                        <h6 class='text-primary text-uppercase mb-2'>Bill To</h6>
                        <strong>Future Solutions GmbH</strong><br>
                        1234 Innovation Drive<br>
                        Berlin, 10115
                    </div>
                </div>

                <table class='table invoice-table'>
                    <thead>
                        <tr>
                            <th>Description</th>
                            <th class='text-center'>Qty</th>
                            <th class='text-end'>Unit Price</th>
                            <th class='text-end'>Total</th>
                        </tr>
                    </thead>
                    <tbody>
                        <tr>
                            <td>Cloud Hosting Services</td>
                            <td class='text-center'>12</td>
                            <td class='text-end'>€75.00</td>
                            <td class='text-end'>€900.00</td>
                        </tr>
                        <tr>
                            <td>Custom Web Application</td>
                            <td class='text-center'>3</td>
                            <td class='text-end'>€150.00</td>
                            <td class='text-end'>€450.00</td>
                        </tr>
                        <tr>
                            <td>Technical Support</td>
                            <td class='text-center'>15</td>
                            <td class='text-end'>€30.00</td>
                            <td class='text-end'>€450.00</td>
                        </tr>
                        <tr>
                            <td>Digital Marketing Campaign</td>
                            <td class='text-center'>2</td>
                            <td class='text-end'>€500.00</td>
                            <td class='text-end'>€1,000.00</td>
                        </tr>
                        <tr>
                            <td>SEO Optimization</td>
                            <td class='text-center'>5</td>
                            <td class='text-end'>€120.00</td>
                            <td class='text-end'>€600.00</td>
                        </tr>
                    </tbody>
                </table>

                <div class='row justify-content-end'>
                    <div class='col-md-4'>
                        <table class='table table-sm'>
                            <tr>
                                <td>Subtotal:</td>
                                <td class='text-end'><strong>€3,400.00</strong></td>
                            </tr>
                            <tr>
                                <td>Discount (10%):</td>
                                <td class='text-end text-success'>-€340.00</td>
                            </tr>
                            <tr>
                                <td>Tax (5%):</td>
                                <td class='text-end'>€153.00</td>
                            </tr>
                            <tr class='table-primary'>
                                <td><strong>Total Due:</strong></td>
                                <td class='text-end'><strong>€3,213.00</strong></td>
                            </tr>
                        </table>
                    </div>
                </div>

                <div class='alert alert-info mt-4'>
                    <strong>Payment Terms:</strong> Payment due within 30 days. Late payments may incur additional charges.
                </div>

                <div class='row mt-4 pt-3 border-top'>
                    <div class='col-md-6'>
                        <small class='text-muted'>Generated with IronPDF - No external APIs required</small>
                    </div>
                    <div class='col-md-6 text-md-end'>
                        <span class='badge bg-success'>PAID</span>
                    </div>
                </div>
            </div>
        </div>
    </div>
</body>
</html>";

var pdf = renderer.RenderHtmlAsPdf(professionalInvoice);
pdf.SaveAs("professional-invoice.pdf");
using IronPdf;

var renderer = new ChromePdfRenderer();

string professionalInvoice = @"
<!DOCTYPE html>
<html>
<head>
    <meta charset='utf-8'>
    <link href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css' rel='stylesheet'>
    <style>
        .invoice-header { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white; }
        .invoice-table th { background: #f8f9fa; }
        @media print { .invoice-box { page-break-inside: avoid; } }
    </style>
</head>
<body>
    <div class='container my-4'>
        <div class='card shadow-lg invoice-box'>
            <div class='invoice-header p-4'>
                <div class='row align-items-center'>
                    <div class='col-md-8'>
                        <h1 class='mb-0'>INVOICE</h1>
                        <p class='mb-0 opacity-75'>Invoice #INV-2024-0427</p>
                    </div>
                    <div class='col-md-4 text-md-end'>
                        <h3 class='mb-0'>$3,400.00</h3>
                        <small class='opacity-75'>Due: June 27, 2024</small>
                    </div>
                </div>
            </div>

            <div class='card-body p-4'>
                <div class='row mb-4'>
                    <div class='col-md-6'>
                        <h6 class='text-primary text-uppercase mb-2'>From</h6>
                        <strong>Tech Innovations Ltd</strong><br>
                        contact@techinnovations.com
                    </div>
                    <div class='col-md-6 text-md-end'>
                        <h6 class='text-primary text-uppercase mb-2'>Bill To</h6>
                        <strong>Future Solutions GmbH</strong><br>
                        1234 Innovation Drive<br>
                        Berlin, 10115
                    </div>
                </div>

                <table class='table invoice-table'>
                    <thead>
                        <tr>
                            <th>Description</th>
                            <th class='text-center'>Qty</th>
                            <th class='text-end'>Unit Price</th>
                            <th class='text-end'>Total</th>
                        </tr>
                    </thead>
                    <tbody>
                        <tr>
                            <td>Cloud Hosting Services</td>
                            <td class='text-center'>12</td>
                            <td class='text-end'>€75.00</td>
                            <td class='text-end'>€900.00</td>
                        </tr>
                        <tr>
                            <td>Custom Web Application</td>
                            <td class='text-center'>3</td>
                            <td class='text-end'>€150.00</td>
                            <td class='text-end'>€450.00</td>
                        </tr>
                        <tr>
                            <td>Technical Support</td>
                            <td class='text-center'>15</td>
                            <td class='text-end'>€30.00</td>
                            <td class='text-end'>€450.00</td>
                        </tr>
                        <tr>
                            <td>Digital Marketing Campaign</td>
                            <td class='text-center'>2</td>
                            <td class='text-end'>€500.00</td>
                            <td class='text-end'>€1,000.00</td>
                        </tr>
                        <tr>
                            <td>SEO Optimization</td>
                            <td class='text-center'>5</td>
                            <td class='text-end'>€120.00</td>
                            <td class='text-end'>€600.00</td>
                        </tr>
                    </tbody>
                </table>

                <div class='row justify-content-end'>
                    <div class='col-md-4'>
                        <table class='table table-sm'>
                            <tr>
                                <td>Subtotal:</td>
                                <td class='text-end'><strong>€3,400.00</strong></td>
                            </tr>
                            <tr>
                                <td>Discount (10%):</td>
                                <td class='text-end text-success'>-€340.00</td>
                            </tr>
                            <tr>
                                <td>Tax (5%):</td>
                                <td class='text-end'>€153.00</td>
                            </tr>
                            <tr class='table-primary'>
                                <td><strong>Total Due:</strong></td>
                                <td class='text-end'><strong>€3,213.00</strong></td>
                            </tr>
                        </table>
                    </div>
                </div>

                <div class='alert alert-info mt-4'>
                    <strong>Payment Terms:</strong> Payment due within 30 days. Late payments may incur additional charges.
                </div>

                <div class='row mt-4 pt-3 border-top'>
                    <div class='col-md-6'>
                        <small class='text-muted'>Generated with IronPDF - No external APIs required</small>
                    </div>
                    <div class='col-md-6 text-md-end'>
                        <span class='badge bg-success'>PAID</span>
                    </div>
                </div>
            </div>
        </div>
    </div>
</body>
</html>";

var pdf = renderer.RenderHtmlAsPdf(professionalInvoice);
pdf.SaveAs("professional-invoice.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Salida: Un PDF de factura profesional con encabezados de gradiente Bootstrap 5, tablas responsivas y resúmenes de cálculos. IronPDF renderiza con perfecta precisión todos los gradientes CSS, estilos de tablas y clases de utilidad: no se requieren llamadas a APIs externas, no se requieren plantillas, no se requiere conexión a Internet. A diferencia del enfoque en la nube de CraftMyPDF, IronPDF genera facturas instantáneamente en su servidor con control total.

Para más información sobre el soporte de tablas Bootstrap, consulte la Guía de CSS de Bootstrap & Flexbox.

Explicación del Código

  1. Configurar RestClient y RestRequest: Se instancia un RestClient con la URL de la API CraftMyPDF, y se crea un RestRequest para el método POST para generar el PDF.

  2. Agregar Encabezados: Se agrega la clave API a los encabezados de la solicitud para autenticación. El tipo de contenido se establece en application/json.

  3. Preparar el Cuerpo de la Solicitud: El cuerpo de la solicitud se crea como un objeto JSON. Incluye los datos para completar los campos de la plantilla, el ID de la plantilla, y varias opciones como el tipo de exportación y la expiración.

  4. Enviar Solicitud: La solicitud se envía de forma asíncrona usando ExecuteAsync y genera documentos PDF basados en el cuerpo de la solicitud.

  5. Manejar la Respuesta: Si la respuesta es exitosa, se extrae la URL del archivo PDF generado de la respuesta, y el archivo se descarga a una ruta local usando WebClient. Si la solicitud no tiene éxito, se imprimirá un mensaje de error.

7. Licencia

Una Comparación entre CraftMyPDF & IronPDF: Figura 9 - Una Comparación entre IronPDF & DinktoPDF: Figura 10 - Opciones de licenciamiento de IronPDF.

IronPDF ofrece varias opciones de licenciamiento para atender las necesidades de diferentes usuarios. Las licencias principales incluyen ediciones Lite, Professional y Enterprise. La licencia Lite, con un precio de $799, es adecuada para desarrolladores individuales que trabajan en un solo proyecto. La licencia Professional cuesta $1,199 y admite múltiples proyectos y desarrolladores, mientras que la licencia Enterprise está diseñada para equipos grandes y despliegue más extenso, con un precio de $2,399. Cada licencia es un pago único e incluye un año de soporte y actualizaciones. Adicionalmente, hay una Licencia de Redistribución OEM que permite la distribución de IronPDF como parte de un producto comercial. IronPDF también proporciona una prueba gratuita para propósitos de evaluación.

CraftMyPDF opera con un modelo de licencia basado en suscripción. Ofrece varios planes, incluyendo un nivel gratuito adecuado para propósitos de desarrollo y pequeña escala. El plan gratuito permite un uso limitado de la API, ideal para pruebas y pequeños proyectos. Para un mayor uso, hay planes de pago que proporcionan límites aumentados de llamadas a la API y características adicionales. Estos planes de pago están diseñados para escalar con las necesidades del negocio, ofreciendo flexibilidad y soporte sólido. Los usuarios deben suscribirse a estos planes a través del sitio web CraftMyPDF y pueden gestionar su suscripción y claves API desde el tablero de usuario.

8. Documentación y Soporte

8.1 Documentación y Soporte de IronPDF

IronPDF ofrece documentación extensa y soporte robusto para ayudar a los usuarios a utilizar eficazmente la biblioteca. La documentación es completa e incluye guías detalladas, ejemplos, y una sección de Inicio Rápido para ayudar a los nuevos usuarios a comenzar rápidamente. Las secciones clave cubren los usos básicos, configuraciones avanzadas y resolución de problemas. Adicionalmente, IronPDF proporciona soporte a través de varios canales, incluyendo una extensa base de conocimiento, soporte por correo electrónico y solicitudes de soporte de ingeniería para problemas más complejos. El equipo de soporte está disponible 24/5, ofreciendo asistencia rápida para resolver consultas y problemas de los usuarios.

8.2 Documentación y Soporte de CraftMyPdf

CraftMyPDF también ofrece documentación y soporte exhaustivos para sus usuarios. La documentación de la API proporciona información detallada sobre todos los puntos finales disponibles, parámetros y solicitudes de ejemplo, asegurando que los desarrolladores puedan integrar la API sin problemas. La documentación incluye guías sobre cómo crear plantillas, realizar solicitudes de API y manejar respuestas. CraftMyPDF proporciona soporte al cliente mediante correo electrónico y ofrece un foro comunitario donde los usuarios pueden hacer preguntas y compartir conocimientos. La documentación está diseñada para ser amigable para el usuario, asegurando que desarrolladores de todos los niveles de habilidad puedan utilizar eficazmente la API para generar PDFs.

9. Conclusión

En este artículo, hemos explorado las características, licencias y documentación de dos herramientas poderosas para generar PDFs: IronPDF y CraftMyPDF. Ambas herramientas ofrecen capacidades robustas para crear y gestionar documentos PDF, pero IronPDF destaca con varias ventajas distintivas.

IronPDF proporciona un conjunto completo de características que atienden a una amplia gama de necesidades de generación de PDF, incluyendo la conversión fácil de cadenas HTML, URLs y archivos HTML en PDFs. Su integración perfecta con el entorno .NET y la capacidad de manejar estructuras de documentos complejas lo convierten en una herramienta altamente versátil. Además, IronPDF admite opciones avanzadas como agregar encabezados y pies de página, firmas digitales y manejo de formularios PDF, asegurando que pueda satisfacer las necesidades de varias aplicaciones.

Una de las ventajas significativas de IronPDF es su estructura de licencias. Ofrece una prueba gratuita, lo que permite a los usuarios evaluar el software antes de realizar una compra. Las licencias comienzan en $799, haciéndolo accesible para desarrolladores individuales y pequeños equipos. Además, IronPDF ofrece una excelente propuesta de valor al ofrecer el Iron Suite, que incluye nueve productos, al precio de dos, haciéndolo una elección rentable para una gestión completa de PDF y documentos.

En resumen, aunque tanto IronPDF como CraftMyPDF son excelentes herramientas para la generación de PDF, IronPDF ofrece un conjunto de características más extenso, soporte robusto y un modelo de licencias más ventajoso. Su capacidad para manejar requisitos de documentos complejos y el paquete Iron Suite rentable le dan una ventaja sobre CraftMyPDF. Ya sea que sea un desarrollador individual o parte de un equipo más grande, IronPDF proporciona una solución confiable y poderosa para todas sus necesidades de generación de PDF.

Por favor notaCraftMyPDF es una marca registrada de su propietario respectivo. Este sitio no está afiliado, respaldado o patrocinado por CraftMyPDF. Todos los nombres de producto, logotipos y marcas son propiedad de sus respectivos dueños. Las comparaciones son solo para fines informativos y reflejan información públicamente disponible en el momento de la redacción.

Preguntas Frecuentes

¿Cuáles son las ventajas de utilizar una biblioteca de PDF de C# sobre una solución basada en API?

Una biblioteca de PDF completa como IronPDF ofrece características extensas, integración perfecta con entornos de desarrollo .NET, soporte robusto y opciones de licencia rentables, lo que la convierte en una opción superior para el manejo de documentos complejos.

¿Cómo puedo convertir contenido HTML en un documento PDF usando C#?

Puedes usar IronPDF para convertir contenido HTML en documentos PDF. Soporta HTML5 y CSS3, asegurando que el contenido web se reproduzca con precisión en los PDFs generados.

¿Qué características se destacan en IronPDF para la generación de PDF?

IronPDF ofrece firmas digitales, llenado de formularios, edición de PDF, anotaciones y compatibilidad multiplataforma. Se destaca en la conversión de HTML, URLs e imágenes en PDFs con un rendimiento robusto y optimización.

¿Cómo maneja CraftMyPDF el diseño de plantillas de PDF?

CraftMyPDF ofrece un editor web de arrastrar y soltar que permite a los usuarios diseñar plantillas de PDF sin necesidad de programación. Soporta integración de datos JSON, permitiendo la creación de documentos PDF personalizados.

¿Qué opciones de licencia están disponibles para herramientas de PDF como IronPDF?

IronPDF proporciona opciones de licencia flexibles, incluyendo licencias Lite, Professional y Enterprise con un pago único. También ofrece una prueba gratuita para que los nuevos usuarios exploren sus características.

¿Cómo puedo integrar una API de generación de PDF en mi aplicación C#?

Para integrar una API de generación de PDF como CraftMyPDF, necesitas crear una cuenta, seleccionar un plan apropiado, obtener una clave API y usar bibliotecas como System.Net.Http y RestSharp para hacer llamadas API.

¿Qué recursos de soporte están disponibles para los desarrolladores que usan IronPDF?

IronPDF proporciona documentación extensa, tutoriales y soporte técnico 24/5. Estos recursos ayudan a los desarrolladores a implementar y resolver problemas de manera efectiva en sus proyectos.

¿Cómo instalo IronPDF en una aplicación C#?

IronPDF se puede instalar a través del Administrador de paquetes NuGet en Visual Studio, usando la Consola del Administrador de paquetes NuGet, o descargando el paquete directamente del sitio web de NuGet.

¿Cómo mejora IronPDF la seguridad de los documentos PDF y la interactividad?

IronPDF soporta características como firmas digitales y manejo de formularios, que mejoran la seguridad de los documentos y la interactividad, haciéndolo adecuado para una gestión integral de PDFs.

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