Jak przeglądać pliki PDF w C++
Pliki PDF są powszechnie stosowanym formatem wymiany dokumentów ze względu na ich zdolność do zachowania formatowania na różnych platformach. W różnych zastosowaniach programowe odczytywanie zawartości plików PDF staje się nieocenione.
W tym artykule omówimy, jak wyświetlać tekst z plików PDF w języku C++ przy użyciu narzędzia wiersza poleceń Xpdf. Narzędzie Xpdf udostępnia zestaw narzędzi wiersza poleceń oraz bibliotek C++ do pracy z plikami PDF, w tym do wyodrębniania tekstu. Integrując Xpdf z programem przeglądarki PDF w C++, można efektywnie wyświetlać zawartość tekstową plików PDF i przetwarzać ją w sposób programowy.
Xpdf — biblioteka C++ i narzędzia wiersza poleceń
Xpdf to suite oprogramowania typu open source, która oferuje szereg narzędzi i bibliotek do pracy z plikami PDF. Obejmuje ona różne narzędzia wiersza poleceń oraz biblioteki C++, które umożliwiają korzystanie z funkcji związanych z plikami PDF, takich jak parsowanie, renderowanie, drukowanie i wyodrębnianie tekstu. Narzędzia wiersza poleceń Xpdf oferują również możliwości przeglądania plików PDF bezpośrednio z terminala.
Jednym z kluczowych komponentów Xpdf jest pdftotext, znany przede wszystkim z wyodrębniania zawartości tekstowej z plików PDF. Jednak w połączeniu z innymi narzędziami, takimi jak pdftops i pdfimages, Xpdf umożliwia użytkownikom przeglądanie zawartości PDF na różne sposoby. Narzędzie pdftotext jest przydatne do wyodrębniania informacji tekstowych z plików PDF w celu dalszego przetwarzania lub analizy, a także oferuje opcje określania, z których stron wyodrębniać tekst.
Wymagania wstępne
Zanim zaczniemy, upewnij się, że spełniasz następujące wymagania wstępne:
- Kompilator C++, taki jak GCC lub Clang, zainstalowany w systemie. W tym celu będziemy korzystać ze środowiska Code::Blocks IDE.
- Narzędzia wiersza poleceń Xpdf zainstalowane i dostępne z wiersza poleceń. Pobierz Xpdf i zainstaluj wersję odpowiednią dla swojego środowiska. Następnie należy ustawić katalog bin programu Xpdf w ścieżce zmiennych środowiskowych systemu, aby uzyskać do niego dostęp z dowolnego miejsca w systemie plików.
Tworzenie projektu przeglądarki plików PDF
- Otwórz Code::Blocks: Uruchom środowisko IDE Code::Blocks na swoim komputerze.
- Utwórz nowy projekt: Kliknij "Plik" w górnym menu i wybierz "Nowy" z menu rozwijanego. Następnie kliknij "Projekt" w podmenu.
- Wybierz typ projektu: W oknie "Nowy z szablonu" wybierz "Aplikacja konsolowa" i kliknij "Przejdź". Następnie wybierz język "C/C++" i kliknij "Dalej".
- Wprowadź szczegóły projektu: W polu "Tytuł projektu" nadaj projektowi nazwę (np. "PDFViewer"). Wybierz lokalizację, w której chcesz zapisać pliki projektu, i kliknij "Dalej".
- Wybierz kompilator: Wybierz kompilator, którego chcesz użyć dla swojego projektu. Domyślnie Code::Blocks powinien automatycznie wykryć dostępne kompilatory w systemie. Jeśli nie, wybierz odpowiedni kompilator z listy i kliknij "Zakończ".
Kroki wyświetlania tekstu z pliku PDF w C++
Dołącz niezbędne nagłówki
Najpierw dodaj wymagane pliki nagłówkowe do pliku main.cpp:
#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
Ustaw ścieżki wejścia i wyjścia
string pdfPath = "input.pdf";
string outputFilePath = "output.txt";
string pdfPath = "input.pdf";
string outputFilePath = "output.txt";
W funkcji main deklarujemy dwa ciągi znaków: pdfPath i outputFilePath. Zmienna pdfPath przechowuje ścieżkę do wejściowego pliku PDF, natomiast outputFilePath przechowuje ścieżkę, pod którą wyodrębniony tekst zostanie zapisany jako zwykły plik tekstowy.
Plik wejściowy wygląda następująco:

