Pruebas en un entorno real
Pruebe en producción sin marcas de agua.
Funciona donde lo necesites.
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 comandosXpdf 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.
Antes de empezar, asegúrese de que cumple los siguientes requisitos previos:
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
string pdfPath = "input.pdf";
string outputFilePath = "output.txt";
string pdfPath = "input.pdf";
string outputFilePath = "output.txt";
IRON VB CONVERTER ERROR developers@ironsoftware.com
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:
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
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
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.
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
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.
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
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:
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:
: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
Para obtener información más detallada sobre IronPDF, visite la página documentació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.
9 productos API .NET para sus documentos de oficina