C++'da PDF Dosyaları Nasıl Oluşturulur
PDF (Taşınabilir Belge Formatı) dosyaları, farklı platformlarda belgeleri tutarlı bir biçimde paylaşmak ve korumak için yaygın olarak kullanılır. Bu makalede, C++ kullanarak wkhtmltopdf kütüphanesi ile PDF dosyalarını nasıl oluşturacağımızı keşfedeceğ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ünden yararlanarak, 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 çözümlemek ve işlemek için WebKit işleme motorunu kullanır ve daha sonra işlenmiş içeriğe dayalı olarak bir PDF dosyası oluşturur.
"wkhtmltopdf C++ Kütüphanesi" (aynı zamanda "wkhtmltopdf C API" olarak bilinir). Bu kütüphane, C++ uygulamalarınızda HTML içeriğinden doğrudan PDF dosyaları oluşturmanıza olanak tanıyan, wkhtmltopdf komut satırı aracı için bir C++ arabirimi sağlar. Wkhtmltopdf kütüphanesini kullanarak C++'da HTML'den PDF'ye dönüştürme adım adım işlemine dalalım.
Ön Koşullar
C++'da PDF dosyaları oluşturmak için şunlara ihtiyaçımız var:
- Sisteminizde yüklü bir C++ derleyicisi, örneğin GCC veya Clang. C++ programlamayı destekleyen herhangi bir IDE kullanabilirsiniz.
- wkhtmltopdf kütüphanesi indirip yüklenmiş. En son sürümünü wkhtmltopdf resmi websitesinden indirip işletim sisteminizin talimatlarına göre yükleyebilirsiniz.
- C++ programlama hakkında temel bilgi.
Code::Blocks'ta C++ PDF projesi oluşturun
Code::Blocks'ta bir proje oluşturun ve ardından kütüphane klasörü ve dosyayı bağlamak için aşağıdaki adımları izleyin. Başka bir IDE kullanıyorsanız, seçenekler farklı olabilir, ancak projenizde çalıştırmak için indirilen kütüphaneyi referans göstermeniz gerekir.
1. Arama Dizinlerine ekleme klasörü ekleme
Code::Blocks'un gerekli başlık dosyalarını bulabilmesi için arama dizinlerini ayarlamamız gerekiyor.
- Menü çubuğundaki "Proje" menüsüne tıklayın ve "Derleme seçenekleri"ni seçin. "Hata Ayıklama" yı seçtiğinizden emin olun.
- "Derleme seçenekleri" iletişim kutusunda, "Arama Dizinleri" sekmesine gidin.
- "Derleyici" sekmesi altında "Ekle" düğmesine tıklayın.
- wkhtmltox başlık dosyalarının bulunduğu dizini tarayın (örneğin, C:\Program Files\wkhtmltopdf\include) ve seçin.
- Son olarak, iletişim kutusunu kapatmak için "Tamam" a tıklayın.

2. Bağlayıcı Ayarlarında Kütüphaneleri Bağlama
Kütüphaneye bağlanmak için wkhtmltox kütüphaneye karşı bu adımları izleyin:
- Yine, menü çubuğundaki "Proje" menüsüne tıklayın ve "Derleme seçenekleri"ni seçin. "Hata Ayıklama" yı seçtiğinizden emin olun.
- "Derleme seçenekleri" iletişim kutusunda, "Bağlayıcı ayarları" sekmesine gidin.
- "Kütüphaneleri bağla" sekmesi altında "Ekle" düğmesine tıklayın.
- wkhtmltox kütüphane dosyalarının bulunduğu dizine gidin (ör., C:\Program Files\wkhtmltopdf\lib) ve uygun kütüphane dosyasını seçin.
- Kütüphaneyi projenize eklemek için 'Aç' düğmesine tıklayın.
- Son olarak, diyalog kutusunu kapatmak için 'Tamam' a tıklayın.

