PDF-WERKZEUGE

Wie man PDF-Dateien in C++ anzeigt

PDF-Dateien sind ein weit verbreitetes Format für den Dokumentenaustausch, da sie die Formatierung über verschiedene Plattformen hinweg beibehalten können. In verschiedenen Anwendungen ist das programmatische Lesen des Inhalts von PDF-Dateien von unschätzbarem Wert.

In diesem Artikel werden wir lernen, wie man mit dem Xpdf-Kommandozeilenwerkzeug Text aus PDF-Dateien in C++ anzeigen kann. Xpdf bietet eine Reihe von Befehlszeilen-Utilities und C++-Bibliotheken zum Arbeiten mit PDF-Dateien, einschließlich Textextraktion. Durch die Integration von Xpdf in unser C++-PDF-Anzeigeprogramm können wir Textinhalte aus PDF-Dateien effizient anzeigen und diese programmgesteuert verarbeiten.

Xpdf - C++ Bibliothek und Befehlszeilen-Tools

Xpdf ist eine Open-Source-Software-Suite, die eine Reihe von Tools und Bibliotheken für die Arbeit mit PDF-Dateien bietet. Es enthält verschiedene Befehlszeilen-Dienstprogramme und C++-Bibliotheken, die PDF-bezogene Funktionen wie Parsing, Rendering, Drucken und Textextraktion ermöglichen. Die Kommandozeilen-Tools von Xpdf bieten auch die Möglichkeit, PDF-Dateien direkt vom Terminal aus zu betrachten.

Eine der Hauptkomponenten von Xpdf ist pdftotext, das hauptsächlich dafür bekannt ist, Textinhalte aus PDF-Dateien zu extrahieren. Wenn jedoch in Kombination mit anderen Tools wie pdftops und pdfimages verwendet, ermöglicht Xpdf den Benutzern, den PDF-Inhalt auf unterschiedliche Weise anzuzeigen. Das pdftotext-Werkzeug erweist sich als wertvoll für die Extraktion von Textinformationen aus PDFs zur weiteren Verarbeitung oder Analyse und bietet Optionen, um festzulegen, von welchen Seiten der Text extrahiert werden soll.

Voraussetzungen

Bevor wir beginnen, sollten Sie sicherstellen, dass die folgenden Voraussetzungen erfüllt sind:

  1. Ein C++-Compiler wie GCC oder Clang, der auf Ihrem System installiert ist. Wir werden die Code::Blocks IDE zu diesem Zweck verwenden.

  2. Xpdf-Kommandozeilenwerkzeuge sind installiert und vom Terminal aus zugänglich. Xpdf herunterladen und die für Ihre Umgebung geeignete Version installieren. Legen Sie anschließend das bin-Verzeichnis von Xpdf in den Pfad der Systemumgebungsvariablen fest, um von einem beliebigen Ort im Dateisystem darauf zuzugreifen.

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 aus dem Dropdown-Menü "Neu" aus. Klicken Sie dann im Untermenü auf "Projekt".

  3. Projekttyp auswählen: Wählen Sie im Fenster "Neu aus Vorlage" "Konsolenanwendung" und klicken Sie auf "Los". Wählen Sie dann die Sprache "C/C++" 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 verfügbaren Compiler auf Ihrem System automatisch erkannt haben. Falls nicht, wählen Sie einen geeigneten Compiler aus der Liste und klicken Sie auf "Fertig stellen"

Schritte zum Anzeigen von Text aus PDF in C++

Erforderliche Kopfzeilen einfügen

Zuerst fügen wir die erforderlichen Header-Dateien zu unserer main.cpp-Datei hinzu:

#include <cstdlib>
#include <iostream>
#include <fstream>
#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <fstream>
#include <cstdio>
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 Eingabedatei der PDF-Datei, und outputFilePath speichert den Pfad, wo der extrahierte Text als einfache Textdatei gespeichert wird.

Die Eingabedatei sieht wie folgt aus:

So zeigen Sie PDF-Dateien in C++ an: Abbildung 1

Führen Sie den pdftotext-Befehl aus

string command = "pdftotext " + pdfPath + " " + outputFilePath;
int status = system(command.c_str());
string command = "pdftotext " + pdfPath + " " + outputFilePath;
int status = system(command.c_str());
C++

Hier haben wir den pdftotext-Befehl mithilfe der Variablen pdfPath und outputFilePath erstellt, um die PDF-Datei zum Anzeigen ihrer Inhalte zu öffnen. Die system-Funktion wird dann 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 Variable status, um festzustellen, ob der Befehl pdftotext erfolgreich ausgeführt wurde. Wenn status gleich 0 ist, bedeutet das, dass die Textextraktion erfolgreich war, und wir geben eine Erfolgsnachricht aus. Wenn der status ungleich null ist, weist das auf einen Fehler hin, und wir drucken eine Fehlermeldung aus.

Extrahierten Text lesen und anzeigen