Wykonaj polecenie pdftotext
// 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());
Tutaj budujemy polecenie pdftotext przy użyciu zmiennych pdfPath i outputFilePath, aby otworzyć plik PDF i wyświetlić jego zawartość. Następnie wywoływana jest funkcja system w celu wykonania polecenia, a jej wartość zwracana jest przechowywana w zmiennej status.
Sprawdź status wyodrębniania tekstu
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;
}
Sprawdzamy zmienną status, aby dowiedzieć się, czy polecenie pdftotext zostało wykonane pomyślnie. Jeśli status wynosi 0, wyodrębnianie tekstu powiodło się i wyświetlany jest komunikat o sukcesie. Jeśli status jest różny od zera, oznacza to błąd i wyświetlany jest komunikat o błędzie.
Odczytaj wyodrębniony tekst i wyświetl go
// 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;
}
W powyższym przykładowym kodzie otwieramy plik outputFile (plik tekstowy wygenerowany przez pdftotext), odczytujemy jego zawartość wiersz po wierszu i przechowujemy ją w ciągu znaków textContent. Na koniec zamykamy plik i wyświetlamy wyodrębnioną zawartość tekstową w konsoli.
Remove Output File
Jeśli nie potrzebujesz edytowalnego pliku tekstowego z wynikami lub chcesz zwolnić miejsce na dysku, na końcu programu po prostu usuń go za pomocą następującego polecenia przed zakończeniem funkcji głównej:
// 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());
Kompilowanie i uruchamianie programu
Skompiluj kod za pomocą skrótu klawiszowego "Ctrl+F9". Po pomyślnej kompilacji uruchomienie pliku wykonywalnego spowoduje wyodrębnienie zawartości tekstowej z określonego dokumentu PDF i wyświetlenie jej w konsoli. Oto wynik:

Wyświetlanie plików PDF w C
Biblioteka IronPDF .NET C# to potężna biblioteka PDF dla platformy .NET C#, która umożliwia użytkownikom łatwe wyświetlanie plików PDF w aplikacjach C#. Wykorzystując silnik przeglądarki internetowej Chromium, IronPDF dokładnie renderuje i wyświetla zawartość PDF, w tym obrazy, czcionki i złożone formatowanie. Dzięki przyjaznemu interfejsowi i rozbudowanej funkcjonalności programiści mogą bezproblemowo integrować IronPDF ze swoimi projektami C#, umożliwiając użytkownikom efektywne i interaktywne przeglądanie dokumentów PDF. Niezależnie od tego, czy chodzi o wyświetlanie raportów, faktur czy innej zawartości PDF, IronPDF zapewnia solidne rozwiązanie do tworzenia bogatych w funkcje przeglądarek PDF w C#.
Aby zainstalować pakiet IronPDF NuGet w Visual Studio, wykonaj następujące kroki:
- Otwórz Visual Studio: Uruchom Visual Studio lub inne preferowane środowisko IDE.
- Utwórz lub otwórz projekt: Utwórz nowy projekt C# lub otwórz istniejący, w którym chcesz zainstalować pakiet IronPDF.
- Otwórz Menedżer pakietów NuGet: W Visual Studio przejdź do "Narzędzia" > "Menedżer pakietów NuGet" > "Zarządzaj pakietami NuGet dla rozwiązania". Alternatywnie kliknij eksplorator rozwiązań i wybierz "Zarządzaj pakietami NuGet dla rozwiązania".
- Wyszukaj IronPDF: W oknie "Menedżer pakietów NuGet" kliknij kartę "Przeglądaj" i wyszukaj "IronPDF" w pasku wyszukiwania. Alternatywnie odwiedź stronę pakietu IronPDF na NuGet i pobierz bezpośrednio najnowszą wersję "IronPDF".
- Wybierz pakiet IronPDF: Znajdź pakiet "IronPDF" i kliknij go, aby wybrać go dla swojego projektu.
- Zainstaluj IronPDF: Kliknij przycisk "Zainstaluj", aby zainstalować wybrany pakiet.
-
Można również zainstalować IronPDF za pomocą konsoli menedżera pakietów NuGet, używając następującego polecenia:
Install-Package IronPdf
Za pomocą IronPDF można wykonywać operacje takie jak wyodrębnianie tekstu i obrazów z dokumentów PDF oraz wyświetlanie ich w konsoli. Poniższy kod pomaga w realizacji tego zadania:
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
Aby uzyskać bardziej szczegółowe informacje na temat IronPDF, odwiedź stronę dokumentacji IronPDF.
Wnioski
W tym artykule omówiliśmy, jak wyodrębniać i wyświetlać zawartość dokumentu PDF w C++ przy użyciu narzędzia wiersza poleceń Xpdf. Takie podejście umożliwia bezproblemowe przetwarzanie i analizowanie wyodrębnionego tekstu w aplikacjach C++.
Dostępna jest bezpłatna wersja próbna do testowania w celach komercyjnych.

