Passer au contenu du pied de page
OUTILS PDF

Comment visualiser des fichiers PDF en C++

Les fichiers PDF sont un format largement utilisé pour l'échange de documents en raison de leur capacité à préserver la mise en forme sur différentes plateformes. Dans diverses applications, la lecture programmatique du contenu des fichiers PDF devient inestimable.

Dans cet article, nous allons apprendre comment afficher du texte à partir de fichiers PDF en C++ en utilisant l'outil en ligne de commande Xpdf. Xpdf fournit une suite d'utilitaires en ligne de commande et de bibliothèques C++ pour travailler avec des fichiers PDF, y compris l'extraction de texte. En intégrant Xpdf à notre programme de visionneuse PDF en C++, nous pouvons visualiser efficacement le contenu textuel des fichiers PDF et le traiter de manière programmatique.

Xpdf - Bibliothèque C++ et outils en ligne de commande

Xpdf est une suite logicielle open-source qui offre une gamme d'outils et de bibliothèques pour travailler avec des fichiers PDF. Il comprend divers utilitaires en ligne de commande et bibliothèques C++ qui permettent des fonctionnalités liées aux PDF, telles que l'analyse, le rendu, l'impression et l'extraction de texte. Les outils en ligne de commande de Xpdf offrent également des moyens de visualiser des fichiers PDF directement depuis le terminal.

L'un des principaux composants de Xpdf est pdftotext, principalement connu pour l'extraction de contenu textuel à partir de fichiers PDF. Cependant, lorsqu'il est utilisé en combinaison avec d'autres outils comme pdftops et pdfimages, Xpdf permet aux utilisateurs de visualiser le contenu du PDF de différentes manières. L'outil pdftotext s'avère précieux pour l'extraction d'informations textuelles à partir de PDF pour un traitement ou une analyse ultérieurs, et il offre des options pour spécifier les pages à extraire.

Prérequis

Avant de commencer, assurez-vous que vous avez en place les prérequis suivants :

  1. Un compilateur C++ comme GCC ou Clang installé sur votre système. Nous utiliserons Code::Blocks IDE à cette fin.
  2. Outils en ligne de commande Xpdf installés et accessibles depuis la ligne de commande. Téléchargez Xpdf et installez la version adaptée à votre environnement. Ensuite, définissez le répertoire bin de Xpdf dans le chemin des variables d'environnement système pour y accéder depuis n'importe quel emplacement sur le système de fichiers.

Créer un projet de visionneuse PDF

  1. Ouvrir Code::Blocks : Lancez l'IDE Code::Blocks sur votre ordinateur.
  2. Créer un nouveau projet : Cliquez sur "Fichier" dans le menu supérieur et sélectionnez "Nouveau" dans le menu déroulant. Ensuite, cliquez sur "Projet" dans le sous-menu.
  3. Choisir le type de projet : Dans la fenêtre "Nouveau à partir du modèle", choisissez "Application console", et cliquez sur "Go". Ensuite, sélectionnez la langue "C/C++" et cliquez sur "Suivant".
  4. Entrer les détails du projet : Dans le champ "Titre du projet", donnez un nom à votre projet (par ex., "PDFViewer"). Choisissez l'emplacement où vous souhaitez enregistrer les fichiers du projet, et cliquez sur "Suivant".
  5. Sélectionnez le compilateur : Choisissez le compilateur que vous souhaitez utiliser pour votre projet. Par défaut, Code::Blocks devrait avoir automatiquement détecté les compilateurs disponibles sur votre système. Sinon, sélectionnez un compilateur approprié dans la liste, et cliquez sur "Terminer".

Étapes pour afficher du texte à partir de PDF en C++

Inclure les en-têtes nécessaires

Tout d'abord, ajoutons les fichiers d'en-tête requis à notre fichier main.cpp :

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

using namespace std; // Use standard namespace for convenience
#include <cstdlib>
#include <iostream>
#include <fstream>
#include <cstdio>

using namespace std; // Use standard namespace for convenience
C++

Définir les chemins d'entrée et de sortie

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

Dans la fonction main, nous déclarons deux chaînes : pdfPath et outputFilePath. pdfPath stocke le chemin du fichier PDF d'entrée, et outputFilePath stocke le chemin où le texte extrait sera enregistré comme fichier texte brut.

Le fichier d'entrée est le suivant :

Comment afficher des fichiers PDF en C++ : Figure 1

Exécuter la commande pdftotext

// Construct the command to execute pdftotext with input and output paths
string command = "pdftotext " + pdfPath + " " + outputFilePath;

// Execute the command using system function and capture the status
int status = system(command.c_str());
// Construct the command to execute pdftotext with input and output paths
string command = "pdftotext " + pdfPath + " " + outputFilePath;

// Execute the command using system function and capture the status
int status = system(command.c_str());
C++

Ici, nous construisons la commande pdftotext en utilisant les variables pdfPath et outputFilePath pour ouvrir le fichier PDF et en visualiser le contenu. La fonction system est ensuite appelée pour exécuter la commande, et sa valeur de retour est stockée dans la variable status.

Vérifier l'état d'extraction du texte

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

