Wie man PDF-Dateien in C++ liest
PDF (Portable Document Format)-Dateien werden häufig für den Dokumentenaustausch verwendet, und die Möglichkeit, ihre Inhalte programmgesteuert zu lesen, ist in verschiedenen Anwendungen wertvoll. Die folgenden Bibliotheken stehen zur Verfügung, um PDF in C++ zu lesen: Poppler, MuPDF, Haru Free PDF Library, Xpdf und Qpdf.
In diesem Artikel werden wir untersuchen, wie man PDF-Dateien in C++ mit dem Xpdf-Befehlszeilen-Tool liest. Xpdf bietet eine Reihe von Dienstprogrammen zum Arbeiten mit PDF-Dateien, einschließlich der Extraktion von Textinhalten. Durch die Integration von Xpdf in ein C++-Programm können wir den Text aus PDF-Dateien extrahieren und programmgesteuert verarbeiten.
Xpdf - Befehlszeilen-Tools
Xpdf ist eine Open-Source-Software-Suite, die eine Sammlung von Tools und Bibliotheken zum Arbeiten mit PDF (Portable Document Format)-Dateien bereitstellt. Die Xpdf-Suite umfasst mehrere Befehlszeilen-Dienstprogramme und C++-Bibliotheken, die verschiedene PDF-bezogene Funktionen wie Parsen, Rendern, Textextraktion und mehr ermöglichen. Einige wichtige Komponenten von Xpdf umfassen pdfimages, pdftops, pdfinfo und pdftotext. Hier verwenden wir pdftotext zum Lesen von PDF-Dokumenten.
pdftotext ist ein Kommandozeilen-Tool, das Textinhalte aus PDF-Dateien extrahiert und als Klartext ausgibt. Dieses Tool ist besonders nützlich, wenn Sie die Textinformationen aus PDFs für eine weitere Verarbeitung oder Analyse extrahieren müssen. Mit Optionen können Sie auch festlegen, welche Seite oder Seiten extrahiert werden sollen.
Voraussetzungen
Um ein PDF-Lesetool-Projekt zur Textextraktion zu erstellen, benötigen wir die folgenden Voraussetzungen:
- Einen C++-Compiler wie GCC oder Clang, der auf Ihrem System installiert ist. Sie können jede IDE verwenden, die C++-Programmierung unterstützt.
- Xpdf-Befehlszeilenprogramme, die auf Ihrem System installiert sind. Xpdf ist eine Sammlung von PDF-Dienstprogrammen, die von der Xpdf-Website bezogen werden kann. Laden Sie es von der Xpdf Website herunter. Legen Sie das Bin-Verzeichnis von Xpdf im Pfad der Umgebungsvariablen fest, um es von überall aus mit dem Befehlszeilenprogramm zugänglich zu machen.
Schritte zum Lesen des PDF-Dateiformats in C++
Schritt 1: Einfügen der erforderlichen Kopfzeilen
Als Erstes fügen wir die notwendigen Header-Dateien ganz oben in unsere Datei main.cpp ein:
#include <cstdlib> // For system call
#include <iostream> // For basic input and output
#include <fstream> // For file stream operations
#include <cstdlib> // For system call
#include <iostream> // For basic input and output
#include <fstream> // For file stream operations
Schritt 2: Schreiben des C++-Codes
Schreiben wir den C++-Code, der das Xpdf-Befehlszeilen-Tool aufruft, um Textinhalte aus dem PDF-Dokument zu extrahieren. Wir werden die folgende Datei input.pdf verwenden:

Das Codebeispiel sieht wie folgt aus:
#include <cstdlib>
#include <iostream>
#include <fstream>
using namespace std;
int main() {
// Specify the input and output file paths
string pdfPath = "input.pdf";
string outputFilePath = "output.txt";
// Construct the command to run pdftotext
string command = "pdftotext " + pdfPath + " " + outputFilePath;
int status = system(command.c_str());
// Check if the command executed successfully
if (status == 0) {
cout << "Text extraction successful." << endl;
} else {
cout << "Text extraction failed." << endl;
return 1; // Exit the program with error code
}
// 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"; // Append each line to the textContent
}
outputFile.close();
// Display the extracted text
cout << "Text content extracted from PDF document:" << endl;
cout << textContent << endl;
} else {
cout << "Failed to open output file." << endl;
return 1; // Exit the program with error code
}
return 0; // Exit the program successfully
}
#include <cstdlib>
#include <iostream>
#include <fstream>
using namespace std;
int main() {
// Specify the input and output file paths
string pdfPath = "input.pdf";
string outputFilePath = "output.txt";
// Construct the command to run pdftotext
string command = "pdftotext " + pdfPath + " " + outputFilePath;
int status = system(command.c_str());
// Check if the command executed successfully
if (status == 0) {
cout << "Text extraction successful." << endl;
} else {
cout << "Text extraction failed." << endl;
return 1; // Exit the program with error code
}
// 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"; // Append each line to the textContent
}
outputFile.close();
// Display the extracted text
cout << "Text content extracted from PDF document:" << endl;
cout << textContent << endl;
} else {
cout << "Failed to open output file." << endl;
return 1; // Exit the program with error code
}
return 0; // Exit the program successfully
}
Codeerklärung
Im obigen Code definieren wir die Variable pdfPath, um den Pfad zur Eingabe-PDF-Datei zu speichern. Ersetzen Sie diese unbedingt durch den korrekten Pfad zu Ihrem tatsächlichen PDF-Dokument.
Wir definieren außerdem die Variable outputFilePath, um den Pfad zur Ausgabedatei zu speichern, die von Xpdf generiert wird.
Der Code führt den Befehl pdftotext mithilfe der Funktion system aus und übergibt dabei den Pfad der Eingabe-PDF-Datei und den Pfad der Ausgabetextdatei als Befehlszeilenargumente. Die Variable status erfasst den Exit-Status des Befehls.
Wenn pdftotext erfolgreich ausgeführt wird (erkennbar am Status 0), fahren wir mit dem Öffnen der Ausgabedatei mithilfe von ifstream fort. Anschließend lesen wir den Textinhalt Zeile für Zeile und speichern ihn in der Zeichenkette textContent.
Schließlich geben wir die extrahierten Textinhalte von der generierten Ausgabedatei in die Konsole aus. 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(outputFilePath.c_str());
remove(outputFilePath.c_str());
Schritt 3: Kompilieren und Ausführen des Programms
Kompilieren Sie den C++-Code und führen Sie die .exe aus. Wenn pdftotext zum Systempfad der Umgebungsvariablen hinzugefügt wird, wird der zugehörige Befehl erfolgreich ausgeführt. Das Programm generiert die Ausgabetextdatei und extrahiert Textinhalte aus dem PDF-Dokument. Der extrahierte Text wird dann in der Konsole angezeigt.
Das Ergebnis sieht folgendermaßen aus