Wkhtmltopdf kullanarak C++'da PDF Oluşturma Adımları
1. Gerekli Kütüphaneleri Dahil Etme
Başlamak için, C++ programımızda wkhtmltopdf kütüphanesinin işlevselliklerini kullanmak amacıyla gerekli üstbilgi dosyalarını dahil edeceğiz. Aşağıdaki başlık dosyalarını main.cpp kaynak kodu dosyanızın başına 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
2. GUI Bileşenini Devre Dışı Bırakma
GUI ile çalışmıyorsanız, hatalardan kaçınmak için devre dışı bırakmanız gerekir. Kod şu şekildedir:
wkhtmltopdf_init(false); // Initialize the wkhtmltopdf library in non-GUI mode
wkhtmltopdf_init(false); // Initialize the wkhtmltopdf library in non-GUI mode
3. Ayar ve Dönüştürücüyü Başlatma
Sonra, küresel ve nesne ayarları işaretçilerini başlatmamız ve ardından wkhtmltopdf çeviriciyi 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);
4. PDF İçeriği Ekleme
Şimdi, yeni oluşturduğumuz PDF belgesine bir miktar içerik eklemek için bir HTML dizgesi oluşturacağız. Kod şu şekildedir:
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());
5. HTML Dizgisini 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ü yöntemi sağlar. İşte kod parçası:
wkhtmltopdf_convert(converter); // Converts HTML content to PDF
wkhtmltopdf_convert(converter); // Converts HTML content to PDF
6. Bellek Tamponu Olarak Çıktı Alma
wkhtmltopdf_get_output fonksiyonu ile PDF verilerini bir bellek tampon akışı olarak alabiliriz. Ayrıca PDF'nin uzunluğunu da döndürür. Aşağıdaki örnek bu görevi yerine getirecektir:
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
7. PDF Dosyasını Kaydetme
pdfData işaretçisi şimdi wkhtmltopdf_converter'dan karakter akışına sahip olacak. PDF'yi bir dosyaya kaydetmek için önce PDF'yi nereye kaydetmek istediğimizi belirtiriz. Ardından, çıkış dosyası akışını kullanarak, dosyayı ikili modda açarız ve pdfData'yı, reinterpret_cast fonksiyonunu kullanarak tür dönüştürmesi yaparak yazarız. Son olarak, dosyayı kapatırız.
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
8. Belleği Serbest Bırakma
Başarılı bir şekilde bir PDF dosyası oluşturduktan sonra, Wkhtmltopdf tarafından tahsis edilen kaynakları temizlemek önemlidir, aksi takdirde bellek sızıntısına yol açar.
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
9. Kodu Çalıştırma ve PDF Dosyası Oluşturma
Şimdi projeyi derleyin ve F9 kullanarak kodu yürütün. Çıktı üretilir ve proje klasöründe kaydedilir. Ortaya çıkan PDF şöyledir:

Create PDF File in C
IronPDF
IronPDF, geliştiricilerin HTML'den PDF belgeleri oluşturmalarına olanak tanıyan bir .NET C# PDF kütüphanesidir. HTML'den PDF dosyaları oluşturma sürecini basitleştiren sezgisel bir API sağlar.
IronPDF, PDF'lerle çalışırken güçlü ve çok yönlüdür. Sadece basit HTML belgelerinden değil, aynı zamanda CSS stilizasyonu, JavaScript etkileşimleri ve dinamik içerik içeren karmaşık web sayfalarından da PDF oluşturur. Ayrıca, dönüştürme yöntemlerine hızlı erişim ile farklı PDF dönüştürücüleri geliştirebilirsiniz.
İşte IronPDF kullanarak PDF oluşturmak için bir örnek kod, HTML dizgisini PDF'ye dönüştürme:
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")
HTML içeriğini PDF olarak işlemek için ChromePdfRenderer örneğini oluşturuyoruz. HTML dizgesini alarak RenderHtmlAsPdf yöntemini renderer nesnesi üzerinde çağırıyoruz. Bu, PDF belgesini oluşturur ve ardından PDF belgesini SaveAs yöntemi ile kaydederiz.

IronPDF ile çeşitli kaynaklardan PDF oluşturma hakkında daha fazla ayrıntı için lütfen bu IronPDF kod örnekleri sayfasını ziyaret edin.
Sonuç
Bu makalede, wkhtmltopdf C++ Kütüphanesi ile C++'da PDF oluşturmayı ve ayrıca C#'ta PDF belgeleri oluşturmak için IronPDF kullanmayı öğrendik.
IronPDF ile, HTML içeriğinden PDF dosyaları üretmek .NET Framework dillerinde kolay bir hale gelir. Geniş kapsamlı özellik yelpazesi, C# projelerinde HTML'yi PDF'ye dönüştürme ihtiyaçı duyan geliştiriciler için değerli bir araç haline getirir. İster raporlar, ister faturalar veya HTML'yi PDF'ye hassas bir şekilde dönüştürmeyi gerektiren herhangi bir belge oluşturulması olsun, IronPDF güvenilir ve etkili bir çözümdür.
IronPDF, geliştirme amaçları için ücretsizdir ancak ticari kullanım için lisanslanması gerekir. Ayrıca, tüm işlevselliğini test etmek için ticari kullanım için bir ücretsiz deneme sunar. IronPDF'yi İndirin ve kendiniz deneyin.

