Zum Fußzeileninhalt springen
PDF-WERKZEUGE

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 Text aus PDF-Dateien in C++ mithilfe des Xpdf Befehlszeilen-Tools anzeigen kann. Xpdf bietet eine Suite von Befehlszeilenprogrammen und C++-Bibliotheken zum Arbeiten mit PDF-Dateien, einschließlich Textextraktion. Durch die Integration von Xpdf in unser C++ PDF-Viewer-Programm können wir PDF-Textinhalte effizient anzeigen und programmgesteuert verarbeiten.

Xpdf - C++-Bibliothek und Befehlszeilen-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.

Einer der Hauptbestandteile von Xpdf ist pdftotext, das hauptsächlich für die Textextraktion aus PDF-Dateien bekannt ist. Wenn jedoch in Kombination mit anderen Tools wie pdftops und pdfimages verwendet, ermöglicht Xpdf es den Benutzern, die PDF-Inhalte auf verschiedene Weise anzuzeigen. Das pdftotext-Tool erweist sich als wertvoll, um Textinformationen aus PDFs für weitere Verarbeitung oder Analyse zu extrahieren, und bietet Optionen, um anzugeben, welche Seiten extrahiert werden sollen.

Voraussetzungen

Bevor wir beginnen, stellen Sie sicher, dass Sie die folgenden Voraussetzungen erfüllt haben:

  1. Einen C++-Compiler wie GCC oder Clang, der auf Ihrem System installiert ist. Wir werden Code::Blocks IDE für diesen Zweck verwenden.
  2. 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

  1. Code::Blocks öffnen: Starten Sie die Code::Blocks IDE auf Ihrem Computer.
  2. 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".
  3. 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".
  4. 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".
  5. 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
C++

Eingabe- und Ausgabepfade festlegen

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

In der main-Funktion deklarieren wir zwei Zeichenketten: pdfPath und outputFilePath. pdfPath speichert den Pfad zur Eingaben-PDF-Datei, und outputFilePath speichert den Pfad, wo der extrahierte Text als einfache Textdatei gespeichert wird.

Die Eingabedatei lautet wie folgt:

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

Ausführen des pdftotext-Befehls

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

Wir konstruieren hier das pdftotext-Kommando unter Verwendung der pdfPath- und outputFilePath-Variablen, um die PDF-Datei zum Anzeigen ihrer Inhalte zu öffnen. Die system-Funktion wird daraufhin aufgerufen, um den Befehl auszuführen, und ihr Rückgabewert wird in der status-Variable 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; 
}
C++

Wir überprüfen die status-Variable, um zu sehen, ob das pdftotext-Kommando erfolgreich ausgeführt wurde. Wenn status gleich 0 ist, bedeutet das, dass die Textextraktion erfolgreich war, und wir geben eine Erfolgsmeldung aus. Wenn der status ungleich null ist, weist das 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;
}
C++

Im obigen Beispielcode öffnen wir die outputFile (die von pdftotext erzeugte Textdatei), lesen ihren Inhalt Zeile für Zeile und speichern ihn in der textContent-Zeichenkette. 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());
C++

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:

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

PDF-Dateien in C# anzeigen;

IronPDF for .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:

  1. Visual Studio öffnen: Starten Sie Visual Studio oder eine andere bevorzugte IDE.
  2. Projekt erstellen oder öffnen: Erstellen Sie ein neues C#-Projekt oder öffnen Sie ein vorhandenes, in dem Sie das IronPDF-Paket installieren möchten.
  3. 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".
  4. 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.
  5. IronPDF-Paket auswählen: Finden Sie das "IronPDF"-Paket und klicken Sie darauf, um es für Ihr Projekt auszuwählen.
  6. IronPDF installieren: Klicken Sie auf die Schaltfläche "Installieren", um das ausgewählte Paket zu installieren.
  7. 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...
}
$vbLabelText   $csharpLabel

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.

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