HERRAMIENTAS PDF

Cómo ver archivos PDF en C++

Los archivos PDF son un formato muy utilizado para el intercambio de documentos debido a su capacidad para conservar el formato en distintas plataformas. En diversas aplicaciones, la lectura programática del contenido de archivos PDF resulta muy valiosa.

En este artículo, aprenderemos cómo ver texto de archivos PDF en C++ usando la herramienta de línea de comandos Xpdf. Xpdf proporciona un conjunto de utilidades de línea de comandos y bibliotecas de C++ para trabajar con archivos PDF, incluida la extracción de texto. Al integrar Xpdf en nuestro programa de visor de PDF en C++, podemos visualizar eficientemente el contenido de texto de los archivos PDF y procesarlo de forma programática.

Xpdf - Biblioteca en C++ y herramientas de línea de comandos

Xpdf es un conjunto de software de código abierto que ofrece una variedad de herramientas y bibliotecas para trabajar con archivos PDF. Incluye varias utilidades de línea de comandos y bibliotecas C++ que permiten funciones relacionadas con PDF, como el análisis sintáctico, el renderizado, la impresión y la extracción de texto. Las herramientas de línea de comandos de Xpdf también ofrecen formas de ver archivos PDF directamente desde el terminal.

Uno de los componentes clave de Xpdf es pdftotext, que es principalmente conocido por extraer contenido de texto de archivos PDF. Sin embargo, cuando se utiliza en combinación con otras herramientas como pdftops y pdfimages, Xpdf permite a los usuarios ver el contenido del PDF de diferentes maneras. La herramienta pdftotext resulta valiosa para extraer información textual de PDFs para su posterior procesamiento o análisis, y ofrece opciones para especificar de qué páginas extraer texto.

Requisitos previos

Antes de empezar, asegúrese de que cumple los siguientes requisitos previos:

  1. Un compilador de C++ como GCC o Clang instalado en su sistema. Usaremos Code::Blocks IDE para este propósito.

  2. Las herramientas de línea de comandos de Xpdf están instaladas y accesibles desde la línea de comandos. Descarga Xpdf e instala la versión adecuada para tu entorno. A continuación, establezca el directorio bin de Xpdf en la ruta de variables de entorno del sistema para acceder a él desde cualquier ubicación del sistema de archivos.

Creación de un proyecto de visor de PDF

  1. Abre Code::Blocks: Inicia el IDE de Code::Blocks en tu computadora.

  2. Crear un nuevo proyecto: Haz clic en "Archivo" en el menú superior y selecciona "Nuevo" del menú desplegable. A continuación, haga clic en "Proyecto" en el submenú.

  3. Elija el tipo de proyecto: En la ventana "Nuevo desde plantilla", elija "Aplicación de consola" y haga clic en "Ir". A continuación, seleccione el lenguaje "C/C++" y haga clic en "Siguiente".

  4. Ingrese los detalles del proyecto: En el campo "Título del proyecto", asigne un nombre a su proyecto (por ejemplo, "PDFViewer"). Elija la ubicación en la que desea guardar los archivos del proyecto y haga clic en "Siguiente".

  5. Seleccionar compilador: Elija el compilador que desea utilizar para su proyecto. Por defecto, Code::Blocks debería haber detectado automáticamente los compiladores disponibles en su sistema. Si no es así, seleccione un compilador adecuado de la lista y haga clic en "Finalizar".

Pasos para ver texto de un PDF en C++

Incluya las cabeceras necesarias

Primero, agreguemos los archivos de cabecera necesarios a nuestro archivo main.cpp:

#include <cstdlib>
#include <iostream>
#include <fstream>
#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <fstream>
#include <cstdio>
C++

Establecer rutas de entrada y salida

string pdfPath = "input.pdf";
string outputFilePath = "output.txt";
string pdfPath = "input.pdf";
string outputFilePath = "output.txt";
C++

En la función main, declaramos dos cadenas: pdfPath y outputFilePath. pdfPath almacena la ruta al archivo PDF de entrada, y outputFilePath almacena la ruta donde el texto extraído se guardará como un archivo de texto plano.

El archivo de entrada es el siguiente:

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

Ejecute el comando pdftotext

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

Aquí, construimos el comando pdftotext utilizando las variables pdfPath y outputFilePath para abrir el archivo PDF y ver su contenido. La función system se llama a continuación para ejecutar el comando, y su valor de retorno se almacena en la variable status.

Comprobar el estado de la extracción de texto

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

Comprobamos la variable status para ver si el comando pdftotext se ejecutó correctamente. Si status es igual a 0, significa que la extracción de texto fue exitosa, y mostramos un mensaje de éxito. Si el status es diferente de cero, indica un error, y mostramos un mensaje de error.

Leer el texto extraído y mostrarlo

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:" << endl;
    cout << textContent << endl;
} else {
    cout << "Failed to open output file." << endl;
}
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:" << endl;
    cout << textContent << endl;
} else {
    cout << "Failed to open output file." << endl;
}
C++

En el código de ejemplo anterior, abrimos el outputFile (el archivo de texto generado por pdftotext), leemos su contenido línea por línea y lo almacenamos en la cadena textContent. Por último, cerramos el archivo e imprimimos en la consola el contenido del texto extraído.

Eliminar archivo de salida

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

Compilación y ejecución del programa

Construye el código utilizando la tecla rápida "Ctrl+F9". Una vez compilado correctamente, al ejecutar el ejecutable se extraerá el contenido del texto del documento PDF especificado y se mostrará en la consola. El resultado es el siguiente:

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

Ver archivos PDF en C#

IronPDF .NET C# Library es una potente biblioteca de PDF para .NET C# que permite a los usuarios ver fácilmente archivos PDF dentro de sus aplicaciones en C#. Aprovechando el motor del navegador web Chromium, IronPDF renderiza y muestra con precisión el contenido PDF, incluidas imágenes, fuentes y formatos complejos. Con su interfaz fácil de usar y sus amplias funcionalidades, los desarrolladores pueden integrar IronPDF sin problemas en sus proyectos C#, permitiendo a los usuarios ver documentos PDF de forma eficaz e interactiva. Ya sea para mostrar informes, facturas o cualquier otro contenido PDF, IronPDF proporciona una solución sólida para crear visores de PDF ricos en funciones en C#.

Para instalar el paquete IronPDF NuGet en Visual Studio, siga estos pasos:

  1. Abre Visual Studio: Inicia Visual Studio o cualquier otro IDE de tu preferencia.

  2. Cree o abra su proyecto: Cree un nuevo proyecto en C# o abra uno existente donde desee instalar el paquete IronPDF.

  3. Abra el Administrador de Paquetes NuGet: En Visual Studio, vaya a "Herramientas" > "Administrador de Paquetes NuGet" > "Administrar Paquetes NuGet para la Solución". Alternativamente, haga clic en el explorador de soluciones y, a continuación, seleccione "Administrar paquetes NuGet para la solución".

  4. Buscar IronPDF: En la ventana "Administrador de paquetes NuGet", haga clic en la pestaña "Explorar" y luego busque "IronPDF" en la barra de búsqueda. Alternativamente, visite el Paquete NuGet de IronPDF y descargue directamente la última versión de "IronPDF".

  5. Seleccionar paquete de IronPDF: Encuentra el paquete "IronPDF" y haz clic en él para seleccionarlo para tu proyecto.

  6. Instalar IronPDF: Haga clic en el botón "Instalar" para instalar el paquete seleccionado.

  7. Sin embargo, también puede instalar IronPDF utilizando la consola NuGet Package Manager con el siguiente comando:
    :ProductInstall
    :ProductInstall
SHELL

Con IronPDF, podemos realizar operaciones como extraer texto e imágenes de documentos PDF y mostrarlos en la consola para su visualización. El siguiente código ayuda a realizar esta tarea:

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);
    //...
}
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);
    //...
}
Imports IronPdf
Imports IronSoftware.Drawing
Imports System.Collections.Generic

' Extracting Image and Text content from Pdf Documents

' open a 128-bit encrypted PDF
Private pdf = PdfDocument.FromFile("encrypted.pdf", "password")

' Get all text to put in a search index
Private text As String = pdf.ExtractAllText()

' Get all Images
Private allImages = pdf.ExtractAllImages()

' Or even find the precise text and images for each page in the document
For index = 0 To pdf.PageCount - 1
	Dim pageNumber As Integer = index + 1
	text = pdf.ExtractTextFromPage(index)
	Dim images As List(Of AnyBitmap) = pdf.ExtractBitmapsFromPage(index)
	'...
Next index
$vbLabelText   $csharpLabel

Para obtener información más detallada sobre IronPDF, por favor visite la documentación de IronPDF.

Conclusión

En este artículo, aprendimos a extraer y ver el contenido de un documento PDF en C++ utilizando la herramienta de línea de comandos Xpdf. Este enfoque nos permite procesar y analizar el texto extraído dentro de nuestras aplicaciones C++ sin problemas.

Información de Licencias de IronPDF es gratuito para uso en desarrollo, pero los PDF se generan con una marca de agua. Para eliminar la marca de agua y utilizar IronPDF con fines comerciales, puede adquirir una licencia.

También está disponible una licencia de prueba gratuita para pruebas con fines comerciales.

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 convertir PDF a imagen en NodeJS
SIGUIENTE >
Cómo crear archivos PDF en C++