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

PDF Dosyalarından Sayfalar Nasıl Çıkarılır - Adım Adım Kılavuz

PDF (Taşınabilir Belge Biçimi) dosyaları, farklı platformlar arasında belgeleri tutarlı bir formatta paylaşmak ve saklamak için yaygın bir şekilde kullanılır. Bu makalede, wkhtmltopdf kütüphanesi kullanarak C++ ile nasıl PDF dosyaları üreteceğimizi inceleyeceğiz. HTML içeriğini PDF dosyalarına dönüştürmek için kullanılan açık kaynaklı bir komut satırı aracıdır. Bu kütüphanenin gücünü kullanarak, C++ uygulamalarımızda programatik olarak HTML içeriğinden PDF belgeleri oluşturabiliriz.

wkhtmltopdf Kütüphanesi

wkhtmltopdf, HTML web sayfalarını veya HTML içeriğini PDF belgelerine dönüştüren açık kaynaklı bir komut satırı aracı ve işleme motorudur. HTML, CSS ve JavaScript'i ayrıştırmak ve render etmek için WebKit işleme motorunu kullanır ve ardından oluşturulan içeriğe dayalı bir PDF dosyası üretir.

"wkhtmltopdf C++ Kütüphanesi" (aynı zamanda "wkhtmltopdf C API") olarak da bilinir. Bu kütüphane, wkhtmltopdf komut satırı aracına bir C++ arayüzü sağlayarak, C++ uygulamalarınızda HTML içeriğinden doğrudan PDF dosyaları oluşturmanıza olanak tanır. C++ içinde wkhtmltopdf kütüphanesini kullanarak HTML'den PDF'ye dönüştürme sürecinin adım adım içine dalalım.

Gereksinimler

C++'da PDF dosyaları oluşturmak için aşağıdakilere ihtiyacımız var:

  1. Sisteminizde yüklü bir C++ derleyicisi, örneğin GCC veya Clang. C++ programlamayı destekleyen herhangi bir IDE'yi kullanabilirsiniz.
  2. wkhtmltopdf kütüphanesi indirildi ve yüklendi. Son sürümü resmi wkhtmltopdf web sitesinden indirip işletim sisteminizin talimatlarına göre yükleyebilirsiniz.
  3. C++ programlaması hakkında temel bilgi.

C++ Code::Blocks'ta PDF Projesi Yaratın

Code::Blocks'ta bir proje oluşturun ve ardından kütüphane klasörünü ve dosyasını bağlamak için aşağıdaki adımları izleyin. Başka bir IDE kullanıyorsanız, seçenekler farklı olabilir ancak çalışması için projede indirilmiş kütüphaneye referans vermeniz gerekir.

1. Arama Dizinlerinde Dahil Etme Klasörü Ekleme

Code::Blocks'un gerekli başlık dosyalarını bulabilmesi için arama dizinlerini ayarlamamız gerekiyor.

  1. Üst menüdeki "Project" menüsüne tıklayın ve "Build options"u seçin. "Debug" seçtiğinizden emin olun.
  2. 'Derleme seçenekleri' iletişim kutusunda, 'Arama dizinleri' sekmesini seçin.
  3. "Compiler" sekmesi altında, "Add" butonuna tıklayın.
  4. wkhtmltox başlık dosyalarının bulunduğu dizine (örneğin, C:\Program Files\wkhtmltopdf\include) göz atın ve seçin.
  5. Son olarak, iletişim kutusunu kapatmak için 'Tamam' tıklayın.

C++'da PDF Dosyaları Nasıl Oluşturulur: Şekil 1

2. Bağlayıcı Ayarlarında Kütüphaneleri Bağlama

wkhtmltox kütüphanesine karşı bağlantı sağlamak için bu adımları izleyin:

  1. Tekrar, üst menüdeki "Project" menüsüne tıklayın ve "Build options"u seçin. "Debug" seçtiğinizden emin olun.
  2. 'Derleme seçenekleri' iletişim kutusunda, 'Bağlayıcı ayarları' sekmesini seçin.
  3. "Link libraries" sekmesi altında, "Add" butonuna tıklayın.
  4. wkhtmltox kütüphane dosyalarının bulunduğu dizine göz atın (örneğin C:\Program Files\wkhtmltopdf\lib) ve uygun kütüphane dosyasını seçin.
  5. Kütüphaneyi projenize eklemek için "Open" tıklayın.
  6. Son olarak, iletişim kutusunu kapatmak için 'Tamam' tıklayın.

C++'da PDF Dosyaları Nasıl Oluşturulur: Şekil 2

wkhtmltopdf Kullanarak C++'da PDF Oluşturma Adımları

1. Gerekli Kütüphaneleri Ekleyin

