Wie man PDF-Dateien in C++ anzeigt
PDF-Dateien sind ein weit verbreitetes Format für den Dokumentenaustausch, da sie das Format über verschiedene Plattformen hinweg beibehalten können. In verschiedenen Anwendungen wird das programmgesteuerte Lesen der Inhalte von PDF-Dateien äußerst wertvoll.
In diesem Artikel lernen wir, wie man mit dem Befehlszeilentool Xpdf Text aus PDF-Dateien in C++ anzeigt. Xpdf bietet eine Suite von Kommandozeilenprogrammen und C++-Bibliotheken für die Arbeit mit PDF-Dateien, einschließlich der Textextraktion. Durch die Integration von Xpdf in unser C++ PDF-Viewer-Programm können wir Textinhalte aus PDF-Dateien effizient anzeigen und programmatisch verarbeiten.
Xpdf - C++ Bibliothek und Kommandozeilen-Tools
Xpdf ist eine Open-Source-Software-Suite, die eine Reihe von Tools und Bibliotheken für das Arbeiten mit PDF-Dateien anbietet. Es beinhaltet verschiedene Befehlszeilenprogramme und C++-Bibliotheken, die PDF-bezogene Funktionen wie Parsen, Rendering, Drucken und Textextraktion ermöglichen. Die Befehlszeilentools von Xpdf bieten auch Möglichkeiten, PDF-Dateien direkt vom Terminal aus anzuzeigen.
Eine der Schlüsselkomponenten von Xpdf ist pdftotext, die vor allem für das Extrahieren von Textinhalten aus PDF-Dateien bekannt ist. Wird pdftops jedoch in Kombination mit anderen Tools wie pdfimages verwendet, ermöglicht Xpdf den Benutzern, den PDF-Inhalt auf unterschiedliche Weise anzuzeigen. Das Tool pdftotext erweist sich als wertvoll für die Extraktion von Textinformationen aus PDFs zur Weiterverarbeitung oder Analyse und bietet Optionen zur Angabe der Seiten, aus denen Text extrahiert werden soll.
Voraussetzungen
Bevor wir beginnen, stellen Sie sicher, dass Sie die folgenden Voraussetzungen erfüllt haben:
- Einen C++-Compiler wie GCC oder Clang, der auf Ihrem System installiert ist. Wir werden Code::Blocks IDE für diesen Zweck verwenden.
- Xpdf-Befehlszeilentools sind installiert und über die Befehlszeile zugänglich. Laden Sie Xpdf herunter und installieren Sie die für Ihre Umgebung geeignete Version. Stellen Sie anschließend das Bin-Verzeichnis von Xpdf in den Systemumgebungsvariablenpfad ein, um von jedem Ort im Dateisystem darauf zugreifen zu können.
Erstellen eines PDF-Viewer-Projekts
- Code::Blocks öffnen: Starten Sie die Code::Blocks IDE auf Ihrem Computer.
- Neues Projekt erstellen: Klicken Sie im oberen Menü auf "Datei" und wählen Sie "Neu" aus dem Dropdown-Menü. Klicken Sie dann im Untermenü auf "Projekt".
- Projekttyp wählen: Wählen Sie im Fenster "Neu aus Vorlage" die Option "Konsolenanwendung" und klicken Sie auf "Los". Wählen Sie dann die Sprache "C/C++" aus und klicken Sie auf "Weiter".
- Projektdetails eingeben: Geben Sie im Feld "Projekttitel" Ihrem Projekt einen Namen (z. B. "PDFViewer"). Wählen Sie den Ort, an dem Sie die Projektdateien speichern möchten, und klicken Sie auf "Weiter".
- Compiler auswählen: Wählen Sie den Compiler, den Sie für Ihr Projekt verwenden möchten. Standardmäßig sollte Code::Blocks die auf Ihrem System verfügbaren Compiler automatisch erkannt haben. Falls nicht, wählen Sie einen geeigneten Compiler aus der Liste aus und klicken Sie auf "Fertig".
Schritte zur Anzeige von Text aus PDF in C++
Notwendige Kopfzeilen einfügen
Fügen wir zuerst die benötigten Header-Dateien zu unserer main.cpp-Datei hinzu:
#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
Eingabe- und Ausgabepfade festlegen
string pdfPath = "input.pdf";
string outputFilePath = "output.txt";
string pdfPath = "input.pdf";
string outputFilePath = "output.txt";
In der Funktion main deklarieren wir zwei Zeichenketten: pdfPath und outputFilePath. pdfPath speichert den Pfad zur Eingabe-PDF-Datei, und outputFilePath speichert den Pfad, unter dem der extrahierte Text als einfache Textdatei gespeichert wird.
Die Eingabedatei lautet wie folgt:

Führe den Befehl pdftotext aus
// 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());
Hier konstruieren wir den Befehl pdftotext mithilfe der Variablen pdfPath und outputFilePath, um die PDF-Datei zum Anzeigen ihres Inhalts zu öffnen. Anschließend wird die Funktion system aufgerufen, um den Befehl auszuführen, und ihr Rückgabewert wird in der Variablen status gespeichert.
Status der Textextraktion prüfen
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;
}
Wir überprüfen die Variable status, um festzustellen, ob der Befehl pdftotext erfolgreich ausgeführt wurde. Wenn status gleich 0 ist, bedeutet dies, dass die Textextraktion erfolgreich war, und wir geben eine Erfolgsmeldung aus. Wenn status ungleich Null ist, deutet dies auf einen Fehler hin, und wir geben eine Fehlermeldung aus.
Lesen von extrahiertem Text und Anzeige
// 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;
}
Im obigen Beispielcode öffnen wir die Datei outputFile (die von pdftotext generierte Textdatei), lesen ihren Inhalt Zeile für Zeile und speichern ihn in der Zeichenkette textContent. Schließlich schließen wir die Datei und drucken den extrahierten Textinhalt auf der Konsole aus.
Ausgabedatei entfernen
Wenn Sie die bearbeitbare Ausgabetextdatei nicht benötigen oder Speicherplatz freigeben möchten, löschen Sie sie am Ende des Programms einfach mit dem folgenden Befehl, bevor Sie die Hauptfunktion beenden:
// 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());
Kompilieren und Ausführen des Programms
Kompilieren Sie den Code mit der "Strg+F9"-Tastenkombination. Nach erfolgreicher Kompilierung extrahiert das Ausführen der ausführbaren Datei den Textinhalt aus dem angegebenen PDF-Dokument und zeigt ihn auf der Konsole an. Das Ergebnis ist wie folgt:

PDF-Dateien in C# anzeigen
IronPDF für .NET C# Library ist eine leistungsstarke .NET C# PDF-Bibliothek, die es Benutzern ermöglicht, PDF-Dateien leicht innerhalb ihrer C#-Anwendungen anzuzeigen. Unter Ausnutzung der Chromium-Webbrowser-Engine rendert und zeigt IronPDF PDF-Inhalte, einschließlich Bilder, Schriftarten und komplexe Formatierungen, akkurat an. Mit ihrer benutzerfreundlichen Oberfläche und umfangreichen Funktionen können Entwickler IronPDF nahtlos in ihre C#-Projekte integrieren und Benutzern das effiziente und interaktive Anzeigen von PDF-Dokumenten ermöglichen. Ob zum Anzeigen von Berichten, Rechnungen oder sonstigen PDF-Inhalten, IronPDF bietet eine robuste Lösung für die Erstellung funktionsreicher PDF-Viewer in C#.
Um das IronPDF NuGet-Paket in Visual Studio zu installieren, befolgen Sie die folgenden Schritte:
- Visual Studio öffnen: Starten Sie Visual Studio oder eine andere bevorzugte IDE.
- Projekt erstellen oder öffnen: Erstellen Sie ein neues C#-Projekt oder öffnen Sie ein vorhandenes, in dem Sie das IronPDF-Paket installieren möchten.
- NuGet-Paketmanager öffnen: Gehen Sie in Visual Studio zu "Extras" > "NuGet-Paketmanager" > "NuGet-Pakete für die Lösung verwalten". Alternativ klicken Sie auf den Projektmappen-Explorer und wählen dann "NuGet-Pakete für die Lösung verwalten".
- Nach IronPDF suchen: Klicken Sie im Fenster "NuGet-Paketmanager" auf den "Durchsuchen"-Tab und suchen Sie dann im Suchfeld nach "IronPDF". Alternativ besuchen Sie das NuGet IronPDF-Paket und laden direkt die neueste Version von "IronPDF" herunter.
- IronPDF-Paket auswählen: Finden Sie das "IronPDF"-Paket und klicken Sie darauf, um es für Ihr Projekt auszuwählen.
- IronPDF installieren: Klicken Sie auf die Schaltfläche "Installieren", um das ausgewählte Paket zu installieren.
-
Sie können IronPDF jedoch auch mithilfe der NuGet-Paketkonsole mit dem folgenden Befehl installieren:
Install-Package IronPdf
Mit IronPDF können wir Operationen wie Texte und Bilder aus PDF-Dokumenten extrahieren und sie zur Anzeige in der Konsole anzeigen. Der folgende Code hilft, diese Aufgabe zu erreichen:
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
Für detailliertere Informationen zu IronPDF besuchen Sie bitte die IronPDF-Dokumentation.
Abschluss
In diesem Artikel haben wir gelernt, wie man die Inhalte eines PDF-Dokuments in C++ mithilfe des Xpdf-Befehlszeilen-Tools extrahiert und anzeigt. Dieser Ansatz erlaubt es uns, den extrahierten Text nahtlos in unseren C++-Anwendungen zu verarbeiten und zu analysieren.
Eine Kostenlose Testlizenz steht für kommerzielle Zwecke zur Verfügung.

