HERRAMIENTAS PDF

Cómo leer archivos PDF en C++

Actualizado 5 de julio, 2023
Compartir:

PDF (Formato de documento portátil) son ampliamente utilizados para el intercambio de documentos, y ser capaz de leer programáticamente su contenido es valioso en diversas aplicaciones. Las siguientes bibliotecas están disponibles para leer PDF en C++: Poppler, Mupdf, Haru free PDF library, Xpdf, Qpdf.

En este artículo, sólo exploraremos cómo leer archivos PDF en C++ utilizando la herramienta de línea de comandos Xpdf. Xpdf ofrece una serie de utilidades para trabajar con archivos PDF, incluida la extracción de contenido de texto. Integrando Xpdf en un programa C++, podemos extraer el texto de los archivos PDF y procesarlo mediante programación.

Xpdf - Herramientas de línea de comandos

Xpdf es un paquete de software de código abierto que proporciona una colección de herramientas y bibliotecas para trabajar con PDF (Formato de documento portátil) archivos. El paquete Xpdf incluye varias utilidades de línea de comandos y bibliotecas C++ que permiten diversas funcionalidades relacionadas con PDF, como el análisis sintáctico, el renderizado, la extracción de texto, etc. Algunos componentes clave de Xpdf son: pdfimages, pdftops, pdfinfo, pdfimages. Aquí, vamos a utilizar pdftotext para leer documentos PDF.

pdftotext es una herramienta de línea de comandos que extrae el contenido de texto de archivos PDF y lo muestra como texto sin formato. Esta herramienta es especialmente útil cuando se necesita extraer la información textual de los PDF para su posterior procesamiento o análisis. Mediante las opciones, también puede especificar de qué página o páginas extraer el texto.

Requisitos previos

Para realizar un proyecto de lector de PDF para extraer texto, necesitamos que se den los siguientes requisitos previos:

  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. Herramientas de línea de comandos Xpdf instaladas en su sistema. Xpdf es una colección de utilidades PDF que pueden obtenerse en el sitio web de Xpdf. Descárguela desde aquí: https://www.xpdfreader.com/. Establezca el directorio bin de Xpdf en la ruta de las variables de entorno, para acceder a él desde cualquier lugar utilizando la herramienta de línea de comandos.

Pasos para leer archivos PDF en C++

Paso 1 Incluir las cabeceras necesarias

En primer lugar, vamos a añadir los archivos de cabecera necesarios en nuestro archivo main.cpp en la parte superior:

#include <cstdlib>
#include <iostream>
#include <fstream>

Paso 2 Escribir el código C

Escribamos el código C++ que invoca la herramienta de línea de comandos Xpdf para extraer el contenido de texto del documento PDF. Vamos a utilizar el siguiente archivo input.pdf:

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

El ejemplo de código es el siguiente:

//  Incluir biblioteca C
#include <cstdlib>
#include <iostream>
#include <fstream>
#include <cstdio>

using namespace std;

int main() {
    string pdfPath = "input.pdf";
    string outputFilePath = "output.txt";

    string command = "pdftotext " + pdfPath + " " + outputFilePath;
    int status = system(command.c_str());

    if (status == 0) {
        cout << "Text extraction successful." << endl;
    } else {
        cout << "Text extraction failed." << endl;
        return 1;
    }

    ifstream outputFile(outputFilePath);
    if (outputFile.is_open()) {
        string textContent;
        string line;
        while (getline(outputFile, line)) {
            textContent += line + "\n";
        }
        outputFile.close();

        cout << "Text content extracted from PDF document:" << endl;
        cout << textContent << endl;
    } else {
        cout << "Failed to open output file." << endl;
        return 1;
    }

    return 0;
}

Código Explicación

En el código anterior, definimos la variable pdfPath para guardar la ruta al archivo PDF de entrada. Asegúrese de sustituirla por la ruta adecuada a su documento PDF de entrada real.

También definimos la variable outputFilePath para guardar la ruta al archivo de texto de salida que generará Xpdf.

