IronPDF vs PDFTron (Apryse): 2025 İçin Tam C# PDF Kütüphanesi Karşılaştırması
.NET uygulamalarını PDF oluşturma ve manipülasyon gerektiren geliştirirken, doğru C# PDF kütüphanesini seçmek projenizin başarısı üzerinde önemli etkiler yaratabilir. Bu kapsamlı karşılaştırma, geliştiricilerin, özellikler, performans, fiyatlandırma ve gerçek dünya kullanım örneklerine dayalı bilinçli bir karar vermelerine yardımcı olmak için .NET PDF kütüphaneleri arasında etkileyici iki kütüphane olan .NET ve GemBox.Pdf'yi inceler.
Hızlı Karşılaştırma Genel Bakış
| Kategori | Özellik/Aspect | IronPDF | GemBox.Pdf | Ana Avantaj |
|---|---|---|---|---|
| Çekirdek Mimari | Tasarım Felsefesi | HTML-öncelikli, Chrome renderleme | PDF-yerel manipülasyon | Bağlama bağlı |
| API Karmaşıklığı | RenderHtmlAsPdf() gibi basit yöntemler |
Düşük seviye PDF objeleri | IronPDF: Daha hızlı geliştirme | |
| Öğrenme Eğrisi | 1-2 gün tipik | 3-5 gün tipik | IronPDF: Daha hızlı benimseme | |
| Platform Desteği | Çapraz Platform | Windows, Linux, macOS, Docker | Windows, Linux, macOS, Android, iOS | GemBox: Mobil destek |
| .NET Sürümleri | .NET 10, 9, 8, 7, 6, 5, Core 3.1+, Framework 4.6.2+ | .NET 6, Standard 2.0, Framework 3.5+ | .NET: En son .NET desteği | |
| Bulut Platformları | Azure/AWS optimize edilmiş | Standart bulut desteği | IronPDF: Bulut hazır | |
| HTML'den PDF'e | Renderleme Motoru | Tam Chrome V8 motoru | Chromium tabanlı motor | Her ikisi de: Chromium render |
| CSS3/HTML5 Desteği | Tam destek | HTML5/CSS3 desteği | Her ikisi de: Modern web standartları | |
| JavaScript Yürütme | Tam JavaScript desteği | JavaScript yürütme desteklenir | Her ikisi de: Dinamik içerik | |
| İşleme Hızı | ~125ms tipik | Chromium tabanlı render | IronPDF: Belgelenmiş render süresi | |
| Geliştirici Deneyimi | Kod Örnekleri | 100+ çalışmaya hazır örnek | 100+ örnek mevcut | Her ikisi: Kapsamlı kaynaklar |
| Dokümantasyon | Eğitimler, nasıl yapılır, videolar | API dokümantasyonu odaklı | IronPDF: Birden fazla öğrenme yolu | |
| İçerik Manipülasyonu | PDF'leri Birleştir/Böl | Yerleşik yöntemler | Yerleşik yöntemler | Her ikisi: Standart özellikler |
| Metin Çıkarma | Unicode desteği, OCR entegrasyonu | Unicode desteği, yerleşik OCR | GemBox: Yerleşik OCR | |
| Form Desteği | HTML formlarından PDF formlarına | Formlar oluşturma, doldurma, düzleştirme | Bağlama bağlı | |
| Performans Ölçütleri | Bellek Kullanımı | 10MB altında tipik | Düşük bellek ihtiyacı | Her ikisi: Etkin |
| İş parçacığı desteği | Yerel async/await optimizasyonu | İş parçacığı güvenli operasyonlar | IronPDF: Daha iyi asenkron destek | |
| Security & Encryption | Şifreleme Seviyeleri | AES-256, özel işlemciler | AES-256 standart | Her ikisi de: Endüstri standardı |
| Dijital İmzalar | Entegre, görsel imzalar | Dijital imza desteği | Her ikisi: İmza desteği | |
| Licensing & Pricing | Giriş Seviyesi | Lite: $999 (1 geliştirici, 1 proje) | Tek Geliştirici: `$890` (1 geliştirici, sınırsız proje) | IronPDF: Daha düşük giriş maliyeti |
| Yeniden Dağıtım | +$1,999 telif ücretsiz | Dahil, sınırsız dağıtımlar | GemBox: Daha iyi dağıtım koşulları | |
| Süit Seçeneği | Iron Suite: $2,998 (9 ürün) | GemBox Paketi: `$2,200` (6 ürün, 1 geliştirici) | IronPDF: Daha iyi suite değeri | |
| Destek | Destek Dahil | Evet, 24/5 mühendislik desteği | Evet, 1 yıl profesyonel destek | Her ikisi: İyi destek |
| Yanıt Süresi | 24-48 saat tipik | 1 iş günü içinde | Her ikisi: Hızlı yanıt | |
| En İyi Kullanım Alanı | Kullanım Durumları | HTML'den PDF'ye, web uygulamaları, raporlar | PDF manipülasyonu, formlar, OCR | Bağlama bağlı |
IronPDF Kütüphanesi Nedir?
.NET, geliştiriciler için HTML'den PDF'ye dönüşümü sorunsuz hale getirmeye özel olarak tasarlanmış kapsamlı bir .NET PDF kütüphanesi olarak öne çıkıyor. Chromium render motoru ile oluşturulmuştur ve C#, F# ve VB.NET uygulamalarında PDF üretimine yaklaşımı yeniden şekillendirir.
Kütüphanenin felsefesi mevcut web geliştirme becerilerini kullanmaya dayanır. Karmaşık PDF API'lerini öğrenmek yerine, geliştiriciler CSS ve JavaScript ile tanıdık HTML kullanarak gelişmiş PDF belgeleri oluşturabilir. Bu yaklaşım, geliştirme süresini önemli ölçüde azaltırken modern web standartlarıyla uyumlu piksel mükemmelliğinde render sağlar.
IronPDF'nin Temel Özellikleri
IronPDF, geliştiricilerin karşılaşabileceği hemen hemen her PDF görevi için kapsamlı bir özellik seti sunar:
HTML'den PDF'ye Dönüşüm Mükemmelliği
- Chrome V8 Motoru: Google Chrome ile aynı motoru kullanarak HTML renderi yapar, %98+ tarayıcı uyumluluğu sağlar
- Tam CSS3/HTML5 Desteği: Flexbox, grid ve animasyonlar dahil olmak üzere modern web standartlarına tam destek
- JavaScript Çalıştırma: Dinamik içeriği mükemmel bir şekilde yakalayarak renderlemeden önce JavaScript'i işler
- Duyarlı Tasarım: Özelleştirilebilir görünüm ayarlarıyla duyarlı düzenleri ele alır
- Web Font Desteği: Google Fonts, özel fontlar ve ikon fontları doğru bir şekilde renderlar
Gelişmiş PDF Manipülasyonu
- PDF'leri Birleştirme ve Bölme: Basit yöntem çağrıları ile birden fazla PDF'yi birleştirin veya belirli sayfaları çıkarın
- Dijital İmzalar: Sertifika desteği ile kriptografik imzalar uygulayın
- Form Yönetimi: HTML'den doldurulabilir formlar oluşturun veya mevcut PDF formlarını yönetin
- Filigranlar ve Damgalar: Saydamlık kontrolü ile metin veya görüntü filigranları ekleyin
- Başlıklar ve Altbilgiler: Sayfa numaralandırması ile dinamik başlıklar/altbilgiler
Güvenlik ve Uyumluluk
- Şifreleme: Özel izin ayarları ile AES-256 şifreleme
- PDF/A Uyumluluğu: Uzun süreli saklama için arşiv kalitesinde PDF'ler oluşturun
- Kapatma: Hassas içeriği kalıcı olarak kaldırın
- Şifre Koruması: Kullanıcı ve sahibi şifre desteği ile detaylı izinler
IronPDF Kod Örneği: Gelişmiş Özelliklerle HTML'den PDF'ye
using IronPdf;
using IronPdf.Rendering;
// Configure the Chrome renderer with advanced options
var renderer = new ChromePdfRenderer
{
RenderingOptions = new ChromePdfRenderOptions
{
// Set paper orientation and size
PaperOrientation = PdfPaperOrientation.Portrait,
PaperSize = PdfPaperSize.A4,
// Configure margins (in millimeters)
MarginTop = 25,
MarginBottom = 25,
MarginLeft = 20,
MarginRight = 20,
// Enable JavaScript execution
EnableJavaScript = true,
RenderDelay = 1000, // Wait 1 second for JS to complete
// Print background colors and images
PrintHtmlBackgrounds = true,
// Create PDF forms from HTML form elements
CreatePdfFormsFromHtml = true,
// Custom header and footer
HtmlHeader = new HtmlHeaderFooter
{
Height = 20,
HtmlFragment = "<div style='text-align: center; font-size: 12px;'>Company Report - {page} of {total-pages}</div>",
DrawDividerLine = true
},
HtmlFooter = new HtmlHeaderFooter
{
Height = 15,
HtmlFragment = "<div style='text-align: center; font-size: 10px;'>© 2025 Company Name. Confidential.</div>"
}
}
};
// Convert complex HTML with CSS and JavaScript
string htmlContent = @"
<!DOCTYPE html>
<html>
<head>
<style>
body { font-family: 'Segoe UI', Arial, sans-serif; line-height: 1.6; }
.invoice-header {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
padding: 30px;
border-radius: 10px;
margin-bottom: 30px;
}
.data-table {
width: 100%;
border-collapse: collapse;
margin-top: 20px;
}
.data-table th {
background-color: #f8f9fa;
padding: 12px;
text-align: left;
border-bottom: 2px solid #dee2e6;
}
.data-table td {
padding: 10px;
border-bottom: 1px solid #dee2e6;
}
.total-section {
margin-top: 30px;
text-align: right;
font-size: 18px;
font-weight: bold;
}
@media print {
.no-print { display: none; }
}
</style>
</head>
<body>
<div class='invoice-header'>
<h1>Invoice #INV-2025-001</h1>
<p>Date: <span id='current-date'></span></p>
</div>
<table class='data-table'>
<thead>
<tr>
<th>Item Description</th>
<th>Quantity</th>
<th>Unit Price</th>
<th>Total</th>
</tr>
</thead>
<tbody>
<tr>
<td>Professional PDF Library License</td>
<td>1</td>
<td>$999.00</td>
<td>$999.00</td>
</tr>
<tr>
<td>Priority Support (1 Year)</td>
<td>1</td>
<td>$299.00</td>
<td>$299.00</td>
</tr>
</tbody>
</table>
<div class='total-section'>
<p>Subtotal: $1,048.00</p>
<p>Tax (8%): $83.84</p>
<p style='color: #667eea; font-size: 24px;'>Total: $1,131.84</p>
</div>
<script>
// Dynamic date insertion
document.getElementById('current-date').textContent = new Date().toLocaleDateString('en-US', {
year: 'numeric',
month: 'long',
day: 'numeric'
});
</script>
</body>
</html>";
// Render the HTML to PDF
PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlContent);
// Apply additional security settings
pdf.SecuritySettings.OwnerPassword = "admin123";
pdf.SecuritySettings.UserPassword = "user123";
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.NoPrint;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserAnnotations = false;
pdf.SecuritySettings.AllowUserFormData = true;
// Add metadata
pdf.MetaData.Author = "Invoice System";
pdf.MetaData.Title = "Invoice INV-2025-001";
pdf.MetaData.Subject = "Customer Invoice";
pdf.MetaData.Keywords = "invoice, payment, 2025";
pdf.MetaData.CreationDate = DateTime.Now;
// Save the PDF
pdf.SaveAs("invoice-2025-001.pdf");
// Optional: Save as PDF/A for archival
pdf.SaveAsPdfA("invoice-2025-001-archive.pdf", PdfAVersions.PdfA3);
using IronPdf;
using IronPdf.Rendering;
// Configure the Chrome renderer with advanced options
var renderer = new ChromePdfRenderer
{
RenderingOptions = new ChromePdfRenderOptions
{
// Set paper orientation and size
PaperOrientation = PdfPaperOrientation.Portrait,
PaperSize = PdfPaperSize.A4,
// Configure margins (in millimeters)
MarginTop = 25,
MarginBottom = 25,
MarginLeft = 20,
MarginRight = 20,
// Enable JavaScript execution
EnableJavaScript = true,
RenderDelay = 1000, // Wait 1 second for JS to complete
// Print background colors and images
PrintHtmlBackgrounds = true,
// Create PDF forms from HTML form elements
CreatePdfFormsFromHtml = true,
// Custom header and footer
HtmlHeader = new HtmlHeaderFooter
{
Height = 20,
HtmlFragment = "<div style='text-align: center; font-size: 12px;'>Company Report - {page} of {total-pages}</div>",
DrawDividerLine = true
},
HtmlFooter = new HtmlHeaderFooter
{
Height = 15,
HtmlFragment = "<div style='text-align: center; font-size: 10px;'>© 2025 Company Name. Confidential.</div>"
}
}
};
// Convert complex HTML with CSS and JavaScript
string htmlContent = @"
<!DOCTYPE html>
<html>
<head>
<style>
body { font-family: 'Segoe UI', Arial, sans-serif; line-height: 1.6; }
.invoice-header {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
padding: 30px;
border-radius: 10px;
margin-bottom: 30px;
}
.data-table {
width: 100%;
border-collapse: collapse;
margin-top: 20px;
}
.data-table th {
background-color: #f8f9fa;
padding: 12px;
text-align: left;
border-bottom: 2px solid #dee2e6;
}
.data-table td {
padding: 10px;
border-bottom: 1px solid #dee2e6;
}
.total-section {
margin-top: 30px;
text-align: right;
font-size: 18px;
font-weight: bold;
}
@media print {
.no-print { display: none; }
}
</style>
</head>
<body>
<div class='invoice-header'>
<h1>Invoice #INV-2025-001</h1>
<p>Date: <span id='current-date'></span></p>
</div>
<table class='data-table'>
<thead>
<tr>
<th>Item Description</th>
<th>Quantity</th>
<th>Unit Price</th>
<th>Total</th>
</tr>
</thead>
<tbody>
<tr>
<td>Professional PDF Library License</td>
<td>1</td>
<td>$999.00</td>
<td>$999.00</td>
</tr>
<tr>
<td>Priority Support (1 Year)</td>
<td>1</td>
<td>$299.00</td>
<td>$299.00</td>
</tr>
</tbody>
</table>
<div class='total-section'>
<p>Subtotal: $1,048.00</p>
<p>Tax (8%): $83.84</p>
<p style='color: #667eea; font-size: 24px;'>Total: $1,131.84</p>
</div>
<script>
// Dynamic date insertion
document.getElementById('current-date').textContent = new Date().toLocaleDateString('en-US', {
year: 'numeric',
month: 'long',
day: 'numeric'
});
</script>
</body>
</html>";
// Render the HTML to PDF
PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlContent);
// Apply additional security settings
pdf.SecuritySettings.OwnerPassword = "admin123";
pdf.SecuritySettings.UserPassword = "user123";
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.NoPrint;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserAnnotations = false;
pdf.SecuritySettings.AllowUserFormData = true;
// Add metadata
pdf.MetaData.Author = "Invoice System";
pdf.MetaData.Title = "Invoice INV-2025-001";
pdf.MetaData.Subject = "Customer Invoice";
pdf.MetaData.Keywords = "invoice, payment, 2025";
pdf.MetaData.CreationDate = DateTime.Now;
// Save the PDF
pdf.SaveAs("invoice-2025-001.pdf");
// Optional: Save as PDF/A for archival
pdf.SaveAsPdfA("invoice-2025-001-archive.pdf", PdfAVersions.PdfA3);
Imports IronPdf
Imports IronPdf.Rendering
' Configure the Chrome renderer with advanced options
Dim renderer As New ChromePdfRenderer With {
.RenderingOptions = New ChromePdfRenderOptions With {
' Set paper orientation and size
.PaperOrientation = PdfPaperOrientation.Portrait,
.PaperSize = PdfPaperSize.A4,
' Configure margins (in millimeters)
.MarginTop = 25,
.MarginBottom = 25,
.MarginLeft = 20,
.MarginRight = 20,
' Enable JavaScript execution
.EnableJavaScript = True,
.RenderDelay = 1000, ' Wait 1 second for JS to complete
' Print background colors and images
.PrintHtmlBackgrounds = True,
' Create PDF forms from HTML form elements
.CreatePdfFormsFromHtml = True,
' Custom header and footer
.HtmlHeader = New HtmlHeaderFooter With {
.Height = 20,
.HtmlFragment = "<div style='text-align: center; font-size: 12px;'>Company Report - {page} of {total-pages}</div>",
.DrawDividerLine = True
},
.HtmlFooter = New HtmlHeaderFooter With {
.Height = 15,
.HtmlFragment = "<div style='text-align: center; font-size: 10px;'>© 2025 Company Name. Confidential.</div>"
}
}
}
' Convert complex HTML with CSS and JavaScript
Dim htmlContent As String = "
<!DOCTYPE html>
<html>
<head>
<style>
body { font-family: 'Segoe UI', Arial, sans-serif; line-height: 1.6; }
.invoice-header {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
padding: 30px;
border-radius: 10px;
margin-bottom: 30px;
}
.data-table {
width: 100%;
border-collapse: collapse;
margin-top: 20px;
}
.data-table th {
background-color: #f8f9fa;
padding: 12px;
text-align: left;
border-bottom: 2px solid #dee2e6;
}
.data-table td {
padding: 10px;
border-bottom: 1px solid #dee2e6;
}
.total-section {
margin-top: 30px;
text-align: right;
font-size: 18px;
font-weight: bold;
}
@media print {
.no-print { display: none; }
}
</style>
</head>
<body>
<div class='invoice-header'>
<h1>Invoice #INV-2025-001</h1>
<p>Date: <span id='current-date'></span></p>
</div>
<table class='data-table'>
<thead>
<tr>
<th>Item Description</th>
<th>Quantity</th>
<th>Unit Price</th>
<th>Total</th>
</tr>
</thead>
<tbody>
<tr>
<td>Professional PDF Library License</td>
<td>1</td>
<td>$999.00</td>
<td>$999.00</td>
</tr>
<tr>
<td>Priority Support (1 Year)</td>
<td>1</td>
<td>$299.00</td>
<td>$299.00</td>
</tr>
</tbody>
</table>
<div class='total-section'>
<p>Subtotal: $1,048.00</p>
<p>Tax (8%): $83.84</p>
<p style='color: #667eea; font-size: 24px;'>Total: $1,131.84</p>
</div>
<script>
// Dynamic date insertion
document.getElementById('current-date').textContent = new Date().toLocaleDateString('en-US', {
year: 'numeric',
month: 'long',
day: 'numeric'
});
</script>
</body>
</html>"
' Render the HTML to PDF
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(htmlContent)
' Apply additional security settings
pdf.SecuritySettings.OwnerPassword = "admin123"
pdf.SecuritySettings.UserPassword = "user123"
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.NoPrint
pdf.SecuritySettings.AllowUserCopyPasteContent = False
pdf.SecuritySettings.AllowUserAnnotations = False
pdf.SecuritySettings.AllowUserFormData = True
' Add metadata
pdf.MetaData.Author = "Invoice System"
pdf.MetaData.Title = "Invoice INV-2025-001"
pdf.MetaData.Subject = "Customer Invoice"
pdf.MetaData.Keywords = "invoice, payment, 2025"
pdf.MetaData.CreationDate = DateTime.Now
' Save the PDF
pdf.SaveAs("invoice-2025-001.pdf")
' Optional: Save as PDF/A for archival
pdf.SaveAsPdfA("invoice-2025-001-archive.pdf", PdfAVersions.PdfA3)
Bu örnek, IronPDF'nin gradyanlar, tablolar, dinamik JavaScript içeriği ve güvenlik ayarları ve meta veriler gibi gelişmiş PDF özellikleri ile karmaşık HTML düzenlerini nasıl ele aldığını göstermektedir. Kütüphane her şeyi sorunsuz bir şekilde işler ve HTML tasarımıyla tam olarak eşleşen profesyonel bir PDF üretir.
GemBox.Pdf Kütüphanesi Nedir?
GemBox.Pdf, .NET'te PDF manipülasyonu için farklı bir yaklaşıma sahiptir. HTML'den PDF'ye dönüşüme odaklanmak yerine, GemBox.Pdf düşük seviye PDF işlemleri ve doğrudan PDF manipülasyonu üzerine uzmanlaşmıştır. Bu, geliştiricilerin PDF yapısı ve içeriği üzerinde hassas kontrol gerektiği senaryolar için özellikle uygundur.
Kütüphane, mevcut PDF belgeleriyle çalışmakta mükemmeldir ve PDF dosyalarını okuyup, düzenleyip, genel düzeyde manipüle etmek için sağlam özellikler sunar. GemBox.Pdf, Adobe Acrobat bağımlılıkları olmadan çalışır ve dağıtımı çeşitli ortamlarda kolaylaştırır.
GemBox.Pdf'nin Temel Özellikleri
GemBox.Pdf kapsamlı PDF manipülasyon yetenekleri sunar:
PDF Belge İşlemleri
- PDF Okuma ve Yazma: PDF yapısına ve içeriğine doğrudan erişim
- Birleştirme ve Bölme: Birden fazla PDF'yi birleştirin veya belirli sayfaları çıkarın
- Sayfa Klonlama: Farklı PDF belgeleri arasında sayfa ithal edin
- Sayfa Yönetimi: Sayfaları programlı olarak ekleyin, kaldırın veya yeniden sıralayın
İçerik Çıkarma ve Manipülasyon
- Metin Çıkarma: Konum bilgileriyle Unicode metni çıkarın
- Görüntü Çıkarma: PDF belgelerinden gömülü görüntüleri geri alın
- OCR Desteği: Taratılmış belgeler için yerleşik optik karakter tanıma
- İçerik Kapatma: Hassas bilgileri kalıcı olarak kaldırın
Formlar ve Etkileşimlilik
- Etkileşimli Formlar: PDF formlarını oluşturun, doldurun, düzleştirin ve dışa aktarın
- Form Alanı Yönetimi: Tüm form alanı türlerine programlı erişim
- Anotasyonlar: Bağlantılar ve diğer PDF anotasyonları ekleyin
Grafikler ve Görsel Öğeler
- Çizim İşlemleri: Metin, resim ve vektör grafikler ekleyin
- Şekil ve Yollar: Karmaşık vektör çizimleri oluşturun
- Filigranlar: Metin ve görüntü filigranları uygulayın
- İçerik Grupları: İçeriği mantıksal gruplara organize edin
GemBox.Pdf Kod Örneği: PDF Manipülasyonu ve Formlar
using GemBox.Pdf;
using GemBox.Pdf.Content;
using GemBox.Pdf.Forms;
using GemBox.Pdf.Security;
// Set license (use FREE-LIMITED-KEY for evaluation)
ComponentInfo.SetLicense("FREE-LIMITED-KEY");
// Create a new PDF document from scratch
using (var document = new PdfDocument())
{
// Add a page with custom size
var page = document.Pages.Add();
// Create formatted text with multiple styles
using (var formattedText = new PdfFormattedText())
{
formattedText.FontSize = 24;
formattedText.FontFamily = new PdfFontFamily("Arial");
formattedText.Color = PdfColor.FromRgb(0.2, 0.2, 0.6);
formattedText.AppendLine("GemBox.Pdf Document Example");
formattedText.FontSize = 12;
formattedText.Color = PdfColor.FromRgb(0, 0, 0);
formattedText.AppendLine("This document demonstrates PDF creation and manipulation features.");
// Draw text to the page
page.Content.DrawText(formattedText, new PdfPoint(50, 700));
}
// Add a form to the document
var form = document.Form;
// Create text field
var textField = form.Fields.AddText(page, 50, 600, 200, 30);
textField.Name = "CustomerName";
textField.Value = "Enter your name";
textField.Format.Fill.Color = PdfColor.FromRgb(0.95, 0.95, 0.95);
// Create checkbox
var checkBox = form.Fields.AddCheck(page, 50, 550, 20, 20);
checkBox.Name = "Agreement";
checkBox.Checked = false;
// Add descriptive text next to checkbox
using (var checkboxLabel = new PdfFormattedText())
{
checkboxLabel.Append("I agree to the terms and conditions");
page.Content.DrawText(checkboxLabel, new PdfPoint(80, 555));
}
// Create submit button
var submitButton = form.Fields.AddButton(page, 50, 500, 100, 30);
submitButton.Name = "Submit";
submitButton.Actions.Activate = PdfActionType.Named;
// Add button appearance
using (var buttonText = new PdfFormattedText())
{
buttonText.Append("Submit Form");
buttonText.FontSize = 14;
buttonText.Color = PdfColor.FromRgb(1, 1, 1);
// Create button appearance stream
var appearance = submitButton.Appearance.Normal;
appearance.Fill.Color = PdfColor.FromRgb(0.2, 0.4, 0.8);
appearance.Stroke.Color = PdfColor.FromRgb(0.1, 0.2, 0.4);
appearance.Stroke.Width = 1;
// Draw button background
appearance.DrawRectangle(new PdfPoint(0, 0), new PdfSize(100, 30), true, true);
// Draw button text
appearance.DrawText(buttonText, new PdfPoint(20, 10));
}
// Add a table using low-level graphics
var tableTop = 400;
var tableLeft = 50;
var cellWidth = 150;
var cellHeight = 30;
// Draw table headers
page.Content.DrawRectangle(new PdfPoint(tableLeft, tableTop),
new PdfSize(cellWidth * 3, cellHeight), true, true);
using (var headerText = new PdfFormattedText())
{
headerText.FontSize = 12;
headerText.Color = PdfColor.FromRgb(1, 1, 1);
headerText.Append("Product");
page.Content.DrawText(headerText, new PdfPoint(tableLeft + 10, tableTop + 10));
headerText.Clear();
headerText.Append("Quantity");
page.Content.DrawText(headerText, new PdfPoint(tableLeft + cellWidth + 10, tableTop + 10));
headerText.Clear();
headerText.Append("Price");
page.Content.DrawText(headerText, new PdfPoint(tableLeft + cellWidth * 2 + 10, tableTop + 10));
}
// Draw table data rows
var rowData = new[]
{
new { Product = "PDF Library", Quantity = "1", Price = "$890" },
new { Product = "Support Plan", Quantity = "1", Price = "$299" },
new { Product = "Training", Quantity = "2", Price = "$500" }
};
var currentY = tableTop - cellHeight;
foreach (var row in rowData)
{
// Draw cell borders
page.Content.DrawRectangle(new PdfPoint(tableLeft, currentY),
new PdfSize(cellWidth, cellHeight), false, true);
page.Content.DrawRectangle(new PdfPoint(tableLeft + cellWidth, currentY),
new PdfSize(cellWidth, cellHeight), false, true);
page.Content.DrawRectangle(new PdfPoint(tableLeft + cellWidth * 2, currentY),
new PdfSize(cellWidth, cellHeight), false, true);
// Draw cell content
using (var cellText = new PdfFormattedText())
{
cellText.FontSize = 11;
cellText.Append(row.Product);
page.Content.DrawText(cellText, new PdfPoint(tableLeft + 10, currentY + 10));
cellText.Clear();
cellText.Append(row.Quantity);
page.Content.DrawText(cellText, new PdfPoint(tableLeft + cellWidth + 10, currentY + 10));
cellText.Clear();
cellText.Append(row.Price);
page.Content.DrawText(cellText, new PdfPoint(tableLeft + cellWidth * 2 + 10, currentY + 10));
}
currentY -= cellHeight;
}
// Apply security settings
var securitySettings = document.SecuritySettings;
securitySettings.DocumentOpenPassword = "user123";
securitySettings.PermissionsPassword = "owner123";
securitySettings.Permissions = PdfPermissions.AllowPrint | PdfPermissions.AllowFormFill;
// Save the document
document.Save("gembox-example.pdf");
}
// Example: Manipulating existing PDF
using (var existingDoc = PdfDocument.Load("existing-document.pdf"))
{
// Extract text from first page
var page = existingDoc.Pages[0];
var text = page.Content.GetText();
Console.WriteLine($"Extracted text: {text}");
// Add watermark to all pages
foreach (var p in existingDoc.Pages)
{
using (var watermark = new PdfFormattedText())
{
watermark.Append("CONFIDENTIAL");
watermark.FontSize = 50;
watermark.Color = PdfColor.FromRgb(0.5, 0.5, 0.5);
watermark.Opacity = 0.3;
// Calculate center position
var pageWidth = p.MediaBox.Width;
var pageHeight = p.MediaBox.Height;
var textWidth = watermark.Width;
var textHeight = watermark.Height;
var x = (pageWidth - textWidth) / 2;
var y = (pageHeight - textHeight) / 2;
// Draw watermark diagonally
p.Content.SaveGraphicsState();
p.Content.SetTransform(1, 0, 0, 1, x, y);
p.Content.SetTransform(0.7071, 0.7071, -0.7071, 0.7071, 0, 0);
p.Content.DrawText(watermark, new PdfPoint(0, 0));
p.Content.RestoreGraphicsState();
}
}
existingDoc.Save("watermarked-document.pdf");
}
using GemBox.Pdf;
using GemBox.Pdf.Content;
using GemBox.Pdf.Forms;
using GemBox.Pdf.Security;
// Set license (use FREE-LIMITED-KEY for evaluation)
ComponentInfo.SetLicense("FREE-LIMITED-KEY");
// Create a new PDF document from scratch
using (var document = new PdfDocument())
{
// Add a page with custom size
var page = document.Pages.Add();
// Create formatted text with multiple styles
using (var formattedText = new PdfFormattedText())
{
formattedText.FontSize = 24;
formattedText.FontFamily = new PdfFontFamily("Arial");
formattedText.Color = PdfColor.FromRgb(0.2, 0.2, 0.6);
formattedText.AppendLine("GemBox.Pdf Document Example");
formattedText.FontSize = 12;
formattedText.Color = PdfColor.FromRgb(0, 0, 0);
formattedText.AppendLine("This document demonstrates PDF creation and manipulation features.");
// Draw text to the page
page.Content.DrawText(formattedText, new PdfPoint(50, 700));
}
// Add a form to the document
var form = document.Form;
// Create text field
var textField = form.Fields.AddText(page, 50, 600, 200, 30);
textField.Name = "CustomerName";
textField.Value = "Enter your name";
textField.Format.Fill.Color = PdfColor.FromRgb(0.95, 0.95, 0.95);
// Create checkbox
var checkBox = form.Fields.AddCheck(page, 50, 550, 20, 20);
checkBox.Name = "Agreement";
checkBox.Checked = false;
// Add descriptive text next to checkbox
using (var checkboxLabel = new PdfFormattedText())
{
checkboxLabel.Append("I agree to the terms and conditions");
page.Content.DrawText(checkboxLabel, new PdfPoint(80, 555));
}
// Create submit button
var submitButton = form.Fields.AddButton(page, 50, 500, 100, 30);
submitButton.Name = "Submit";
submitButton.Actions.Activate = PdfActionType.Named;
// Add button appearance
using (var buttonText = new PdfFormattedText())
{
buttonText.Append("Submit Form");
buttonText.FontSize = 14;
buttonText.Color = PdfColor.FromRgb(1, 1, 1);
// Create button appearance stream
var appearance = submitButton.Appearance.Normal;
appearance.Fill.Color = PdfColor.FromRgb(0.2, 0.4, 0.8);
appearance.Stroke.Color = PdfColor.FromRgb(0.1, 0.2, 0.4);
appearance.Stroke.Width = 1;
// Draw button background
appearance.DrawRectangle(new PdfPoint(0, 0), new PdfSize(100, 30), true, true);
// Draw button text
appearance.DrawText(buttonText, new PdfPoint(20, 10));
}
// Add a table using low-level graphics
var tableTop = 400;
var tableLeft = 50;
var cellWidth = 150;
var cellHeight = 30;
// Draw table headers
page.Content.DrawRectangle(new PdfPoint(tableLeft, tableTop),
new PdfSize(cellWidth * 3, cellHeight), true, true);
using (var headerText = new PdfFormattedText())
{
headerText.FontSize = 12;
headerText.Color = PdfColor.FromRgb(1, 1, 1);
headerText.Append("Product");
page.Content.DrawText(headerText, new PdfPoint(tableLeft + 10, tableTop + 10));
headerText.Clear();
headerText.Append("Quantity");
page.Content.DrawText(headerText, new PdfPoint(tableLeft + cellWidth + 10, tableTop + 10));
headerText.Clear();
headerText.Append("Price");
page.Content.DrawText(headerText, new PdfPoint(tableLeft + cellWidth * 2 + 10, tableTop + 10));
}
// Draw table data rows
var rowData = new[]
{
new { Product = "PDF Library", Quantity = "1", Price = "$890" },
new { Product = "Support Plan", Quantity = "1", Price = "$299" },
new { Product = "Training", Quantity = "2", Price = "$500" }
};
var currentY = tableTop - cellHeight;
foreach (var row in rowData)
{
// Draw cell borders
page.Content.DrawRectangle(new PdfPoint(tableLeft, currentY),
new PdfSize(cellWidth, cellHeight), false, true);
page.Content.DrawRectangle(new PdfPoint(tableLeft + cellWidth, currentY),
new PdfSize(cellWidth, cellHeight), false, true);
page.Content.DrawRectangle(new PdfPoint(tableLeft + cellWidth * 2, currentY),
new PdfSize(cellWidth, cellHeight), false, true);
// Draw cell content
using (var cellText = new PdfFormattedText())
{
cellText.FontSize = 11;
cellText.Append(row.Product);
page.Content.DrawText(cellText, new PdfPoint(tableLeft + 10, currentY + 10));
cellText.Clear();
cellText.Append(row.Quantity);
page.Content.DrawText(cellText, new PdfPoint(tableLeft + cellWidth + 10, currentY + 10));
cellText.Clear();
cellText.Append(row.Price);
page.Content.DrawText(cellText, new PdfPoint(tableLeft + cellWidth * 2 + 10, currentY + 10));
}
currentY -= cellHeight;
}
// Apply security settings
var securitySettings = document.SecuritySettings;
securitySettings.DocumentOpenPassword = "user123";
securitySettings.PermissionsPassword = "owner123";
securitySettings.Permissions = PdfPermissions.AllowPrint | PdfPermissions.AllowFormFill;
// Save the document
document.Save("gembox-example.pdf");
}
// Example: Manipulating existing PDF
using (var existingDoc = PdfDocument.Load("existing-document.pdf"))
{
// Extract text from first page
var page = existingDoc.Pages[0];
var text = page.Content.GetText();
Console.WriteLine($"Extracted text: {text}");
// Add watermark to all pages
foreach (var p in existingDoc.Pages)
{
using (var watermark = new PdfFormattedText())
{
watermark.Append("CONFIDENTIAL");
watermark.FontSize = 50;
watermark.Color = PdfColor.FromRgb(0.5, 0.5, 0.5);
watermark.Opacity = 0.3;
// Calculate center position
var pageWidth = p.MediaBox.Width;
var pageHeight = p.MediaBox.Height;
var textWidth = watermark.Width;
var textHeight = watermark.Height;
var x = (pageWidth - textWidth) / 2;
var y = (pageHeight - textHeight) / 2;
// Draw watermark diagonally
p.Content.SaveGraphicsState();
p.Content.SetTransform(1, 0, 0, 1, x, y);
p.Content.SetTransform(0.7071, 0.7071, -0.7071, 0.7071, 0, 0);
p.Content.DrawText(watermark, new PdfPoint(0, 0));
p.Content.RestoreGraphicsState();
}
}
existingDoc.Save("watermarked-document.pdf");
}
Imports GemBox.Pdf
Imports GemBox.Pdf.Content
Imports GemBox.Pdf.Forms
Imports GemBox.Pdf.Security
' Set license (use FREE-LIMITED-KEY for evaluation)
ComponentInfo.SetLicense("FREE-LIMITED-KEY")
' Create a new PDF document from scratch
Using document = New PdfDocument()
' Add a page with custom size
Dim page = document.Pages.Add()
' Create formatted text with multiple styles
Using formattedText = New PdfFormattedText()
formattedText.FontSize = 24
formattedText.FontFamily = New PdfFontFamily("Arial")
formattedText.Color = PdfColor.FromRgb(0.2, 0.2, 0.6)
formattedText.AppendLine("GemBox.Pdf Document Example")
formattedText.FontSize = 12
formattedText.Color = PdfColor.FromRgb(0, 0, 0)
formattedText.AppendLine("This document demonstrates PDF creation and manipulation features.")
' Draw text to the page
page.Content.DrawText(formattedText, New PdfPoint(50, 700))
End Using
' Add a form to the document
Dim form = document.Form
' Create text field
Dim textField = form.Fields.AddText(page, 50, 600, 200, 30)
textField.Name = "CustomerName"
textField.Value = "Enter your name"
textField.Format.Fill.Color = PdfColor.FromRgb(0.95, 0.95, 0.95)
' Create checkbox
Dim checkBox = form.Fields.AddCheck(page, 50, 550, 20, 20)
checkBox.Name = "Agreement"
checkBox.Checked = False
' Add descriptive text next to checkbox
Using checkboxLabel = New PdfFormattedText()
checkboxLabel.Append("I agree to the terms and conditions")
page.Content.DrawText(checkboxLabel, New PdfPoint(80, 555))
End Using
' Create submit button
Dim submitButton = form.Fields.AddButton(page, 50, 500, 100, 30)
submitButton.Name = "Submit"
submitButton.Actions.Activate = PdfActionType.Named
' Add button appearance
Using buttonText = New PdfFormattedText()
buttonText.Append("Submit Form")
buttonText.FontSize = 14
buttonText.Color = PdfColor.FromRgb(1, 1, 1)
' Create button appearance stream
Dim appearance = submitButton.Appearance.Normal
appearance.Fill.Color = PdfColor.FromRgb(0.2, 0.4, 0.8)
appearance.Stroke.Color = PdfColor.FromRgb(0.1, 0.2, 0.4)
appearance.Stroke.Width = 1
' Draw button background
appearance.DrawRectangle(New PdfPoint(0, 0), New PdfSize(100, 30), True, True)
' Draw button text
appearance.DrawText(buttonText, New PdfPoint(20, 10))
End Using
' Add a table using low-level graphics
Dim tableTop = 400
Dim tableLeft = 50
Dim cellWidth = 150
Dim cellHeight = 30
' Draw table headers
page.Content.DrawRectangle(New PdfPoint(tableLeft, tableTop), New PdfSize(cellWidth * 3, cellHeight), True, True)
Using headerText = New PdfFormattedText()
headerText.FontSize = 12
headerText.Color = PdfColor.FromRgb(1, 1, 1)
headerText.Append("Product")
page.Content.DrawText(headerText, New PdfPoint(tableLeft + 10, tableTop + 10))
headerText.Clear()
headerText.Append("Quantity")
page.Content.DrawText(headerText, New PdfPoint(tableLeft + cellWidth + 10, tableTop + 10))
headerText.Clear()
headerText.Append("Price")
page.Content.DrawText(headerText, New PdfPoint(tableLeft + cellWidth * 2 + 10, tableTop + 10))
End Using
' Draw table data rows
Dim rowData = {
New With {
Key .Product = "PDF Library",
Key .Quantity = "1",
Key .Price = "$890"
},
New With {
Key .Product = "Support Plan",
Key .Quantity = "1",
Key .Price = "$299"
},
New With {
Key .Product = "Training",
Key .Quantity = "2",
Key .Price = "$500"
}
}
Dim currentY = tableTop - cellHeight
For Each row In rowData
' Draw cell borders
page.Content.DrawRectangle(New PdfPoint(tableLeft, currentY), New PdfSize(cellWidth, cellHeight), False, True)
page.Content.DrawRectangle(New PdfPoint(tableLeft + cellWidth, currentY), New PdfSize(cellWidth, cellHeight), False, True)
page.Content.DrawRectangle(New PdfPoint(tableLeft + cellWidth * 2, currentY), New PdfSize(cellWidth, cellHeight), False, True)
' Draw cell content
Using cellText = New PdfFormattedText()
cellText.FontSize = 11
cellText.Append(row.Product)
page.Content.DrawText(cellText, New PdfPoint(tableLeft + 10, currentY + 10))
cellText.Clear()
cellText.Append(row.Quantity)
page.Content.DrawText(cellText, New PdfPoint(tableLeft + cellWidth + 10, currentY + 10))
cellText.Clear()
cellText.Append(row.Price)
page.Content.DrawText(cellText, New PdfPoint(tableLeft + cellWidth * 2 + 10, currentY + 10))
End Using
currentY -= cellHeight
Next row
' Apply security settings
Dim securitySettings = document.SecuritySettings
securitySettings.DocumentOpenPassword = "user123"
securitySettings.PermissionsPassword = "owner123"
securitySettings.Permissions = PdfPermissions.AllowPrint Or PdfPermissions.AllowFormFill
' Save the document
document.Save("gembox-example.pdf")
End Using
' Example: Manipulating existing PDF
Using existingDoc = PdfDocument.Load("existing-document.pdf")
' Extract text from first page
Dim page = existingDoc.Pages(0)
Dim text = page.Content.GetText()
Console.WriteLine($"Extracted text: {text}")
' Add watermark to all pages
For Each p In existingDoc.Pages
Using watermark = New PdfFormattedText()
watermark.Append("CONFIDENTIAL")
watermark.FontSize = 50
watermark.Color = PdfColor.FromRgb(0.5, 0.5, 0.5)
watermark.Opacity = 0.3
' Calculate center position
Dim pageWidth = p.MediaBox.Width
Dim pageHeight = p.MediaBox.Height
Dim textWidth = watermark.Width
Dim textHeight = watermark.Height
Dim x = (pageWidth - textWidth) \ 2
Dim y = (pageHeight - textHeight) \ 2
' Draw watermark diagonally
p.Content.SaveGraphicsState()
p.Content.SetTransform(1, 0, 0, 1, x, y)
p.Content.SetTransform(0.7071, 0.7071, -0.7071, 0.7071, 0, 0)
p.Content.DrawText(watermark, New PdfPoint(0, 0))
p.Content.RestoreGraphicsState()
End Using
Next p
existingDoc.Save("watermarked-document.pdf")
End Using
Bu örnek, GemBox.Pdf'nin düşük seviyeli PDF manipülasyonundaki gücünü, form oluşturma, grafik çizimi ve belge güvenlik özellikleri ile gösterir. Kod, IronPDF'nin HTML yaklaşımına göre daha kapsamlıdır, ancak PDF'nin her yönü üzerinde hassas kontrol sağlar.
Bu Kütüphaneler HTML'yi PDF'ye Dönüştürmeyi Nasıl Ele Alıyor?
HTML'den PDF'ye dönüşüm, IronPDF ve GemBox.Pdf arasındaki en büyük farklardan birini temsil eder.
IronPDF'nin HTML'den PDF'ye Yaklaşımı
IronPDF, başından itibaren HTML'den PDF'ye dönüşüm odaklı olarak geliştirilmiştir. Kütüphane, bir web tarayıcısının yapacağı gibi HTML, CSS ve JavaScript'i işleyen tam bir Chrome render motoru içerir. Bu şu anlama gelir:
- Gerçek Tarayıcı Renderi: Google Chrome ile aynı Blink motorunu kullanır
- Tam Web Standartları: CSS3, HTML5, flexbox, grid ve modern JavaScript'e tam destek
- Dinamik İçerik: AJAX içeriği ve dinamik öğeleri yakalayarak renderlemeden önce JavaScript'i çalıştırır
- Duyarlı Tasarım: Medya sorgularını ve duyarlı düzenleri yönetir
- Dış Kaynaklar: Resimleri, stil şablonlarını ve fontları URL'lerden otomatik olarak alır
GemBox.Pdf'in HTML'den PDF'e Yaklaşımı
GemBox.Pdf, HTML5, CSS3 ve JavaScript yürütme desteği ile bir Chromium render motoru kullanarak yerleşik HTML'den PDF'e dönüşüm içerir. Dönüşüm, yerel dosyalardan, canlı URL'lerden, HTML dizelerinden veya akışlar üzerinden ConversionOptions API'si kullanılarak gerçekleştirilebilir.
IronPDF, Google Chrome V8 entegrasyonu ve daha zengin bir yapılandırma yüzeyi — özelleştirilebilir başlıklar/altlıklar, sayfa numaralama jetonları, arka plan baskı kontrolleri, JavaScript yoğun sayfalar için render gecikmesi ve geniş güvenlik/metadaten seçenekleri dahil olmak üzere, tüm bu özellikleri tek bir birleşik API'de sunarak bu alanda farklılaşıyor.
Modern CSS Çerçeve Desteği: Kritik Bir Fark
IronPDF'nun Chrome tabanlı renderlemesinin en büyük avantajlarından biri, Bootstrap, Tailwind CSS ve Foundation gibi modern CSS çerçeveleri ile çalışırken belirgin hale gelir. Bu çerçeveler modern web uygulamalarının omurgası haline geldi ve PDF'lerde doğru şekilde render edebilmeleri birçok kullanım durumu için esastır.
IronPDF: Tam Modern Çerçeve Desteği
IronPDF'nun Chrome render motoru, tüm modern CSS çerçeveleri için eksiksiz, yerel destek sağlar:
- Bootstrap 5: Duyarlı düzenler için tam flexbox ve CSS Grid desteği Tailwind CSS: Tamamen yardımcı sınıfa öncelik veren CSS çerçeve desteği
- Gerçek dünya örnekleri: Bootstrap anasayfasını ve Bootstrap şablonlarını piksellerine kadar kusursuz bir şekilde işler
- Modern CSS3 özellikleri: Animasyonlar, dönüşümler, geçişler, özel özellikler
- Duyarlı tasarımlar: Medya sorguları ve görüntü alanına dayalı yerleşimler sorunsuz çalışır
Kod Örneği: Bootstrap Formunu PDF'ye Dönüştürme
using IronPdf;
var renderer = new ChromePdfRenderer();
string bootstrapForm = @"
<!DOCTYPE html>
<html>
<head>
<link href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css' rel='stylesheet'>
</head>
<body>
<div class='container mt-5'>
<h1 class='mb-4'>Customer Registration</h1>
<form class='needs-validation'>
<div class='row g-3'>
<div class='col-md-6'>
<label class='form-label'>First Name</label>
<input type='text' class='form-control' value='John'>
</div>
<div class='col-md-6'>
<label class='form-label'>Last Name</label>
<input type='text' class='form-control' value='Smith'>
</div>
</div>
<div class='mt-4'>
<button class='btn btn-primary' type='submit'>Submit</button>
</div>
</form>
</div>
</body>
</html>";
var pdf = renderer.RenderHtmlAsPdf(bootstrapForm);
pdf.SaveAs("bootstrap-form.pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();
string bootstrapForm = @"
<!DOCTYPE html>
<html>
<head>
<link href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css' rel='stylesheet'>
</head>
<body>
<div class='container mt-5'>
<h1 class='mb-4'>Customer Registration</h1>
<form class='needs-validation'>
<div class='row g-3'>
<div class='col-md-6'>
<label class='form-label'>First Name</label>
<input type='text' class='form-control' value='John'>
</div>
<div class='col-md-6'>
<label class='form-label'>Last Name</label>
<input type='text' class='form-control' value='Smith'>
</div>
</div>
<div class='mt-4'>
<button class='btn btn-primary' type='submit'>Submit</button>
</div>
</form>
</div>
</body>
</html>";
var pdf = renderer.RenderHtmlAsPdf(bootstrapForm);
pdf.SaveAs("bootstrap-form.pdf");
Imports IronPdf
Dim renderer As New ChromePdfRenderer()
Dim bootstrapForm As String = "
<!DOCTYPE html>
<html>
<head>
<link href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css' rel='stylesheet'>
</head>
<body>
<div class='container mt-5'>
<h1 class='mb-4'>Customer Registration</h1>
<form class='needs-validation'>
<div class='row g-3'>
<div class='col-md-6'>
<label class='form-label'>First Name</label>
<input type='text' class='form-control' value='John'>
</div>
<div class='col-md-6'>
<label class='form-label'>Last Name</label>
<input type='text' class='form-control' value='Smith'>
</div>
</div>
<div class='mt-4'>
<button class='btn btn-primary' type='submit'>Submit</button>
</div>
</form>
</div>
</body>
</html>"
Dim pdf = renderer.RenderHtmlAsPdf(bootstrapForm)
pdf.SaveAs("bootstrap-form.pdf")
GemBox.Pdf: Chromium Tabanlı Çerçeve Desteği
GemBox.Pdf, HTML'den PDF'e dönüşüm için bir Chromium motoru kullanır, bu da HTML5 ve CSS3 için temel destek sağlar. Standart tarayıcı renderlemeye dayanan modern CSS çerçeveleri, motor seviyesinde uyumlu olmalıdır.
IronPDF'nin avantajı, Bootstrap, Tailwind CSS ve diğer çerçeveler için derinlemesine belgelenmiş ve test edilmiş destek, belirgin örnekler, sorun giderme kılavuzları ve çekirdek API yüzeyinin bir parçası olan yapılandırma seçenekleri (görünüm ayarları ve render gecikmeleri) sağlamasıdır. IronPDF kullanıcıları, yaygın çerçeveye özgü render senaryoları için geniş toplum kaynaklarından ve resmi kılavuzlardan faydalanır.
Gerçek Dünya Düşüncesi: Projeniz, Bootstrap veya Tailwind düzenlerinin PDF'de ince ayrıntılı kontrol gerektiren — özel görünüm boyutları, JavaScript sürüklenimli içerik veya dinamik grafik renderlemesi dahil olmak üzere — IronPDF'nin daha zengin yapılandırma API'si ve resmi çerçeve rehberleri, üretim kalitesinde sonuçlar için daha doğrudan bir yol sağlar.
CSS framework uyumluluğu hakkında daha fazla ayrıntı için bkz. Bootstrap & Flexbox CSS Rehberi.
Hangi Kütüphane Farklı PDF Görevlerinde Üstün?
Her bir kütüphanenin hangi alanlarda parladığını anlamak, geliştiricilerin özel ihtiyaçları için doğru aracı seçmelerine yardımcı olur.
IronPDF'nin Üstün Olduğu Alanlar
IronPDF, bu senaryolar için uygundur:
1. Web Uygulaması PDF Oluşturma
SaaS uygulamaları, web portalları ve web içeriğini PDF'ye dönüştürmesi gereken herhangi bir sistem için mükemmel. Chrome render motoru, Bootstrap, Tailwind CSS veya özelleştirilmiş çerçeveler kullananlar da dahil olmak üzere karmaşık web düzenlerinin mükemmel bir şekilde render edilmesini sağlar.
2. Dinamik Rapor Oluşturma
Raporlar çizelgeler (Chart.js, D3.js), dinamik veri görselleştirme veya JavaScript ile oluşturulan içerikler içerdiğinde, IronPDF her şeyi doğru bir şekilde yakalar. Bu, iş zekası panoları ve veri odaklı uygulamalar için ideal hale getirir.
3. Fatura ve Belge Şablonları
Faturalar, makbuzlar ve iş belgeleri için HTML/CSS şablonları kullanmak, tasarımcılara PDF'e özgü API'leri öğrenmeksizin şablonlar oluşturma imkanı tanır. Alışık olunan web teknolojilerini kullanarak hızlı bir şekilde değişiklik yapabilirsiniz.
4. Hızlı Geliştirme Projeleri
Basit API ve HTML tabanlı yaklaşım, geliştirme süresini önemli ölçüde azaltır. Bir geliştirici, karmaşık bir PDF dosyasını saatler yerine dakikalar içinde oluşturabilir.
5. Platformlar Arası Dağıtım
IronPDF, Windows, Linux, macOS, Docker ve bulut platformları için yerel destek sağlayarak çeşitli ortamlarda dağıtımı basitleştirir.
GemBox.Pdf'in Üstün Olduğu Alanlar
GemBox.Pdf, bu alanlardaki güçlü yönlerini gösteriyor:
1. Düşük Düzey PDF Manipülasyonu
PDF yapısı üzerinde hassas kontrol gerektiğinde, GemBox.Pdf'in nesne tabanlı yaklaşımı PDF öğelerine, akışlarına ve sözlüklerine doğrudan erişim sağlar.
2. Form Ağırlıklı Uygulamalar
PDF formlarıyla yoğun bir şekilde çalışan uygulamalar için, GemBox.Pdf, program aracılığıyla karmaşık etkileşimli formlar oluşturmayı içeren kapsamlı form alanı manipülasyonu sunar.
3. OCR Gereksinimleri
Yerleşik OCR yetenekleriyle GemBox.Pdf, taranmış belgelerden metin çıkarmak için ek kütüphaneler gerektirmeden kullanılabilir, bu da belge dijitalleştirme projeleri için uygun hale getirir.
4. Mobil Geliştirme
Android ve iOS platformları için yerel destek, GemBox.Pdf'i PDF işlevselliğine ihtiyaç duyan mobil uygulamalar için iyi bir seçim haline getirir.
5. Mevcut PDF Değişikliği
Mevcut PDF'lerle çalışırken ve yeni PDF'ler oluşturmak yerine, GemBox.Pdf'in çıkarma, manipülasyon ve değiştirme araçları bu iş için oldukça uygundur.
Kurulum ve Ayarlama Nasıl Karşılaştırılır?
Her iki kütüphane de NuGet aracılığıyla kolay kurulum sunar, ancak farklı karmaşıklık seviyelerine sahiptir.
Installing IronPDF
IronPDF kurulumu son derece basittir:
Install-Package IronPdf
Veya .NET CLI ile:
dotnet add package IronPdf
Paket, Chrome işleme motoru dahil olmak üzere gereken her şeyi içerir. Çoğu kullanım durumu için ek bir yapılandırma veya bağımlılık gerekmez.
Belirli dağıtım senaryoları için IronPDF şunları sunar:
IronPdf.Slim: Çalışma zamanında platforma özgü bileşenleri indiren hafif paketIronPdf.Linux: Linux dağıtımları için önceden yapılandırılmışIronPdf.MacOs: macOS ortamları için optimize edilmiş
GemBox.Pdf Kurulumu
GemBox.Pdf yükleme işlemi, temel PDF manipülasyonu için de aynı derecede basittir:
Install-Package GemBox.Pdf
Ancak, HTML'den PDF'e dönüştürme için şunlara ihtiyacınız olacak:
Install-Package GemBox.Document
Her iki kütüphane de lisans anahtarı yapılandırması gerektirir:
// IronPDF
License.LicenseKey = "YOUR-LICENSE-KEY";
// GemBox.Pdf
ComponentInfo.SetLicense("YOUR-LICENSE-KEY");
// IronPDF
License.LicenseKey = "YOUR-LICENSE-KEY";
// GemBox.Pdf
ComponentInfo.SetLicense("YOUR-LICENSE-KEY");
' IronPDF
License.LicenseKey = "YOUR-LICENSE-KEY"
' GemBox.Pdf
ComponentInfo.SetLicense("YOUR-LICENSE-KEY")
Lisanslama ve Fiyatlandırma Farklılıkları Nelerdir?
Lisanslama modellerini anlamak, her bir çözüm için toplam mülkiyet maliyetini belirlemenize yardımcı olur.
IronPDF Lisanslama
IronPDF, şeffaf ve kademeli lisanslama sunar (Nisan 2026 itibarıyla fiyatlandırma):
-
Lite License: $999
- 1 geliştirici
- 1 proje 1 yıl destek ve güncellemeler
-
Plus License: $1,499
- 3 geliştirici
- 3 proje 1 yıl destek ve güncellemeler
- Professional License: $2,999
- 10 geliştirici
- 10 proje 1 yıl destek ve güncellemeler
Ek Seçenekler:
- Telif ücretsiz yeniden dağıtım: +$1,999 SaaS/OEM lisanslama mevcut
- Iron Suite paketi: $2,998 için 10 ürün
Anahtar Faydalar: 30 günlük para iade garantisi
- Süresiz lisanslar (tek seferlik satın alma) Ücretsiz geliştirme ve test
- Geliştirme/deneme/üretim ortamına dağıtım dahil
GemBox.Pdf Lisanslama
GemBox, geliştirici başına lisanslama sunar (Nisan 2026 itibarıyla):
- Tek Geliştirici:
$890- 1 geliştirici Sınırsız projeler 1 yıl destek ve güncellemeler Telif ücretsiz dağıtım dahildir
Önemli Hususlar: Yenilemelerde %40 indirim (Süresi dolmadan yenilenirse %60 indirim)
- GemBox Paketi:
$2,200için 1 geliştirici (6 ürün)
Anahtar Faydalar: 30 günlük para iade garantisi Süresiz lisanslar
- Sınırsız dağıtım dahil Sunucu veya OEM lisansları gerekmiyor
Yaygın Senaryolar İçin Maliyet Karşılaştırması
| Senaryo | IronPDF Maliyeti | GemBox.Pdf Maliyeti |
|---|---|---|
| Tek geliştirici, HTML'den PDF'ye | $999 | $890 |
| 3 geliştirici, yalnızca PDF manipülasyonu | $1,499 | $4,450 (10 geliştiriciye kadar) |
| 3 geliştirici, HTML to PDF | $1,499 | $4,450 (10 geliştiriciye kadar) |
| Enterprise (10 geliştirici), tüm özellikler | $2,999 | $4,450 |
Hangi Kütüphaneyi Seçmelisiniz?
IronPDF ve GemBox.Pdf arasındaki seçim, sizin özel gereksinimlerinize bağlıdır:
IronPDF'i Tercih Edin Ne Zaman:
- Zengin HTML'den PDF'e yapılandırma önceliktir: IronPDF, başlıklar/altlıklar, JavaScript render gecikmeleri, görünüm ayarları, PDF güvenliği ve metadaten için geniş bir API sunar - hepsi tek bir birleşik kitaplık içinde
- Derinlemesine belgelenmiş çerçeve entegrasyonu gerekiyor: Bootstrap, Tailwind CSS, Chart.js ve diğer web çerçeveleri için resmi rehberler ve test edilmiş örnekler
- Hızlı gelişim önemlidir: Market süresini azaltan basit, yüksek seviyeli API yöntemleri, örneğin
RenderHtmlAsPdf() - Çapraz platform dağıtımı gerekiyor: Bulut ve konteynerize edilmiş ortamlar için mükemmel destek, Linux ve macOS için özel paketler
- Bütçe bir dikkate değerdir: Daha düşük giriş maliyeti ve geniş bir özellik seti tek bir kitaplıktan
GemBox.Pdf'i Seçin Ne Zaman:
- Düşük seviyeli PDF kontrolü esastır: PDF nesnelerine ve yapısına doğrudan erişim Mobil platform desteği gereklidir: Yerel Android ve iOS uyumluluğu
- OCR temel bir gerekliliktir: Ek bağımlılık olmadan yerleşik OCR Esas olarak mevcut PDF'lerle çalışıyorsunuz: Güçlü manipülasyon ve çıkarma özellikleri
- Sınırsız dağıtım önemlidir: Telif ücretsiz yeniden dağıtım ekstra maliyet olmadan dahil
Her İki Kütüphaneyi de Kullanmayı Düşünün:
Bazı organizasyonlar, uygulamalarının farklı bölümleri için her iki kütüphaneyi de kullanarak değer bulur:
- Rapor oluşturma ve HTML'den PDF'e dönüştürme için IronPDF
- GemBox.Pdf, form işleme ve PDF manipülasyonu için
Seçtiğiniz Kütüphaneyle Başlarken
Her iki kütüphane de yeteneklerini değerlendirmek için ücretsiz denemeler sunar:
IronPDF'yi Deneyin
- NuGet paketini yükleyin
- Geliştirme için lisans anahtarı gerekmez
- Deneme modunda PDF dosyalarında filigranlar görünür
- Değerlendirme sırasında tüm özelliklere erişim
GemBox.Pdf'i Deneyin
- NuGet paketini yükleyin
ComponentInfo.SetLicense("FREE-LIMITED-KEY")kullanın Ücretsiz modda 2 sayfa ile sınırlıdır- Sınırlamaları kaldırmak için yükseltin
Görsel Kurulum Kılavuzu
Görsel Studio'nun grafik ara yüzünü tercih eden geliştiriciler için, her iki kütüphaneyi yüklemeye yönelik adım adım kılavuz:
Yeni Bir ASP.NET Projesi Oluşturma
ASP.NET Web Uygulaması oluşturmak için Visual Studio'nun Yeni Proje iletişim kutusu - PDF oluşturma projelerinin temeli
Proje şablonu olarak Web Forms seçmek - hem IronPDF hem de GemBox.Pdf uygulamaları için uygundur
NuGet ile PDF Kütüphanelerini Kurma
Kütüphane yüklemesi için NuGet Paket Yöneticisine erişmek amacıyla Çözüm Gezgini'nde projenize sağ tıklayın
Visual Studio'da Proje menüsü aracılığıyla NuGet Paket Yöneticisi'ne alternatif erişim
NuGet Paket Yöneticisi aracılığıyla IronPDF'nin Kurulumu - kapsamlı özellik açıklamasına ve indirme sayısına dikkat edin
Alternatif Kurulum Yöntemleri
IronPDF'in web sitesi, NuGet yüklemesinin uygun olmadığı senaryolar için doğrudan DLL indirmeleri sunar
Sonuç
Hem .NET hem de GemBox.Pdf, .NET geliştiricileri için kaliteli PDF kütüphaneleridir ve her biri kendine özgü güçlü yönlere sahiptir. Her iki kitaplıkta da Chromium tabanlı HTML'den PDF'e dönüşüm bulunur; .NET, daha zengin yapılandırma API'si, web çerçeveleri için daha derin belgeler ve tek bir paket içinde daha geniş bir özellik seti sunarak farklılaşır. GemBox.Pdf, düşük düzey PDF manipülasyonunda, mobil platform desteğinde ve yerleşik OCR'de parlıyor - bu da, kesin PDF yapı kontrolü gerektiren uygulamalar için onu uygun hale getiriyor.
Modern uygulamalar geliştiren web geliştiricileri ve ekipleri için, belgelenmiş, yüksek yapılandırılabilir bir HTML'den PDF'e iş akışı arayanlar, IronPDF'nin birleşik API'si ve geniş ekosistem desteği, geliştirme süresini ve karmaşıklığını azaltır.
Ancak, GemBox.Pdf özellikle mobil geliştirme ve PDF form işleme veya OCR gereksinimlerine odaklanan uygulamalar için uzmanlaşmış senaryolarda sağlam bir seçenek olmaya devam ediyor.
HTML içeriğinizi profesyonel PDF'lere dönüştürmeye hazır mısınız? .NET'in ücretsiz deneme sürümü ile başlamaya ve .NET uygulamalarınızda Chrome kalitesinde render almanın gücünü deneyimlemeye hazır olun. Kapsamlı dokümantasyon, geniş kod örnekleri ve duyarlı destek ile saatler yerine dakikalar içinde PDF üreteceksiniz.
Sıkça Sorulan Sorular
HTML'yi C# içerisinde PDF'ye nasıl dönüştürebilirim?
HTML dizgilerini PDF'lere dönüştürmek için IronPDF'ün RenderHtmlAsPdf yöntemini kullanabilirsiniz. Ayrıca, HTML dosyalarını RenderHtmlFileAsPdf kullanarak PDF'lere dönüştürebilirsiniz.
Bu kütüphanelerle mevcut PDF dosyalarını işleyebilir miyim?
Evet, hem IronPDF hem de GemBox.Pdf mevcut PDF dosyalarını işlemek için kullanılabilir. IronPDF, birleştirme, bölme ve filigran ekleme gibi yaygın görevleri basitleştirir. GemBox.Pdf, karmaşık işlem görevleri için faydalı olan PDF nesneleri üzerinde daha ayrıntılı kontrol sunar.
HTML'den PDF'e dönüşüm için IronPDF'i kullanmanın avantajları nelerdir?
IronPDF, Chrome V8 render motoru ile üstün HTML'den PDF'e dönüşüm kalitesi sunar ve %98+ tarayıcı benzerliği sağlar. Modern CSS3, HTML5, JavaScript yürütme, web yazı tipleri ve duyarlı tasarımları destekler.
Hangi kütüphane küçük bir geliştirme ekibi için daha uygun maliyetlidir?
HTML'den PDF'e dönüşüm ihtiyacı olan 3 geliştiriciden oluşan bir ekip için IronPDF, Plus lisansı için 1.499 $ maliyetindedir, oysa GemBox, 3 GemBox.Pdf lisansı ve 3 GemBox.Document lisansı için toplamda 5.340 $ maliyetindedir. IronPDF, ekipler için önemli ölçüde daha iyi bir değer sunar.
IronPDF yüksek hacimli PDF oluşturma için uygun mudur?
Evet, IronPDF, yaklaşık 125ms HTML'den PDF'e render süresi, optimize edilmiş async/await desteği ve 10MB altında etkili bellek kullanımı ile mükemmel performans sunar. Yüksek hacimli web tabanlı PDF oluşturma için oldukça uygundur.
IronPDF ile hangi destekler dahildir?
IronPDF, geliştirme ekibine doğrudan erişim ile 24/5 mühendislik desteği, tipik 24-48 saat yanıt süreleri, kapsamlı dokümantasyon ve kod örnekleri içerir.
Bu kütüphanelerle PDF/A uyumlu belgeler oluşturabilir miyim?
Evet, IronPDF birkaç PDF/A sürümünü destekleyerek SaveAsPdfA() gibi basit bir yöntem çağrısı ile PDF/A uyumlu belgeler üretebilir. GemBox.Pdf, PDF/A belgelerini okuyabilir ve bunları değiştirirken uyumluluğunu korur.
Bu kütüphaneler modern .NET framework'lerle uyumlu mu?
Evet, her iki kütüphane de modern .NET sürümlerini destekler. IronPDF, .NET Framework 4.6.2+, .NET Core 3.1+ ve .NET 5'ten 10'a kadar olan sürümleri destekler. GemBox.Pdf, .NET Framework 3.5+, .NET Standard 2.0 ve .NET 6+ sürümlerini destekler.
Hangi kütüphane bulut konuşlandırmaları için optimize edilmiştir?
IronPDF, Azure, AWS, Docker kapsayıcıları ve sunucusuz ortamlar için özel destek ile bulut konuşlandırmaları için optimize edilmiştir. HTML tabanlı yaklaşımı, web uygulamalarıyla doğal bir şekilde uyumlu olup, SaaS uygulamaları için daha iyi bir seçimdir.
IronPDF'yi test etmek için ücretsiz bir sürüm var mı?
IronPDF, lisans anahtarı olmadan sınırsız geliştirme ve test yapma imkanı sunan ücretsiz bir değerlendirme seçeneği sunar, ancak çıktı üzerinde filigranlar görünür. Ürünü satın almadan önce değerlendirmek için yeterli işlevsellik sağlar.



