Altbilgi içeriğine atla
PDF ARAçLARı

C++'da PDF Dosyalarını Görüntüleme

PDF dosyaları, farklı platformlar arasında biçimlendirmeyi koruma yeteneği nedeniyle belge alışverişi için yaygın bir şekilde kullanılan bir formattır. Çeşitli uygulamalarda, PDF dosyalarının içeriğini programlı bir şekilde okumak çok değerli hale gelir.

Bu makalede, Xpdf komut satırı aracını kullanarak C++ ile PDF dosyalarından metin görüntülemeyi öğreneceğiz. Xpdf, metin çıkarma dahil PDF dosyalarıyla çalışma için bir dizi komut satırı yardımcı programı ve C++ kütüphanesi sağlar. C++ PDF görüntüleyici programımıza Xpdf entegre ederek, PDF dosyalarından metin içeriğini verimli bir şekilde görüntüleyebilir ve programlı olarak işleyebiliriz.

Xpdf - C++ Kütüphanesi ve Komut Satırı Araçları

Xpdf, PDF dosyalarıyla çalışmak için bir dizi araç ve kütüphane sunan açık kaynaklı bir yazılım paketidir. Çeşitli komut satırı yardımcı programları ve PDF'le ilgili işlevsellikler, örneğin analiz, işleme, yazdırma ve metin çıkarma sağlayan C++ kütüphaneleri içerir. Xpdf'in komut satırı araçları, terminalden doğrudan PDF dosyalarını görüntüleme yolları sunar.

Xpdf'in ana bileşenlerinden biri pdftotext'dir ve esas olarak PDF dosyalarından metin içeriği çıkarmasıyla bilinir. Ancak, pdftops ve pdfimages gibi diğer araçlarla birleştirildiğinde, Xpdf, kullanıcıların PDF içeriğini farklı şekillerde görüntülemesine olanak tanır. pdftotext aracı, PDF'lerden metinsel bilgi çıkarımında ve işleme veya analiz için değerli bir çözüm sunar ve hangi sayfalardan metin çıkarılacağını belirtme seçenekleri sunar.

Ön Koşullar

Başlamadan önce, aşağıdaki önkoşullara sahip olduğunuzdan emin olun:

  1. Sisteminizde yüklü bir C++ derleyicisi, örneğin GCC veya Clang. Bu amaçla Code::Blocks IDE kullanacağız.
  2. Xpdf komut satırı araçlarının sağlanan adresten indirilip komut satırından erişilebilir olması gerekir. Xpdf'i indir ve ortamınıza uygun sürümü kurun. Daha sonra, Xpdf'in bin dizinini sistem ortam değişkenleri yoluna ekleyerek dosya sisteminin herhangi bir yerinden erişilebilir hale getirin.

PDF Görüntüleyici Projesi Oluşturma

  1. Code::Blocks'u Açın: Bilgisayarınızda Code::Blocks IDE'yi başlatın.
  2. Yeni Proje Oluştur: Üst menüden "Dosya"ya tıklayın ve açılır menüden "Yeni"yi seçin. Sonra, alt menüden "Proje"ye tıklayın.
  3. Proje Türünü Seçin: "Şablondan yeni" penceresinde "Konsol uygulaması"nı seçin ve "Git"e tıklayın. Sonra dili "C/C++" olarak seçin ve "Sonraki"ye tıklayın.
  4. Proje Detaylarını Girin: "Proje başlığı" alanına projenize bir ad verin (örneğin, "PDFViewer"). Proje dosyalarını kaydetmek istediğiniz yeri seçin ve "Sonraki"ye tıklayın.
  5. Derleyiciyi Seçin: Projeniz için kullanmak istediğiniz derleyiciyi seçin. Varsayılan olarak, Code::Blocks sisteminizde mevcut derleyicileri otomatik olarak algılamış olmalıdır. Eğer değilse, listeden uygun bir derleyici seçin ve "Bitir"e tıklayın.

C++ ile PDF'den Metin Görüntüleme Adımları

Gerekli Başlıkları Ekleyin

Öncelikle, main.cpp dosyamıza gerekli başlık dosyalarını ekleyelim:

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

Giriş ve Çıkış Yollarını Ayarla

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

main fonksiyonunda, iki dize tanımlarız: pdfPath ve outputFilePath. pdfPath, giriş PDF dosyasının yolunu saklar ve outputFilePath, çıkarılan metnin düz metin dosyası olarak kaydedileceği yolu saklar.

Giriş dosyası şu şekildedir:

 C++ ile PDF Dosyalarını Görüntüleme: Şekil 1

pdftotext Komutunu Çalıştırın

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

Burada, PDF dosyasını içeriğini görüntülemek için açmak adına pdfPath ve outputFilePath değişkenlerini kullanarak pdftotext komutunu oluşturuyoruz. system fonksiyonu daha sonra komutu yürütmek için çağrılır ve dönüş değeri status değişkenine kaydedilir.

Metin Çıkarma Durumunu Kontrol Et

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