El código ejecuta el comando pdftotext mediante la función system, pasando la ruta del archivo PDF de entrada y la ruta del archivo de texto de salida como argumentos de la línea de comandos. La variable status captura el estado de salida del comando.

Si pdftotext se ejecuta correctamente (indicado por un estado de 0)procedemos a abrir el fichero de texto de salida utilizando ifstream. A continuación, leemos el contenido del texto línea por línea y lo almacenamos en la cadena textContent.

Por último, enviamos el contenido del texto extraído a la consola desde el archivo de salida generado. Si no necesita el archivo de texto de salida editable o desea liberar espacio en disco, al final del programa simplemente bórrelo utilizando el siguiente comando antes de finalizar la función principal:

remove(outputFilePath.c_str());

Paso 3 Compilar y ejecutar el programa

Compila el código C++ y ejecuta el ejecutable. Si se añade pdftotext a la ruta del sistema de variables de entorno, su comando se ejecutará correctamente. El programa genera el archivo de texto de salida y extrae el contenido de texto del documento PDF. A continuación, el texto extraído se muestra en la consola.

El resultado es el siguiente

Cómo leer archivos PDF en C++: Figura 2

Leer archivos PDF en C#

Biblioteca IronPDF

IronPDF es una popular biblioteca PDF de C# que proporciona potentes funcionalidades para trabajar con documentos PDF. Permite a los desarrolladores crear, editar, modificar y leer archivos PDF mediante programación;

La lectura de documentos PDF con la biblioteca IronPDF es un proceso sencillo. La biblioteca ofrece varios métodos y propiedades que permiten a los desarrolladores extraer texto, imágenes, metadatos y otros datos de páginas PDF. La información extraída puede utilizarse para su posterior procesamiento, análisis o visualización dentro de la aplicación.

El siguiente ejemplo de código leer archivo PDF mediante IronPDF:

//Convertir documentos PDF en imágenes o miniaturas
using IronPdf;
using IronSoftware.Drawing;
using System.Collections.Generic;

//  Extracción de contenido de imagen y texto de documentos Pdf

//  abrir un PDF encriptado a 128 bits
var pdf = PdfDocument.FromFile("encrypted.pdf", "password");

//  Obtener todo el texto para ponerlo en un índice de búsqueda
string text = pdf.ExtractAllText();

//  Obtener todas las imágenes
var allImages = pdf.ExtractAllImages();

//  O incluso encontrar el texto y las imágenes precisas para cada página del documento
for (var index = 0 ; index < pdf.PageCount ; index++)
{
    int pageNumber = index + 1;
    text = pdf.ExtractTextFromPage(index);
    List<AnyBitmap> images = pdf.ExtractBitmapsFromPage(index);
    //...
}

Para obtener información más detallada sobre cómo leer documentos PDF, visite el enlace aquí.

Conclusión

En este artículo, aprendimos a leer el contenido de un documento PDF en C++ utilizando la herramienta de línea de comandos Xpdf. Al integrar Xpdf en un programa C++, podemos extraer mediante programación el contenido de texto de archivos PDF en un segundo. Este enfoque nos permite procesar y analizar el texto extraído dentro de nuestras aplicaciones C++.

IronPDF es una potente biblioteca de C# que facilita la lectura y manipulación de archivos PDF. Sus amplias funciones, su facilidad de uso y su fiable motor de renderizado lo convierten en una opción muy popular entre los desarrolladores que trabajan con documentos PDF en sus proyectos de C#

IronPDF es gratuito para el desarrollo y proporciona un prueba gratuita para uso comercial. Más allá de esto, es necesario con licencia con fines comerciales.

< ANTERIOR
Cómo crear archivos PDF en C++
SIGUIENTE >
Cómo convertir HTML a PDF en C++

¿Listo para empezar? Versión: 2024.7 recién publicada

Descarga gratuita de NuGet Descargas totales: 9,974,197 Ver licencias >
123