Lesen von PDF-Dateien in C
IronPDF-Bibliothek
IronPDF ist eine beliebte C#-PDF-Bibliothek, die leistungsstarke Funktionalitäten zum Arbeiten mit PDF-Dokumenten bietet. Sie ermöglicht Entwicklern das Erstellen, Bearbeiten, Modifizieren und Lesen von PDF-Dateien auf programmgesteuerte Weise.
Das Lesen von PDF-Dokumenten mit der IronPDF-Bibliothek ist ein einfacher Prozess. Die Bibliothek bietet verschiedene Methoden und Eigenschaften, die es Entwicklern ermöglichen, Text, Bilder, Metadaten und andere Daten von PDF-Seiten zu extrahieren. Die extrahierten Informationen können für eine weitere Verarbeitung, Analyse oder Anzeige innerhalb der Anwendung verwendet werden.
Das folgende Codebeispiel wird IronPDF zum Lesen von PDF-Dateien verwenden:
// Import necessary namespaces
using IronPdf; // For PDF functionalities
using IronSoftware.Drawing; // For handling images
using System.Collections.Generic; // For using the List
// Example of extracting text and images from PDF using IronPDF
// Open a 128-bit encrypted PDF
var pdf = PdfDocument.FromFile("encrypted.pdf", "password");
// Get all text from the PDF
string text = pdf.ExtractAllText();
// Extract all images from the PDF
var allImages = pdf.ExtractAllImages();
// Iterate over each page to extract text and images
for (var index = 0; index < pdf.PageCount; index++) {
int pageNumber = index + 1;
text = pdf.ExtractTextFromPage(index);
List<AnyBitmap> images = pdf.ExtractBitmapsFromPage(index);
// Perform actions with text and images...
}
// Import necessary namespaces
using IronPdf; // For PDF functionalities
using IronSoftware.Drawing; // For handling images
using System.Collections.Generic; // For using the List
// Example of extracting text and images from PDF using IronPDF
// Open a 128-bit encrypted PDF
var pdf = PdfDocument.FromFile("encrypted.pdf", "password");
// Get all text from the PDF
string text = pdf.ExtractAllText();
// Extract all images from the PDF
var allImages = pdf.ExtractAllImages();
// Iterate over each page to extract text and images
for (var index = 0; index < pdf.PageCount; index++) {
int pageNumber = index + 1;
text = pdf.ExtractTextFromPage(index);
List<AnyBitmap> images = pdf.ExtractBitmapsFromPage(index);
// Perform actions with text and images...
}
' Import necessary namespaces
Imports IronPdf ' For PDF functionalities
Imports IronSoftware.Drawing ' For handling images
Imports System.Collections.Generic ' For using the List
' Example of extracting text and images from PDF using IronPDF
' Open a 128-bit encrypted PDF
Private pdf = PdfDocument.FromFile("encrypted.pdf", "password")
' Get all text from the PDF
Private text As String = pdf.ExtractAllText()
' Extract all images from the PDF
Private allImages = pdf.ExtractAllImages()
' Iterate over each page to extract text and images
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)
' Perform actions with text and images...
Next index
Für detailliertere Informationen darüber, wie Sie PDF-Dokumente lesen, besuchen Sie bitte den IronPDF C# PDF Reading Guide.
Fazit
In diesem Artikel haben wir gelernt, wie man die Inhalte eines PDF-Dokuments in C++ mit dem Xpdf-Befehlszeilentool liest. Durch die Integration von Xpdf in ein C++-Programm können wir Textinhalte aus PDF-Dateien innerhalb von Sekunden programmgesteuert extrahieren. Dieser Ansatz ermöglicht es, die extrahierten Texte innerhalb unserer C++-Anwendungen weiter zu verarbeiten und zu analysieren.
IronPDF ist eine leistungsstarke C#-Bibliothek, die das Lesen und Bearbeiten von PDF-Dateien vereinfacht. Ihr umfangreicher Funktionsumfang, die einfache Handhabung und die zuverlässige Rendering-Engine machen IronPDF zu einer beliebten Wahl für Entwickler, die in ihren C#-Projekten mit PDF-Dokumenten arbeiten.
IronPDF ist für die Entwicklung kostenlos nutzbar und bietet eine kostenlose Testversion für die kommerzielle Nutzung. Für den kommerziellen Einsatz ist eine Lizenzierung erforderlich.

