Pruebe en producción sin marcas de agua.
Funciona donde lo necesite.
Obtén 30 días de producto totalmente funcional.
Ténlo en funcionamiento en minutos.
Acceso completo a nuestro equipo de asistencia técnica durante la prueba del producto
Los archivos PDF (Formato de Documento Portátil) se utilizan ampliamente para compartir y preservar documentos en un formato consistente a través de diferentes plataformas. En este artículo, exploraremos cómo generar archivos PDF en C++ utilizando la biblioteca wkhtmltopdf. Es una herramienta de línea de comandos de código abierto, que se utiliza para convertir contenido HTML en archivos PDF. Aprovechando la potencia de esta biblioteca, podemos crear mediante programación documentos PDF a partir de contenido HTML en nuestras aplicaciones C++.
wkhtmltopdf es una herramienta de línea de comandos de código abierto y un motor de renderizado que convierte páginas web HTML o contenido HTML en documentos PDF. Utiliza el motor de renderizado WebKit para analizar y renderizar HTML, CSS y JavaScript y, a continuación, genera un archivo PDF basado en el contenido renderizado.
biblioteca wkhtmltopdf C++ (también conocida como "wkhtmltopdf C API"). Esta biblioteca proporciona una interfaz C++ para la herramienta de línea de comandos wkhtmltopdf
, permitiéndote crear archivos PDF a partir de contenido HTML directamente en tus aplicaciones C++. Analicemos paso a paso el proceso de conversión de HTML a PDF en C++ utilizando la biblioteca Wkhtmltopdf.
Para crear archivos PDF en C++, necesitamos lo siguiente:
Un compilador de C++ como GCC o Clang instalado en su sistema. Puede utilizar simplemente cualquier IDE que soporte programación en C++.
Biblioteca wkhtmltopdf descargada e instalada. Puedes descargar la última versión desde el sitio web oficial de wkhtmltopdf e instalarla según las instrucciones de tu sistema operativo.
Cree un proyecto en Code::Blocks y siga los siguientes pasos para vincular la carpeta y el archivo de la biblioteca. Si está utilizando algún otro IDE las opciones pueden ser diferentes, pero es necesario hacer referencia a la biblioteca descargada en su proyecto para que funcione.
Para asegurarnos de que Code::Blocks puede encontrar los archivos de cabecera necesarios, necesitamos configurar los directorios de búsqueda.
Haz clic en el menú "Proyecto" de la barra de menús y selecciona las "Opciones de compilación". Asegúrate de seleccionar "Depurar".
En el cuadro de diálogo "Opciones de compilación", selecciona la pestaña "Buscar directorios".
En la pestaña "Compilador", pulse el botón "Añadir".
Navega hasta el directorio donde se encuentran los archivos de encabezado wkhtmltox (por ejemplo, C:\Program Files\wkhtmltopdf\include) y selecciónalo.
Por último, haga clic en "Aceptar" para cerrar el cuadro de diálogo.
Para enlazar con la biblioteca wkhtmltox, siga estos pasos:
Vuelve a hacer clic en el menú "Proyecto" de la barra de menús y selecciona "Opciones de compilación". Asegúrate de seleccionar "Depurar".
En el cuadro de diálogo "Opciones de compilación", seleccione la pestaña "Configuración del enlazador".
En la pestaña "Vincular bibliotecas", pulse el botón "Añadir".
Navegue hasta el directorio donde se encuentran los archivos de la biblioteca wkhtmltox (por ejemplo, C:\Program Files\wkhtmltopdf\lib), y seleccione el archivo de biblioteca adecuado.
Haga clic en "Abrir" para añadir la biblioteca a su proyecto.
Por último, haga clic en "Aceptar" para cerrar el cuadro de diálogo.
Para empezar, primero incluiremos los archivos de cabecera necesarios para utilizar las funcionalidades de la biblioteca wkhtmltopdf en nuestro programa C++. Incluya los siguientes archivos de cabecera al principio del archivo de código fuente main.cpp:
#include <iostream>
#include <fstream>
#include <string>
#include <wkhtmltox/pdf.h>
#include <iostream>
#include <fstream>
#include <string>
#include <wkhtmltox/pdf.h>
Si no está trabajando con GUI, debe desactivarlo para evitar errores. El código es el siguiente:
wkhtmltopdf_init(false);
wkhtmltopdf_init(false);
A continuación, necesitamos inicializar los punteros de configuración global y del objeto, y luego el convertidor wkhtmltopdf
.
wkhtmltopdf_global_settings* gs = wkhtmltopdf_create_global_settings();
wkhtmltopdf_object_settings* os = wkhtmltopdf_create_object_settings();
wkhtmltopdf_converter* converter = wkhtmltopdf_create_converter(gs);
wkhtmltopdf_global_settings* gs = wkhtmltopdf_create_global_settings();
wkhtmltopdf_object_settings* os = wkhtmltopdf_create_object_settings();
wkhtmltopdf_converter* converter = wkhtmltopdf_create_converter(gs);
Ahora, vamos a crear una cadena HTML para rellenar algo de contenido en nuestro documento PDF recién creado. El código es el siguiente:
string htmlString = "<html><body><h1>Create a PDF in C++ using WKHTMLTOPDF Library</h1></body></html>";
wkhtmltopdf_add_object(converter, os, htmlString.c_str());
string htmlString = "<html><body><h1>Create a PDF in C++ using WKHTMLTOPDF Library</h1></body></html>";
wkhtmltopdf_add_object(converter, os, htmlString.c_str());
Wkhtmltopdf proporciona un método de conversión para convertir contenido HTML a PDF. Este es el fragmento de código:
wkhtmltopdf_convert(converter);
wkhtmltopdf_convert(converter);
Con la función wkhtmltopdf_get_output
, podemos obtener los datos PDF como un flujo de búfer de memoria. También devuelve la longitud del PDF. El siguiente ejemplo realizará esta tarea:
const unsigned char* pdfData;
const int pdfLength = wkhtmltopdf_get_output(converter, &pdfData);
const unsigned char* pdfData;
const int pdfLength = wkhtmltopdf_get_output(converter, &pdfData);
El puntero pdfData
ahora tendrá el flujo de caracteres del wkhtmltopdf_converter
. Para guardar en un archivo PDF, primero especificaremos la ruta del archivo donde queremos guardar el PDF. Luego, utilizando el flujo de salida del archivo, abrimos el archivo en modo binario y escribimos el pdfData
en él mediante la conversión de tipo con la función reinterpret_cast
. Por último, cerramos el archivo.
const char* outputPath = "file.pdf";
ofstream outputFile(outputPath, ios::binary);
outputFile.write(reinterpret_cast<const char*>(pdfData), pdfLength);
outputFile.close();
const char* outputPath = "file.pdf";
ofstream outputFile(outputPath, ios::binary);
outputFile.write(reinterpret_cast<const char*>(pdfData), pdfLength);
outputFile.close();
Después de crear con éxito un archivo PDF, es esencial limpiar los recursos asignados por Wkhtmltopdf, de lo contrario se producirá una fuga de memoria.
wkhtmltopdf_destroy_converter(converter);
wkhtmltopdf_destroy_object_settings(os);
wkhtmltopdf_destroy_global_settings(gs);
wkhtmltopdf_deinit();
cout << "PDF created successfully." << endl;
wkhtmltopdf_destroy_converter(converter);
wkhtmltopdf_destroy_object_settings(os);
wkhtmltopdf_destroy_global_settings(gs);
wkhtmltopdf_deinit();
cout << "PDF created successfully." << endl;
Ahora, construye el proyecto y ejecuta el código usando F9. La salida se genera y se guarda en la carpeta del proyecto. El PDF resultante es el siguiente:
IronPDF es una biblioteca PDF .NET C# que permite a los desarrolladores crear documentos PDF a partir de HTML sin esfuerzo. Proporciona una API intuitiva que simplifica el proceso de creación de archivos PDF a partir de HTML.
IronPDF es robusto y versátil a la hora de trabajar con PDF. No solo crea un PDF a partir de documentos HTML sencillos, sino también páginas web complejas con estilos CSS, interacciones JavaScript e incluso contenido dinámico. Además, puede desarrollar diferentes conversores de PDF con acceso rápido a sus métodos de conversión.
Aquí tienes un ejemplo de código para crear PDF con IronPDF utilizando conversión de cadena HTML a PDF:
using IronPdf;
// Instantiate Renderer
var renderer = new ChromePdfRenderer();
// Create a PDF from a HTML string using C#
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
// Export to a file or Stream
pdf.SaveAs("output.pdf");
using IronPdf;
// Instantiate Renderer
var renderer = new ChromePdfRenderer();
// Create a PDF from a HTML string using C#
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
// Export to a file or Stream
pdf.SaveAs("output.pdf");
Creamos una instancia de ChromePdfRenderer
para renderizar el contenido HTML como un PDF. Llamamos al método RenderHtmlAsPdf
en el objeto renderer
y pasamos la cadena HTML. Esto genera el documento PDF, y luego guardamos el documento PDF usando el método SaveAs
.
Para obtener más detalles sobre cómo crear un PDF a partir de varios recursos con IronPDF, por favor visite esta página de ejemplos de código de IronPDF.
En este artículo, exploramos la generación de PDF en C++ utilizando la Biblioteca wkhtmltopdf C++, y también aprendimos cómo usar IronPDF para generar documentos PDF en C#.
Con IronPDF, generar archivos PDF a partir de contenido HTML se convierte en una tarea sencilla en lenguajes .NET Framework. Su amplio conjunto de características lo convierte en una herramienta valiosa para los desarrolladores que necesitan convertir HTML a PDF en sus proyectos de C#. Ya se trate de generar informes, facturas o cualquier otro documento que requiera una conversión precisa de HTML a PDF, IronPDF es una solución fiable y eficaz.
IronPDF es gratuito para fines de desarrollo, pero su uso comercial requiere una licencia. También ofrece una prueba gratuita para uso comercial para probar su funcionalidad completa. Descargar IronPDF y pruébalo tú mismo.