Pruebas en un entorno real
Pruebe en producción sin marcas de agua.
Funciona donde lo necesites.
PDF(Formato de documento portátil) son muy utilizados para compartir y conservar documentos en un formato coherente en distintas 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 contenidos 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 contenidos 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.
"Librería C++ wkhtmltopdf"(también conocido como "wkhtmltopdf C API"). Esta biblioteca proporciona una interfaz C++ para la herramienta de línea de comandos wkhtmltopdf
, que permite crear archivos PDF a partir de contenido HTML directamente en las 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. Puede descargar la última versión desde la página oficialwkhtmltopdf sitio web e instálelo siguiendo las instrucciones de su 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".
Vaya al directorio donde se encuentran los archivos de cabecera wkhtmltox(por ejemplo, C:\Archivos de Programa\wkhtmltopdf\include**)y selecciónelo.
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".
Vaya al directorio donde se encuentran los archivos de la biblioteca wkhtmltox(Por ejemplo, C:Archivos de programa**.)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, tenemos que inicializar los punteros globales y de configuración de objetos 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 del PDF como un flujo de memoria intermedia. 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
tendrá ahora el flujo de caracteres del wkhtmltopdf_converter
. Para guardar en un archivo PDF, primero especificaremos la ruta del archivo donde queremos guardar el PDF. A continuación, utilizando el flujo del archivo de salida, abrimos el archivo en modo binario y escribimos en él los pdfData
mediante 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.
He aquí un código de ejemplo paracrear PDF con IronPDF utilizandoConversión de cadenas 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 PDF. Llamamos al método RenderHtmlAsPdf
del objeto renderer
y le pasamos la cadena HTML. Esto genera el documento PDF, y luego guardamos el documento PDF utilizando el método SaveAs
.
Para más detalles sobre cómocrear un PDF a partir de varios recursos con IronPDFvisite esta páginaEjemplos de código de IronPDF página.
En este artículo, exploramos la generación de PDF en C++ utilizando la librería wkhtmltopdf C++ Library, y también aprendimos a utilizar 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 funciones lo convierten en una valiosa herramienta para los desarrolladores que necesitan convertirHTML a PDF en sus proyectos 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 proporciona unprueba gratuita para uso comercial con el fin de probar su funcionalidad completa. Descargar IronPDF y pruébelo usted mismo.
9 productos API .NET para sus documentos de oficina