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 muy útil para extraer información textual de 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:
Un compilador de C++ como GCC o Clang instalado en su sistema. UtilizaremosIDE Code::Blocks para este fin.
Abra Code::Blocks: Inicie el IDE de Code::Blocks en su ordenador.
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ú.
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".
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".
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>
string pdfPath = "input.pdf";
string outputFilePath = "output.txt";
string pdfPath = "input.pdf";
string outputFilePath = "output.txt";
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());
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;
}
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;
}
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());
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:
Biblioteca .NET C# de 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 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:
Abra Visual Studio: Inicie Visual Studio o cualquier otro IDE de su preferencia.
Cree o abra su proyecto: Cree un nuevo proyecto C# o abra uno existente en el que desee instalar el paquete IronPDF.
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".
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áginaPaquete NuGet IronPDF y descargue directamente la última versión de "IronPDF".
Seleccione el paquete IronPDF: Busque el paquete "IronPDF" y haga clic en él para seleccionarlo para su proyecto.
Instalar IronPDF: Haga clic en el botón "Instalar" para instalar el paquete seleccionado.
:ProductInstall
Con IronPDF, podemos realizar operaciones como las siguientesextraer 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
Para obtener información más detallada sobre IronPDF, visite la páginaDocumentación de IronPDF.
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 sobre licencias de 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 una licencia.
ALicencia de prueba gratuita también está disponible para pruebas con fines comerciales.
9 productos API .NET para sus documentos de oficina