pdftotext komutunun başarıyla yürütülüp yürütülmediğini görmek için status değişkenini kontrol ederiz. Eğer status sıfıra eşitse, metin çıkarma işlemi başarılı olmuştur ve başarılı bir mesaj yazdırırız. Eğer status sıfır değilse, bu bir hata belirtir ve bir hata mesajı yazdırırız.

Çıkartılan Metni Oku ve Görüntüle

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

Yukarıdaki örnek kodda, outputFile (pdftotext tarafından oluşturulan metin dosyası) açılır, içeriği satır satır okunur ve textContent dizesinde saklanır. Sonunda dosyayı kapatır ve çıkartılan metin içeriğini konsola yazdırırız.

Çıkış Dosyasını Kaldır

Düzenlenebilir çıktı metin dosyasına ihtiyaçınız yoksa veya disk alanını boşaltmak istiyorsanız, ana fonksiyonu sonlandırmadan önce aşağıdaki komutu kullanarak programın sonunda onu silin:

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

Programı Derleyip Çalıştırma

Kodunuzu "Ctrl+F9" kısayol tuşunu kullanarak derleyin. Başarılı derlemenin ardından, çalıştırılan yürütülebilir dosya belirtilen PDF belgesinden metin içeriğini çıkaracak ve konsola görüntüleyecektir. Çıktı aşağıdaki gibidir:

 C++ ile PDF Dosyalarını Görüntüleme: Şekil 2

C# ile PDF Dosyalarını Görüntüleme

IronPDF .NET C# Kütüphanesi, kullanıcıların C# uygulamalarında kolayca PDF dosyalarını görüntülemelerini sağlayan güçlü bir .NET C# PDF kütüphanesidir. Chromium web tarayıcı motorunu kullanan IronPDF, görüntüleri, yazı tiplerini ve karmaşık biçimlendirmeyi içeren PDF içeriğini doğru bir şekilde işler ve görüntüler. Kullanıcı dostu arayüzü ve geniş işlevselliği ile geliştiriciler, IronPDF'yi C# projelerine sorunsuz bir şekilde entegre edebilir; kullanıcılara PDF belgelerini verimli ve etkileşimli bir şekilde görüntüleme imkânı sağlar. Raporlar, faturalar veya diğer PDF içerikleri göstermek için olsun, IronPDF, C# içinde özellik zengin PDF görüntüleyiciler oluşturmak için sağlam bir çözüm sunar.

Visual Studio'da IronPDF NuGet paketini kurmak için şu adımları izleyin:

  1. Visual Studio'yu Açın: Visual Studio ya da tercihinize göre başka bir IDE'yi başlatın.
  2. Projenizi Oluşturun veya Açın: IronPDF paketini yüklemek istediğiniz yeni bir C# projesi oluşturun ya da var olanı açın.
  3. NuGet Paket Yöneticisini Açın: Visual Studio'da "Araçlar" > "NuGet Paket Yöneticisi" > "Çözüm için NuGet Paketlerini Yönet" bölümüne gidin. Alternatif olarak, çözüm gezginine tıklayıp "Çözüm İçin NuGet Paketlerini Yönet" seçeneğini seçin.
  4. IronPDF Arayın: "NuGet Paket Yöneticisi" penceresinde "Gözat" sekmesine tıklayın ve arama çubuğuna "IronPDF" yazın. Diğer bir seçenek olarak NuGet IronPDF Paketi sayfasını ziyaret edip IronPDF'nin en son sürümünü doğrudan indirebilirsiniz.
  5. IronPDF Paketini Seçin: "IronPDF" paketini bulun ve projeniz için seçmek üzere üzerine tıklayın.
  6. IronPDF'yi Kurun: Seçilen paketi yüklemek için "Yükle" düğmesine tıklayın.
  7. Ancak, aşağıdaki komutu kullanarak NuGet Paket Yöneticisi Konsolu aracılığıyla da IronPDF'yi kurabilirsiniz:

    Install-Package IronPdf

IronPDF'yi kullanarak PDF belgelerinden metin ve görüntü çıkarmak ve bunları görüntüleme için konsola yazdırmak gibi işlemler yapabiliriz. Bu görevi başarmak için aşağıdaki kod yardımıyla gerçekleştirin:

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

IronPDF hakkında daha ayrıntılı bilgi almak için lütfen IronPDF Dokümantasyonu'nu ziyaret edin.

Sonuç

Bu makalede, Xpdf komut satırı aracını kullanarak C++'da bir PDF belgesinin içeriğini nasıl çıkaracağımızı ve görüntüleyeceğimizi öğrendik. Bu yaklaşım, çıkarılan metni C++ uygulamalarımızın içinde sorunsuz bir şekilde işlememize ve analiz etmemize olanak sağlar.

Ticari amaçlı test için Ücretsiz Deneme Lisansı mevcuttur.

Curtis Chau
Teknik Yazar

Curtis Chau, Bilgisayar Bilimleri alanında lisans derecesine sahiptir (Carleton Üniversitesi) ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirme üzerine uzmanlaşmıştır. Kullanıcı dostu ve estetik açıdan hoş arayüzler tasarlamaya tutkuyla bağlı olan Curtis, modern çerç...

Daha Fazlasını Oku

Iron Destek Ekibi

Haftanın 5 günü, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara