HERRAMIENTAS PDF

Cómo ver archivos PDF en C++

Actualizado 2 de agosto, 2023
Compartir:

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 a visualizar texto de archivos PDF en C++ utilizando la herramienta de línea de comandos Xpdf. Xpdf proporciona un conjunto de utilidades de línea de comandos y bibliotecas C++ para trabajar con archivos PDF, incluida la extracción de texto. Al integrar Xpdf en nuestro programa visor de PDF en C++, podemos visualizar eficazmente el contenido de texto de los archivos PDF y procesarlo mediante programación.

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

Xpdf es un paquete de software de código abierto que ofrece una serie 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, conocido principalmente 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 los PDF para su posterior procesamiento o análisis, y ofrece opciones para especificar de qué páginas extraer el 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. Utilizaremos Código::Bloques IDE para este fin.
  2. Herramientas de línea de comandos de Xpdf instaladas y accesibles desde la línea de comandos. Descargar e instala la versión de Xpdf adecuada a tu entorno. A continuación, establezca el directorio bin de Xpdf en la ruta de las 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. Abra Code::Blocks: Inicie el IDE de Code::Blocks en su ordenador.
  2. Crea un nuevo proyecto: Haz clic en "Archivo" en el menú superior y selecciona "Nuevo" en el menú desplegable. A continuación, haga clic en "Proyecto" en el submenú.
  3. Elija el tipo de proyecto: En la ventana "Nuevo a partir de 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. Introduzca 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. Seleccione el 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

En primer lugar, vamos a añadir 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>
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

Establecer rutas de entrada y salida

string pdfPath = "input.pdf";
string outputFilePath = "output.txt";
string pdfPath = "input.pdf";
string outputFilePath = "output.txt";
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   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 se guardará el texto extraído como archivo de texto plano.

El archivo de entrada es el siguiente:

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

Ejecutar 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());
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

Aquí, construimos el comando pdftotext usando las variables pdfPath y outputFilePath para abrir el archivo PDF y ver su contenido. A continuación, se llama a la función system 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; 
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

Comprobamos la variable status para ver si el comando pdftotext se ha ejecutado correctamente. Si status es igual a 0, significa que la extracción de texto se ha realizado correctamente, e imprimimos un mensaje de éxito. Si status es distinto de cero, indica un error, e imprimimos 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;
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

En el código de ejemplo anterior, abrimos el archivo de salida. (el fichero de texto generado por pdftotext.)leerá su contenido línea por línea y lo almacenará 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());
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   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 es una potente biblioteca PDF .NET C# que permite a los usuarios visualizar fácilmente archivos PDF dentro de sus aplicaciones 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 ofrece una solución sólida para crear visores de PDF con muchas funciones en C#

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

  1. Abra Visual Studio: Inicie Visual Studio o cualquier otro IDE de su preferencia.
  2. Cree o abra su proyecto: Cree un nuevo proyecto C# o abra uno existente en el que desee instalar el paquete IronPDF.
  3. Abre el gestor de paquetes NuGet: En Visual Studio, ve a "Herramientas" > "Gestor de paquetes NuGet" > "Gestionar 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. Busque IronPDF: En la ventana "NuGet Package Manager", haga clic en la pestaña "Examinar" y, a continuación, busque "IronPDF" en la barra de búsqueda. También puede visitar la página Sitio web de NuGet y descargue directamente la última versión de "IronPDF".
  5. Seleccione el paquete IronPDF: Busque el paquete "IronPDF" y haga clic en él para seleccionarlo para su 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

Con IronPDF, podemos extraer texto e imágenes 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;

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

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

'  abrir un PDF encriptado a 128 bits
Private pdf = PdfDocument.FromFile("encrypted.pdf", "password")

'  Obtener todo el texto para ponerlo en un índice de búsqueda
Private text As String = pdf.ExtractAllText()

'  Obtener todas las imágenes
Private allImages = pdf.ExtractAllImages()

'  O incluso encontrar el texto y las imágenes precisas para cada página del documento
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
VB   C#

Para obtener información más detallada sobre IronPDF, visite la página documentación.

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.

IronPDF es de uso gratuito para fines de 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 un licencia.

A licencia de prueba gratuita también está disponible para pruebas con fines comerciales.

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

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

Comenzar prueba gratuita Descargas totales: 9,541,998
Ver licencias >