Nous vérifions la variable status pour voir si la commande pdftotext a bien été exécutée. Si status est égal à 0, cela signifie que l'extraction du texte a réussi, et nous imprimons un message de succès. Si le status est non nul, cela indique une erreur, et nous imprimons un message d'erreur.

Lire le texte extrait et l'afficher

// Open the output file to read the extracted text
ifstream outputFile(outputFilePath);
if (outputFile.is_open()) 
{ 
    string textContent;
    string line;
    while (getline(outputFile, line)) 
    {
        textContent += line + "\n"; // Concatenate each line to the text content
    }
    outputFile.close();
    cout << "Text content extracted from PDF:" << endl;
    cout << textContent << endl;
} 
else 
{
    cout << "Failed to open output file." << endl;
}
// Open the output file to read the extracted text
ifstream outputFile(outputFilePath);
if (outputFile.is_open()) 
{ 
    string textContent;
    string line;
    while (getline(outputFile, line)) 
    {
        textContent += line + "\n"; // Concatenate each line to the text content
    }
    outputFile.close();
    cout << "Text content extracted from PDF:" << endl;
    cout << textContent << endl;
} 
else 
{
    cout << "Failed to open output file." << endl;
}
C++

Dans le code d'exemple ci-dessus, nous ouvrons le outputFile (le fichier texte généré par pdftotext), lisons son contenu ligne par ligne, et le stockons dans la chaîne textContent. Enfin, nous fermons le fichier et imprimons le contenu du texte extrait sur la console.

Supprimer le fichier de sortie

Si vous n'avez pas besoin du fichier texte de sortie modifiable ou si vous souhaitez libérer de l'espace disque, à la fin du programme, il suffit de le supprimer avant de terminer la fonction main avec la commande suivante :

// Remove the output file to free up disk space and if output is not needed
remove(outputFilePath.c_str());
// Remove the output file to free up disk space and if output is not needed
remove(outputFilePath.c_str());
C++

Compiler et exécuter le programme

Construisez le code en utilisant le raccourci "Ctrl+F9". Après une compilation réussie, l'exécution de l'exécutable extraira le contenu texte du document PDF spécifié et l'affichera sur la console. Le résultat est le suivant :

Comment afficher des fichiers PDF en C++ : Figure 2

Afficher des fichiers PDF en C#

IronPDF .NET C# Library est une puissante bibliothèque PDF .NET C# qui permet aux utilisateurs d'afficher facilement des fichiers PDF dans leurs applications C#. En tirant parti du moteur de navigateur web Chromium, IronPDF rend et affiche avec précision le contenu PDF, y compris les images, les polices, et les mises en forme complexes. Avec son interface conviviale et ses nombreuses fonctionnalités, les développeurs peuvent intégrer facilement IronPDF à leurs projets C#, permettant aux utilisateurs de visualiser efficacement et de manière interactive les documents PDF. Que ce soit pour afficher des rapports, des factures, ou tout autre contenu PDF, IronPDF fournit une solution robuste pour créer des visionneuses PDF riche en fonctionnalités en C#.

Pour installer le package NuGet IronPDF dans Visual Studio, suivez ces étapes :

  1. Ouvrir Visual Studio : Lancez Visual Studio ou tout autre IDE de votre choix.
  2. Créez ou ouvrez votre projet : Créez un nouveau projet C# ou ouvrez un projet existant où vous souhaitez installer le package IronPDF.
  3. Ouvrir le gestionnaire de packages NuGet : Dans Visual Studio, allez dans "Outils" > "Gestionnaire de packages NuGet" > "Gérer les packages NuGet pour la solution". Alternativement, cliquez sur l'explorateur de solutions puis sélectionnez "Gérer les packages NuGet pour la solution".
  4. Chercher IronPDF : Dans la fenêtre "Gestionnaire des packages NuGet", cliquez sur l'onglet "Parcourir", puis cherchez "IronPDF" dans la barre de recherche. Alternativement, visitez le NuGet IronPDF Package et téléchargez directement la dernière version de "IronPDF".
  5. Sélectionner le package IronPDF : Recherchez le package "IronPDF" et cliquez dessus pour le sélectionner pour votre projet.
  6. Installer IronPDF : Cliquez sur le bouton "Installer" pour installer le package sélectionné.
  7. Cependant, vous pouvez également installer IronPDF en utilisant la console du gestionnaire de packages NuGet avec la commande suivante :

    Install-Package IronPdf

Avec IronPDF, nous pouvons effectuer des opérations telles que extraire du texte et des images à partir de documents PDF et les afficher dans la console pour visualisation. La conformité PDF/A garantit la préservation et l'accessibilité du contenu, ce qui le rend idéal pour l'archivage.

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);
    // Further processing here...
}
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);
    // Further processing here...
}
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)
	' Further processing here...
Next index
$vbLabelText   $csharpLabel

Pour plus d'informations détaillées sur IronPDF, veuillez visiter la Documentation IronPDF.

Conclusion

Dans cet article, nous avons appris à extraire et visualiser le contenu d'un document PDF en C++ en utilisant l'outil en ligne de commande Xpdf. Cette approche nous permet de traiter et d'analyser le texte extrait au sein de nos applications C++ de manière transparente.

Une Licence d'essai gratuite est disponible pour tester à des fins commerciales.

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes ...

Lire la suite