Başlamak için, önce wkhtmltopdf kütüphanesinin işlevselliklerini kullanabilmek için gerekli başlık dosyalarını C++ programımıza ekleyeceğiz. main.cpp kaynak kodu dosyanızın başına aşağıdaki başlık dosyalarını ekleyin:

#include <iostream>
#include <fstream>
#include <string>
#include <wkhtmltox/pdf.h> // Include wkhtmltopdf library headers
#include <iostream>
#include <fstream>
#include <string>
#include <wkhtmltox/pdf.h> // Include wkhtmltopdf library headers
C++

2. GUI Bileşenini Devre Dışı Bırakma

Eğer bir GUI ile çalışmıyorsanız, hatalardan kaçınmak için onu devre dışı bırakmalısınız. Kod şöyle devam ediyor:

wkhtmltopdf_init(false); // Initialize the wkhtmltopdf library in non-GUI mode
wkhtmltopdf_init(false); // Initialize the wkhtmltopdf library in non-GUI mode
C++

3. Ayarları ve Dönüştürücüyü Başlatma

Sonraki adımda, genel ve nesne ayarları işaretçilerini başlatmamız ve daha sonra wkhtmltopdf dönüştürücüsünü başlatmamız gerekiyor.

wkhtmltopdf_global_settings* gs = wkhtmltopdf_create_global_settings();
wkhtmltopdf_object_settings* os = wkhtmltopdf_create_object_settings();
wkhtmltopdf_converter* converter = wkhtmltopdf_create_converter(gs);
wkhtmltopdf_global_settings* gs = wkhtmltopdf_create_global_settings();
wkhtmltopdf_object_settings* os = wkhtmltopdf_create_object_settings();
wkhtmltopdf_converter* converter = wkhtmltopdf_create_converter(gs);
C++

4. PDF İçeriği Ekleme

Şimdi, yeni oluşturulan PDF belgemize biraz içerik eklemek için bir HTML dizesi oluşturalım. Kod şöyle devam ediyor:

std::string htmlString = "<html><body><h1>Create a PDF in C++ using WKHTMLTOPDF Library</h1></body></html>";
wkhtmltopdf_add_object(converter, os, htmlString.c_str());
std::string htmlString = "<html><body><h1>Create a PDF in C++ using WKHTMLTOPDF Library</h1></body></html>";
wkhtmltopdf_add_object(converter, os, htmlString.c_str());
C++

5. HTML Dizesini PDF Dosyasına Dönüştürme

wkhtmltopdf, HTML içeriğini PDF'ye dönüştürmek için bir dönüştürücü metod sunar. İşte kod örneği:

wkhtmltopdf_convert(converter); // Converts HTML content to PDF
wkhtmltopdf_convert(converter); // Converts HTML content to PDF
C++

6. Bellek Tamponu Olarak Çıkış Alma

wkhtmltopdf_get_output fonksiyonu ile PDF verilerini bir bellek tampon akışı olarak elde edebiliriz. Ayrıca PDF'nin uzunluğunu da döndürür. Aşağıdaki örnek bu görevi gerçekleştirecektir:

const unsigned char* pdfData;
int pdfLength = wkhtmltopdf_get_output(converter, &pdfData); // Get PDF data and length
const unsigned char* pdfData;
int pdfLength = wkhtmltopdf_get_output(converter, &pdfData); // Get PDF data and length
C++

7. PDF Dosyasını Kaydetme

pdfData işaretçisi artık wkhtmltopdf_converter'dan gelen karakter akışına sahip olacak. Bir PDF dosyasına kaydetmek için önce PDF'yi kaydetmek istediğimiz dosya yolunu belirteceğiz. Daha sonra, çıktı dosyası akışını kullanarak, dosyayı ikili modda açarız ve reinterpret_cast fonksiyonu ile tür dönüşümü yaparak pdfData'ı yazarız. Son olarak, dosyayı kapatıyoruz.

const char* outputPath = "file.pdf";
std::ofstream outputFile(outputPath, std::ios::binary); // Open file in binary mode
outputFile.write(reinterpret_cast<const char*>(pdfData), pdfLength); // Write PDF data
outputFile.close(); // Close the file
const char* outputPath = "file.pdf";
std::ofstream outputFile(outputPath, std::ios::binary); // Open file in binary mode
outputFile.write(reinterpret_cast<const char*>(pdfData), pdfLength); // Write PDF data
outputFile.close(); // Close the file
C++

8. Bellek Temizliği

Başarılı bir PDF dosyası oluşturduktan sonra, wkhtmltopdf tarafından tahsis edilen kaynakları temizlemek önemlidir, aksi takdirde bir bellek sızıntısına neden olur.

