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

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:

  1. Sisteminizde yüklü bir C++ derleyicisi, örneğin GCC veya Clang. C++ programlamayı destekleyen herhangi bir IDE kullanabilirsiniz.
  2. 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.
  3. 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.

  1. 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.
  2. "Derleme seçenekleri" iletişim kutusunda, "Arama Dizinleri" sekmesine gidin.
  3. "Derleyici" sekmesi altında "Ekle" düğmesine tıklayın.
  4. wkhtmltox başlık dosyalarının bulunduğu dizini tarayın (örneğin, C:\Program Files\wkhtmltopdf\include) ve seçin.
  5. Son olarak, iletişim kutusunu kapatmak için "Tamam" a tıklayın.

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

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:

  1. 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.
  2. "Derleme seçenekleri" iletişim kutusunda, "Bağlayıcı ayarları" sekmesine gidin.
  3. "Kütüphaneleri bağla" sekmesi altında "Ekle" düğmesine tıklayın.
  4. 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.
  5. Kütüphaneyi projenize eklemek için 'Aç' düğmesine tıklayın.
  6. Son olarak, diyalog kutusunu kapatmak için 'Tamam' a tıklayın.

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

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

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

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);
C++

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());
C++

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

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

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

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

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:

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

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

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.

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

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.

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