Zum Fußzeileninhalt springen
PDF-WERKZEUGE

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 werden wir pdftotext verwenden, um PDF-Dokumente zu lesen.

pdftotext ist ein Befehlszeilen-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:

  1. Einen C++-Compiler wie GCC oder Clang, der auf Ihrem System installiert ist. Sie können jede IDE verwenden, die C++-Programmierung unterstützt.
  2. 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

Zunächst fügen wir die notwendigen Header-Dateien an den Anfang unserer main.cpp-Datei 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
C++

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 input.pdf-Datei verwenden:

Wie man PDF-Dateien in C++ liest: Abbildung 1

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

Codeerklärung

Im obigen Code definieren wir die Variable pdfPath, um den Pfad zur Eingabe-PDF-Datei zu speichern. Stellen Sie sicher, dass Sie ihn durch den entsprechenden Pfad zu Ihrem tatsächlichen Input-PDF-Dokument ersetzen.

Wir definieren auch die Variable outputFilePath, um den Pfad zur Ausgabetextdatei zu speichern, die von Xpdf generiert wird.

Der Code führt den pdftotext-Befehl mithilfe der system-Funktion aus, wobei der Eingabe-PDF-Dateipfad und der Ausgabetextdateipfad als Befehlszeilenargumente übergeben werden. Die Variable status erfasst den Rückgabestatus des Befehls.

Wenn pdftotext erfolgreich ausgeführt wird (angezeigt durch einen Status von 0), fahren wir fort, die Ausgabedatei mit ifstream zu öffnen. Wir lesen dann die Textinhalte Zeile für Zeile und speichern sie im String 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());
C++

Schritt 3: Kompilieren und Ausführen des Programms

Kompilieren Sie den C++-Code und führen Sie die .exe aus. Wenn das pdftotext zum Systempfad der Umgebungsvariablen hinzugefügt wird, wird sein 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

Wie man PDF-Dateien in C++ liest: Abbildung 2

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...
}
$vbLabelText   $csharpLabel

Für detailliertere Informationen darüber, wie Sie PDF-Dokumente lesen, besuchen Sie bitte den IronPDF C# PDF Reading Guide.

Abschluss

In diesem Artikel haben wir gelernt, wie man die Inhalte eines PDF-Dokuments in C++ mit dem Xpdf-Befehlszeilen-Tool 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 uns, die extrahierten Texte innerhalb unserer C++-Anwendungen zu verarbeiten und zu analysieren.

IronPDF ist eine leistungsstarke C#-Bibliothek, die das Lesen und Manipulieren von PDF-Dateien erleichtert. Seine umfangreichen Funktionen, Benutzerfreundlichkeit und zuverlässige Rendering-Engine machen es zu einer beliebten Wahl für Entwickler, die mit PDF-Dokumenten in ihren C#-Projekten arbeiten.

IronPDF ist kostenlos für die Entwicklung und bietet eine kostenlose Testversion für die kommerzielle Nutzung. Darüber hinaus muss es für kommerzielle Zwecke lizenziert werden.

Curtis Chau
Technischer Autor

Curtis Chau hat einen Bachelor-Abschluss in Informatik von der Carleton University und ist spezialisiert auf Frontend-Entwicklung mit Expertise in Node.js, TypeScript, JavaScript und React. Leidenschaftlich widmet er sich der Erstellung intuitiver und ästhetisch ansprechender Benutzerschnittstellen und arbeitet gerne mit modernen Frameworks sowie der Erstellung gut strukturierter, optisch ansprechender ...

Weiterlesen