HERRAMIENTAS PDF

Cómo crear archivos PDF en C++

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++.

Biblioteca WkhtmltoPdf

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.

Requisitos previos

Para crear archivos PDF en C++, necesitamos lo siguiente:

  1. Un compilador de C++ como GCC o Clang instalado en su sistema. Puede utilizar simplemente cualquier IDE que soporte programación en C++.

  2. 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.

  3. Conocimientos básicos de programación en C++.

C++ Crear proyecto PDF en Code:Blocks

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.

1. Añadir carpeta include en directorios de búsqueda

Para asegurarnos de que Code::Blocks puede encontrar los archivos de cabecera necesarios, necesitamos configurar los directorios de búsqueda.

  1. Haz clic en el menú "Proyecto" de la barra de menús y selecciona las "Opciones de compilación". Asegúrate de seleccionar "Depurar".

  2. En el cuadro de diálogo "Opciones de compilación", selecciona la pestaña "Buscar directorios".

  3. En la pestaña "Compilador", pulse el botón "Añadir".

  4. Navega hasta el directorio donde se encuentran los archivos de encabezado wkhtmltox (por ejemplo, C:\Program Files\wkhtmltopdf\include) y selecciónalo.

  5. Por último, haga clic en "Aceptar" para cerrar el cuadro de diálogo.

    Cómo crear archivos PDF en C++: Figura 1

2. Enlace de las bibliotecas en la configuración del enlazador

Para enlazar con la biblioteca wkhtmltox, siga estos pasos:

  1. 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".

  2. En el cuadro de diálogo "Opciones de compilación", seleccione la pestaña "Configuración del enlazador".

  3. En la pestaña "Vincular bibliotecas", pulse el botón "Añadir".

  4. 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.

  5. Haga clic en "Abrir" para añadir la biblioteca a su proyecto.

  6. Por último, haga clic en "Aceptar" para cerrar el cuadro de diálogo.

    Cómo Crear Archivos PDF en C++: Figura 2

Pasos para crear un PDF en C++ utilizando Wkhtmltopdf

1. Incluir las bibliotecas necesarias

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>
C++

2. Desactivar el componente GUI

Si no está trabajando con GUI, debe desactivarlo para evitar errores. El código es el siguiente:

wkhtmltopdf_init(false);
wkhtmltopdf_init(false);
C++

3. Inicializar ajustes y conversor

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);
C++

4. Añadir contenido PDF

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());
C++

5. Convertir cadena HTML en archivo PDF

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);
C++

6. Obtención de la salida como Memoria intermedia

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);
C++

7. Guardar archivo PDF

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();
C++

8. Liberar memoria

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;
C++

9. Ejecutar el código y generar el archivo PDF

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:

Cómo crear archivos PDF en C++: Figura 3

Crear archivo PDF en C#

IronPDF

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");
C++

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.

Cómo crear archivos PDF en C++: Figura 4

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.

Conclusión

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.

Chipego
Ingeniero de software
Chipego tiene una habilidad natural para escuchar que le ayuda a comprender los problemas de los clientes y a ofrecer soluciones inteligentes. Se unió al equipo de Iron Software en 2023, después de estudiar una licenciatura en Tecnología de la Información. IronPDF e IronOCR son los dos productos en los que Chipego se ha centrado, pero su conocimiento de todos los productos crece día a día, a medida que encuentra nuevas formas de ayudar a los clientes. Disfruta de lo colaborativa que es la vida en Iron Software, con miembros del equipo de toda la empresa que aportan su variada experiencia para contribuir a soluciones eficaces e innovadoras. Cuando Chipego está lejos de su escritorio, a menudo se le puede encontrar disfrutando de un buen libro o jugando al fútbol.
< ANTERIOR
Cómo ver archivos PDF en C++
SIGUIENTE >
Cómo leer archivos PDF en C++