Saltar al pie de página
HERRAMIENTAS PDF

Cómo Leer Archivos PDF en C++

Los archivos PDF (Formato de Documento Portátil) son ampliamente utilizados para el intercambio de documentos, y poder leer su contenido de forma programática es valioso en varias aplicaciones. Las siguientes bibliotecas están disponibles para leer PDF en C++: Poppler, MuPDF, Haru free PDF library, Xpdf y Qpdf.

En este artículo, exploraremos cómo leer archivos PDF en C++ utilizando la herramienta de línea de comandos Xpdf. Xpdf proporciona una gama de utilidades para trabajar con archivos PDF, incluyendo la extracción de contenido de texto. Al integrar Xpdf en un programa C++, podemos extraer el texto de archivos PDF y procesarlo de forma programática.

Xpdf - Herramientas de línea de comandos

Xpdf es un conjunto de software de código abierto que proporciona una colección de herramientas y bibliotecas para trabajar con archivos PDF (Formato de Documento Portátil). La suite Xpdf incluye varias utilidades de línea de comandos y bibliotecas C++ que permiten diversas funcionalidades relacionadas con PDF, como el análisis, renderizado, extracción de texto y más. Algunos componentes clave de Xpdf incluyen pdfimages, pdftops, pdfinfo y pdftotext. Aquí vamos a usar pdftotext para leer documentos PDF.

pdftotext es una herramienta de línea de comandos que extrae contenido de texto de archivos PDF y lo genera como texto plano. Esta herramienta es particularmente útil cuando necesitas extraer la información textual de PDFs para un procesamiento o análisis posterior. Usando opciones, también puedes especificar de qué página o páginas extraer texto.

Requisitos previos

Para hacer un proyecto de lector de PDF para extraer texto, necesitamos tener en cuenta los siguientes requisitos previos:

  1. Un compilador de C++ como GCC o Clang instalado en tu sistema. Puedes usar cualquier IDE que soporte programación C++.
  2. Herramientas de línea de comandos Xpdf instaladas en tu sistema. Xpdf es una colección de utilidades PDF que se pueden obtener desde el sitio web de Xpdf. Descárguelo desde el Sitio Web de Xpdf. Establece el directorio bin de Xpdf en la ruta de las variables de entorno, para acceder a él desde cualquier lugar usando la herramienta de línea de comandos.

Pasos para leer archivos PDF en C++

Paso 1: Incluir las cabeceras necesarias

Primero, agreguemos los archivos de encabezado necesarios en nuestro archivo main.cpp en la parte superior:

#include <cstdlib>  // For system call
#include <iostream> // For basic input and output
#include <fstream>  // For file stream operations
#include <cstdlib>  // For system call
#include <iostream> // For basic input and output
#include <fstream>  // For file stream operations
C++

Paso 2: Escribir el código C++

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

Cómo Leer Archivos PDF en C++: Figura 1

El ejemplo de código es el siguiente:

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

using namespace std;

int main() {
    // Specify the input and output file paths
    string pdfPath = "input.pdf";
    string outputFilePath = "output.txt";

    // Construct the command to run pdftotext
    string command = "pdftotext " + pdfPath + " " + outputFilePath;
    int status = system(command.c_str());

    // Check if the command executed successfully
    if (status == 0) {
        cout << "Text extraction successful." << endl;
    } else {
        cout << "Text extraction failed." << endl;
        return 1; // Exit the program with error code
    }

    // Open the output file to read the extracted text
    ifstream outputFile(outputFilePath);
    if (outputFile.is_open()) {
        string textContent;
        string line;
        while (getline(outputFile, line)) {
            textContent += line + "\n"; // Append each line to the textContent
        }
        outputFile.close();

        // Display the extracted text
        cout << "Text content extracted from PDF document:" << endl;
        cout << textContent << endl;
    } else {
        cout << "Failed to open output file." << endl;
        return 1; // Exit the program with error code
    }

    return 0; // Exit the program successfully
}
#include <cstdlib>
#include <iostream>
#include <fstream>

using namespace std;

int main() {
    // Specify the input and output file paths
    string pdfPath = "input.pdf";
    string outputFilePath = "output.txt";

    // Construct the command to run pdftotext
    string command = "pdftotext " + pdfPath + " " + outputFilePath;
    int status = system(command.c_str());

    // Check if the command executed successfully
    if (status == 0) {
        cout << "Text extraction successful." << endl;
    } else {
        cout << "Text extraction failed." << endl;
        return 1; // Exit the program with error code
    }

    // Open the output file to read the extracted text
    ifstream outputFile(outputFilePath);
    if (outputFile.is_open()) {
        string textContent;
        string line;
        while (getline(outputFile, line)) {
            textContent += line + "\n"; // Append each line to the textContent
        }
        outputFile.close();

        // Display the extracted text
        cout << "Text content extracted from PDF document:" << endl;
        cout << textContent << endl;
    } else {
        cout << "Failed to open output file." << endl;
        return 1; // Exit the program with error code
    }

    return 0; // Exit the program successfully
}
C++

Explicación del código

En el código anterior, definimos la variable pdfPath para contener la ruta del archivo PDF de entrada. Asegúrate de reemplazarlo con la ruta adecuada a tu documento PDF de entrada real.

También definimos la variable outputFilePath para contener la ruta del archivo de texto de salida que será generado por Xpdf.

El código ejecuta el comando pdftotext usando 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 con éxito (indicado por un estado de 0), procedemos a abrir el archivo de texto de salida usando ifstream. Luego leemos el contenido del texto línea por línea y lo almacenamos en la cadena textContent.

Finalmente, mostramos el contenido del texto extraído en la consola desde el archivo de salida generado. Si no necesitas el archivo de texto de salida editable o deseas liberar espacio en disco, al final del programa simplemente elimínalo usando el siguiente comando antes de terminar la función principal:

remove(outputFilePath.c_str());
remove(outputFilePath.c_str());
C++

Paso 3: Compilar y ejecutar el programa

Compila el código en C++ y ejecuta el archivo ejecutable. Si pdftotext está agregado 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 contenido de texto del documento PDF. El texto extraído se muestra luego en la consola.

El resultado es el siguiente

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

Lectura de archivos PDF en C#

Biblioteca IronPDF

IronPDF es una popular biblioteca de PDF de C# que proporciona funcionalidades poderosas para trabajar con documentos PDF. Permite a los desarrolladores crear, editar, modificar y leer archivos PDF de forma programática.

Leer documentos PDF usando 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 las páginas PDF. La información extraída puede ser utilizada para un procesamiento, análisis o visualización adicional dentro de la aplicación.

El siguiente ejemplo de código usará IronPDF para leer archivos PDF:

// Import necessary namespaces
using IronPdf; // For PDF functionalities
using IronSoftware.Drawing; // For handling images
using System.Collections.Generic; // For using the List

// Example of extracting text and images from PDF using IronPDF

// Open a 128-bit encrypted PDF
var pdf = PdfDocument.FromFile("encrypted.pdf", "password");

// Get all text from the PDF
string text = pdf.ExtractAllText();

// Extract all images from the PDF
var allImages = pdf.ExtractAllImages();

// Iterate over each page to extract text and images
for (var index = 0; index < pdf.PageCount; index++) {
    int pageNumber = index + 1;
    text = pdf.ExtractTextFromPage(index);
    List<AnyBitmap> images = pdf.ExtractBitmapsFromPage(index);
    // Perform actions with text and images...
}
// Import necessary namespaces
using IronPdf; // For PDF functionalities
using IronSoftware.Drawing; // For handling images
using System.Collections.Generic; // For using the List

// Example of extracting text and images from PDF using IronPDF

// Open a 128-bit encrypted PDF
var pdf = PdfDocument.FromFile("encrypted.pdf", "password");

// Get all text from the PDF
string text = pdf.ExtractAllText();

// Extract all images from the PDF
var allImages = pdf.ExtractAllImages();

// Iterate over each page to extract text and images
for (var index = 0; index < pdf.PageCount; index++) {
    int pageNumber = index + 1;
    text = pdf.ExtractTextFromPage(index);
    List<AnyBitmap> images = pdf.ExtractBitmapsFromPage(index);
    // Perform actions with text and images...
}
$vbLabelText   $csharpLabel

Para obtener información más detallada sobre cómo leer documentos PDF, por favor visita la Guía de Lectura de PDF en C# con IronPDF.

Conclusión

En este artículo, aprendimos cómo leer el contenido de un documento PDF en C++ usando la herramienta de línea de comandos Xpdf. Al integrar Xpdf en un programa C++, podemos extraer contenido de texto de archivos PDF de forma programática en segundos. Este enfoque nos permite procesar y analizar el texto extraído dentro de nuestras aplicaciones en C++.

IronPDF es una poderosa biblioteca de C# que facilita la lectura y manipulación de archivos PDF. Sus amplias características, facilidad de uso y motor de renderizado confiable lo convierten en una opción popular para desarrolladores que trabajan con documentos PDF en sus proyectos en C#.

IronPDF es gratuito para el desarrollo y proporciona una prueba gratuita para uso comercial. Más allá de esto, necesita ser licenciado para fines comerciales.

Curtis Chau
Escritor Técnico

Curtis Chau tiene una licenciatura en Ciencias de la Computación (Carleton University) y se especializa en el desarrollo front-end con experiencia en Node.js, TypeScript, JavaScript y React. Apasionado por crear interfaces de usuario intuitivas y estéticamente agradables, disfruta trabajando con frameworks modernos y creando manuales bien ...

Leer más