HERRAMIENTAS PDF

Cómo crear archivos PDF en C++

Publicado en 5 de julio, 2023
Compartir:

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

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

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. Puede descargar la última versión desde la página oficialwkhtmltopdf sitio web e instálelo siguiendo las instrucciones de su 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. Vaya al directorio donde se encuentran los archivos de cabecera wkhtmltox(por ejemplo, C:\Archivos de Programa\wkhtmltopdf\include**)y selecciónelo.

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

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

7. Guardar archivo PDF

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();
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.

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

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.

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

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.

Conclusión

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.

< ANTERIOR
Cómo ver archivos PDF en C++
SIGUIENTE >
Cómo leer archivos PDF en C++

¿Listo para empezar? Versión: 2024.12 acaba de salir

Descarga gratuita de NuGet Descargas totales: 11,622,374 Ver licencias >