ifstream outputFile(outputFilePath);
if (outputFile.is_open()) { 
    string textContent;
    string line;
    while (getline(outputFile, line)) {
        textContent += line + "\n";
    }
    outputFile.close();
    cout << "Text content extracted from PDF:" << endl;
    cout << textContent << endl;
} else {
    cout << "Failed to open output file." << endl;
}
ifstream outputFile(outputFilePath);
if (outputFile.is_open()) { 
    string textContent;
    string line;
    while (getline(outputFile, line)) {
        textContent += line + "\n";
    }
    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 deren Inhalt zeilenweise und speichern ihn in der Zeichenkette textContent. Schließlich schließen wir die Datei und geben 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(outputFilePath.c_str());
remove(outputFilePath.c_str());
C++

Kompilieren und Ausführen des Programms

Erstellen Sie den Code mit der Tastenkombination "Strg+F9". Nach erfolgreicher Kompilierung extrahiert die ausführbare Datei den Textinhalt aus dem angegebenen PDF-Dokument und zeigt ihn auf der Konsole an. Die Ausgabe lautet wie folgt:

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

PDF-Dateien in C# anzeigen;

IronPDF .NET C# Library ist eine leistungsstarke .NET C# PDF-Bibliothek, die es Benutzern ermöglicht, PDF-Dateien problemlos in ihren C#-Anwendungen anzuzeigen. IronPDF nutzt die Chromium-Webbrowser-Engine, um PDF-Inhalte, einschließlich Bildern, Schriftarten und komplexer Formatierungen, präzise zu rendern und anzuzeigen. Mit seiner benutzerfreundlichen Oberfläche und den umfangreichen Funktionen können Entwickler IronPDF nahtlos in ihre C#-Projekte integrieren, so dass die Benutzer PDF-Dokumente effizient und interaktiv anzeigen können. Ob für die Anzeige von Berichten, Rechnungen oder anderen PDF-Inhalten, IronPDF bietet eine robuste Lösung für die Erstellung funktionsreicher PDF-Viewer in C#.

Gehen Sie folgendermaßen vor, um das IronPDF NuGet-Paket in Visual Studio zu installieren:

  1. Visual Studio öffnen: Starten Sie Visual Studio oder eine andere IDE Ihrer Wahl.

  2. Erstellen oder Öffnen Sie Ihr Projekt: Erstellen Sie ein neues C#-Projekt oder öffnen Sie ein vorhandenes, in dem Sie das IronPDF-Paket installieren möchten.

  3. Öffnen Sie den NuGet-Paket-Manager: Gehen Sie in Visual Studio zu "Tools" > "NuGet-Paket-Manager" > "NuGet-Pakete für die Lösung verwalten". Alternativ können Sie auch auf den Projektmappen-Explorer klicken und dann "NuGet-Pakete für Projektmappe verwalten" auswählen.

  4. Suche nach IronPDF: Klicken Sie im Fenster "NuGet-Paket-Manager" auf die Registerkarte "Durchsuchen" und suchen Sie dann im Suchfeld nach "IronPDF". Alternativ können Sie das NuGet IronPDF-Paket besuchen und die neueste Version von "IronPDF" direkt herunterladen.

  5. Wählen Sie das IronPDF-Paket: 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 über die NuGet Package Manager Console mit dem folgenden Befehl installieren:
    :ProductInstall
    :ProductInstall
SHELL

Mit IronPDF können wir Operationen wie Text und Bilder aus PDF-Dokumenten extrahieren durchführen und diese zur Ansicht in der Konsole anzeigen. Der folgende Code hilft, diese Aufgabe zu erfüllen:

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

Für detailliertere Informationen zu IronPDF besuchen Sie bitte die IronPDF-Dokumentation.

Schlussfolgerung

In diesem Artikel haben wir gelernt, wie man den Inhalt eines PDF-Dokuments in C++ mit dem Befehlszeilen-Tool Xpdf extrahiert und anzeigt. Dieser Ansatz ermöglicht es uns, den extrahierten Text in unseren C++-Anwendungen nahtlos zu verarbeiten und zu analysieren.

IronPDF-Lizenzierungsinformationen sind kostenlos für Entwicklungszwecke nutzbar, aber die PDFs werden mit einem Wasserzeichen generiert. Um das Wasserzeichen zu entfernen und IronPDF für kommerzielle Zwecke zu nutzen, können Sie eine Lizenz erwerben.

Eine kostenlose Testlizenz ist ebenfalls verfügbar, um sie für kommerzielle Zwecke zu testen.

Chipego
Software-Ingenieur
Chipego hat eine natürliche Fähigkeit zum Zuhören, die ihm hilft, Kundenprobleme zu verstehen und intelligente Lösungen anzubieten. Er trat dem Iron Software-Team 2023 bei, nachdem er einen Bachelor of Science in Informationstechnologie erworben hatte. IronPDF und IronOCR sind die beiden Produkte, auf die sich Chipego konzentriert hat, aber sein Wissen über alle Produkte wächst täglich, da er neue Wege findet, Kunden zu unterstützen. Er genießt die Zusammenarbeit bei Iron Software, da Teammitglieder aus dem gesamten Unternehmen ihre unterschiedlichen Erfahrungen einbringen und so zu effektiven, innovativen Lösungen beitragen. Wenn Chipego nicht an seinem Schreibtisch sitzt, kann man ihn oft bei einem guten Buch oder beim Fußballspielen antreffen.
< PREVIOUS
PDF in NodeJS in ein Bild umwandeln
NÄCHSTES >
Wie man PDF-Dateien in C++ erstellt