HERRAMIENTAS PDF

Cómo leer archivos PDF en C++

Publicado en 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. Existen las siguientes bibliotecas 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 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 y 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árguelo desde la páginaSitio web de Xpdf. 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>
#include <cstdlib>
#include <iostream>
#include <fstream>
C++

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:

// Include C library
#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;
}
// Include C library
#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++

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());
remove(outputFilePath.c_str());
C++

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

Descripción general de la biblioteca IronPDF C# 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ódigoutilizar IronPDF para leer archivos PDF:

// Rendering PDF documents to Images or Thumbnails
using IronPdf;
using IronSoftware.Drawing;
using System.Collections.Generic;

// Extracting Image and Text content from Pdf Documents

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

// Get all text to put in a search index
string text = pdf.ExtractAllText();

// Get all Images
var allImages = pdf.ExtractAllImages();

// Or even find the precise text and images for each page in the document
for (var index = 0 ; index < pdf.PageCount ; index++)
{
    int pageNumber = index + 1;
    text = pdf.ExtractTextFromPage(index);
    List<AnyBitmap> images = pdf.ExtractBitmapsFromPage(index);
    //...
}
// Rendering PDF documents to Images or Thumbnails
using IronPdf;
using IronSoftware.Drawing;
using System.Collections.Generic;

// Extracting Image and Text content from Pdf Documents

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

// Get all text to put in a search index
string text = pdf.ExtractAllText();

// Get all Images
var allImages = pdf.ExtractAllImages();

// Or even find the precise text and images for each page in the document
for (var index = 0 ; index < pdf.PageCount ; index++)
{
    int pageNumber = index + 1;
    text = pdf.ExtractTextFromPage(index);
    List<AnyBitmap> images = pdf.ExtractBitmapsFromPage(index);
    //...
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

Para obtener información más detallada sobre cómo leer documentos PDF, visite la páginaGuía de lectura de IronPDF C# PDF.

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

Explorar 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 popular para los desarrolladores que trabajan con documentos PDF en sus proyectos de C#.

IronPDF es gratuito para el desarrollo y proporciona unprueba gratuita para uso comercial. Más allá de esto, es necesariolicencia para 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.12 acaba de salir

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