wkhtmltopdf_destroy_converter(converter); // Destroy the converter
wkhtmltopdf_destroy_object_settings(os);  // Destroy object settings
wkhtmltopdf_destroy_global_settings(gs);  // Destroy global settings
wkhtmltopdf_deinit();                     // Deinitialize the library

std::cout << "PDF created successfully." << std::endl; // Inform the user
wkhtmltopdf_destroy_converter(converter); // Destroy the converter
wkhtmltopdf_destroy_object_settings(os);  // Destroy object settings
wkhtmltopdf_destroy_global_settings(gs);  // Destroy global settings
wkhtmltopdf_deinit();                     // Deinitialize the library

std::cout << "PDF created successfully." << std::endl; // Inform the user
C++

9. Kodu Çalıştırarak PDF Dosyası Üretme

Şimdi projeyi derleyip kodu F9 ile çalıştırın. Çıktı üretilir ve proje klasörüne kaydedilir. Oluşan PDF aşağıdaki gibidir:

C++'da PDF Dosyaları Nasıl Oluşturulur: Şekil 3

Create PDF File in C

IronPDF

IronPDF, geliştiricilerin HTML'den kolayca PDF belgeleri oluşturmalarına olanak tanıyan .NET C# PDF kütüphanesidir. HTML'den PDF dosyaları oluşturma sürecini basitleştiren sezgisel bir API sunar.

PDF'lerle çalışırken IronPDF güçlü ve çok yönlüdür. Sadece basit HTML belgelerinden PDF oluşturmakla kalmaz, aynı zamanda CSS stil, JavaScript etkileşimleri ve hatta dinamik içerikle karmaşık web sayfalarını da işler. Dahası, dönüştürme yöntemlerine hızlı erişim sağlayarak çeşitli PDF dönüştürücüleri geliştirebilirsiniz.

IronPDF kullanarak PDF oluşturma ve HTML dizesinden PDF'ye dönüştürme için bir örnek kod örneği:

using IronPdf;

// Instantiate Renderer
var renderer = new ChromePdfRenderer();

// Create a PDF from an HTML string using C#
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");

// Export to a file or Stream
pdf.SaveAs("output.pdf");
using IronPdf;

// Instantiate Renderer
var renderer = new ChromePdfRenderer();

// Create a PDF from an HTML string using C#
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");

// Export to a file or Stream
pdf.SaveAs("output.pdf");
Imports IronPdf

' Instantiate Renderer
Private renderer = New ChromePdfRenderer()

' Create a PDF from an HTML string using C#
Private pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>")

' Export to a file or Stream
pdf.SaveAs("output.pdf")
$vbLabelText   $csharpLabel

HTML içeriğini bir PDF olarak işlemek için ChromePdfRenderer'nun bir örneğini oluştururuz. RenderHtmlAsPdf yöntemini renderer objesinde çağırırız ve HTML stringini iletiriz. Bu, PDF dokümanını üretir ve ardından SaveAs yöntemini kullanarak PDF dokümanını kaydederiz.

C++'da PDF Dosyaları Nasıl Oluşturulur: Şekil 4

IronPDF ile çeşitli kaynaklardan PDF oluşturma hakkında daha fazla bilgi için IronPDF kod örnekleri sayfasını ziyaret edebilirsiniz.

Sonuç

Bu makalede, wkhtmltopdf C++ Kütüphanesi kullanarak C++'da PDF oluşturmayı inceledik ve ayrıca C#'ta PDF belgeleri üretmek için IronPDF kullanmayı öğrendik.

IronPDF ile HTML içeriğinden PDF dosyaları üretmek, .NET Framework dillerinde basit bir görev haline geliyor. Kapsamlı özellik seti, C# projelerinde HTML'den PDF'ye dönüştürme ihtiyacı olan geliştiriciler için değerli bir araçtır. İster raporlar, faturalar veya belirli bir HTML-PDF dönüşümü gerektiren başka herhangi bir belge üretmek olsun, IronPDF güvenilir ve etkili bir çözümdür.

IronPDF, geliştirme amacıyla ücretsizdir ama ticari kullanım için lisanslanması gereklidir. Tüm fonksiyonelliğini test etmek için ticari kullanım için ücretsiz bir deneme sürümü sunar. IronPDF'ü indir ve kendiniz deneyin.

Curtis Chau
Teknik Yazar

Curtis Chau, Bilgisayar Bilimleri alanında Lisans Derecesine (Carleton Üniversitesi) sahip ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirmeyle ilgileniyor. Sezgisel ve estetik açıdan hoş kullanıcı arayüzleri oluşturma tutkunu, Curtis modern çerçevelerle çalışmayı ve iyi yapı...

Daha Fazla Oku

Iron Destek Ekibi

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