Altbilgi içeriğine atla
ÜRüN KARşıLAşTıRMALARı

ActivePDF vs IronPDF: HTML to PDF Eğitimi ve Kapsamlı Karşılaştırma

Full Comparison

Looking for a detailed feature-by-feature breakdown? See how IronPDF stacks up against Aspose PDF on pricing, HTML support, and licensing.

View Full Comparison

.NET ve Aspose.PDF for .NET, C# uygulamalarında PDF işlemleri için iki güçlü yaklaşımı temsil eder. .NET, sadeliği ve modern web standartlarına desteği vurgulayarak, HTML, CSS3 ve JavaScript'i doğrudan yüksek kaliteli PDF'lere dönüştüren yalın API'ler sunar. Aspose.PDF, kapsamlı özelleştirme seçenekleri sunan, kurumsal düzeyde doküman işleme için tasarlanmış kapsamlı bir araç seti sağlar.

Temel fark, tasarım felsefelerinde yatmaktadır. IronPDF, RenderHtmlAsPdf() gibi sezgisel yöntemlerle geliştirici verimliliğine odaklanır ve minimum kod gerektirir. Aspose.PDF, daha karmaşık bir API yapısı aracılığıyla ayrıntılı kontrol sağlar, bu da onu özel belge iş akışları için uygun hale getirir ancak daha fazla uygulama çabası gerektirir.

.NET ve Aspose.PDF for .NET Arasındaki Temel Farklar Nelerdir?

Konuyu hızlıca özetlemek isteyenleriniz için, bu makalede tartışılan IronPDF ve Aspose.PDF arasındaki tüm ana ayrılık noktalarını özetleyen kapsamlı bir tablo aşağıda bulunmaktadır:

Ürün Karşılaştırması Genel Bakış
.NET ve Aspose.PDF'in .NET Geliştirme İçin Özellik Karşılaştırması
Kategori Özellik/Boyut IronPDF Aspose.PDF Ana Avantaj
Çekirdek Mimari Tasarım Felsefesi Sadelik öncelikli, sezgisel API'lar Enterprise odaklı, detaylı kontrol IronPDF: Daha hızlı geliştirme
API Karmaşıklığı RenderHtmlAsPdf() gibi basit yöntemler Çok sınıflı yaklaşım, manuel kurulum IronPDF: %70 daha az kod
Öğrenme Eğrisi 1-2 gün tipik 1-2 hafta tipik IronPDF: Daha hızlı benimseme
Platform Desteği Çapraz Platform Yerel destek, ek paket yok Aspose.Pdf.Drawing paketi gerektirir IronPDF: Daha basit dağıtım
.NET Sürümleri .NET 10, 9, 8, 7, 6, 5, Core 3.1+, Framework 4.6.2+ Drawing paketi ile benzer destek Her İkisi: Modern çerçeve desteği
İşletim Sistemleri Windows, Linux, macOS, Docker yerel Her platform için yapılandırma gerektirir IronPDF: Gerçek yaz-bir-kez dağıt
Bulut Platformları Azure/AWS optimize edilmiş Standart destek IronPDF: Bulut hazır
HTML'den PDF'e Renderleme Motoru Tam Chrome V8 motoru Özel HTML ayrıştırıcı IronPDF: %98+ tarayıcı uyumluluğu
CSS3/HTML5 Desteği Tam destek Sınırlı (%70-80 uyumluluk) IronPDF: Modern web standartları
JavaScript Yürütme Tam JavaScript desteği Temel/Sınırlı IronPDF: Dinamik içerik
Web Yazı Tipleri Google Yazı Tipleri, sistem yazı tipleri Yalnızca gömülü yazı tipleri IronPDF: Tipografi esnekliği
İşleme Hızı 0,8-1,2s tipik 0,3-0,5s tipik Aspose: Basit HTML için daha hızlı
Bellek Kullanımı 150-200 MB (Chrome motoru) 80-120 MB Aspose: Daha düşük bellek
Security & Encryption Şifreleme Seviyeleri AES-256, özel işlemciler AES-256 standart Her ikisi de: Endüstri standardı
İzin Seçenekleri 15+'den fazla ayrıntılı izin 8 temel izin IronPDF: Daha ince kontrol
API Basitliği Tek SecuritySettings sınıfı Birden fazla sınıf gereklidir IronPDF: Birleştirilmiş yaklaşım
Dijital İmzalar Entegre, görsel imzalar Manuel alan oluşturma IronPDF: Daha basit imzalama
Sertifika Desteği PKCS#11, HSM desteği Benzer ancak daha fazla kurulum Her ikisi de: Enterprise PKI
İçerik Manipülasyonu Yeniden Değerlendirme Yöntemi Gerçek içerik kaldırma, tek satırlık API Açıklama tabanlı, çok adımlı IronPDF: Uyumlu
Yeniden Değerlendirme Performansı 1000 sayfa: ~2 dakika 1000 sayfa: ~6 dakika IronPDF: 3 kat daha hızlı
Filigranlama HTML/CSS tabanlı, tam stil Sadece TextStamp, sınırlı stil IronPDF: Zengin filigranlar
Damgalama Birleşik damga sınıfları Ayrı damga türleri IronPDF: Tutarlı API
Toplu İşlemler Optimize edilmiş paralel işleme Standart döngüler IronPDF: %40 daha hızlı toplu işlemler
Dosya Dönüştürmeleri DOCX'ten PDF'ye Dahili DocxToPdfRenderer Aspose.Words gerektirir ($1,199) IronPDF: Ekstra maliyet yok
Excel Desteği HTML/CSV işleme yoluyla Aspose.Cells gerektirir ($1,199) IronPDF: İçeriğin İşlevselliği
PDF'ten HTML'ye Stil ile desteklenir Desteklenir, temel çıktı Her ikisi de: İşlevsel
Markdown Desteği HTML dönüşümü yoluyla Desteklenmiyor IronPDF: Daha fazla format
Performans Ölçütleri Büyük Doküman İşleme 1000 sayfa/dk filigran 600 sayfa/dk filigran IronPDF: %40 daha hızlı
İş parçacığı desteği Yerel async/await optimizasyonu Standart iş parçacığı IronPDF: Daha iyi ölçeklenebilirlik
Bellek Verimliliği Optimize edilmiş önbellek Standart bellek kullanımı IronPDF: Daha büyük toplu işlemleri yönetir
Geliştirici Deneyimi Kod Örnekleri 100+ çalışmaya hazır örnek Temel örnekler IronPDF: Kapsamlı kaynaklar
Dokümantasyon Eğitimler, nasıl yapılır, videolar Geleneksel API dökümanları IronPDF: Birden fazla öğrenme yolu
IntelliSense Tam IntelliSense desteği Standart destek Her İkisi: IDE entegrasyonu
Hata Mesajları Açıklayıcı, eyleme geçirilebilir Teknik mesajlar IronPDF: Daha iyi hata ayıklama
Licensing & Pricing Giriş Seviyesi Lite: $999 (1 geliştirici, 1 proje) Küçük İşletme: {{Aspose_pdf.small_business}}/yıl'dan itibaren (1 geliştirici, 1 yer) IronPDF: Daha uygun maliyetli giriş
Team License Plus: $1,499 (3 geliştirici, 3 proje) OEM: $5,037 (1 geliştirici, sınırsız konum) IronPDF: Daha iyi ekip değeri
Enterprise Professional: $2,999 (10 geliştirici, 10 proje) SDK: $33,580 (1 geliştirici, 50 dağıtım) IronPDF: %91 daha düşük maliyet
Ek Ürünler Tek bir lisansa dahil Ayrı lisanslar gereklidir IronPDF: Her şey dahil
Yeniden Dağıtım +$2,999 telif ücretsiz Dahil ancak sınırlı dağıtımlar IronPDF: Daha net koşullar
Süit Seçeneği Iron Suite: $2,998 (10 ürün) Süit seçeneği yok IronPDF: Olağanüstü değer
Destek Destek Dahil Evet, 24/5 mühendislik desteği Sadece forum (ücretli destek +{{Aspose_pdf.paid_support}}/yıl) IronPDF: Destek dahil
Yanıt Süresi 24-48 saat tipik Kademeye göre değişir IronPDF: Öngörülebilir SLA
Destek Kanalları E-posta, sohbet, telefon, ekran paylaşımı Forum, ücretli e-posta/telefon IronPDF: Daha fazla kanal
Doğrudan Mühendislik Erişimi Evet Destek seviyeleri aracılığıyla IronPDF: Uzman yardımı
Özel Özellikler Barkod Entegrasyonu HTML/JavaScript yoluyla Dahili değil IronPDF: Barkod desteği
QR Kod Desteği IronQR entegrasyonu yoluyla Özel uygulama gerektirir IronPDF: Yerel QR kodları
OCR Yetenekleri Via IronOCR entegrasyonu Aspose.OCR gerektirir IronPDF: Entegre paket
Yazdırma Optimizasyonu IronPrint entegrasyonu yoluyla Standart yazdırma IronPDF: Gelişmiş yazdırma
Toplam Maliyet (Tipik Enterprise) PDF + DOCX + Excel $2,999 (Professional) $5,037+ (birden fazla ürün) IronPDF: %68 maliyet tasarrufu
Suite Seçeneği ile $2,998 (10 ürün) Mevcut değil IronPDF: Bireysel yerine %70 tasarruf
En İyi Kullanım Alanı Kullanım Durumları Modern web uygulamaları, hızlı geliştirme, maliyet bilincine sahip ekipler Eski sistemler, belirli işletme ihtiyaçları IronPDF: Çoğu senaryo
Ekip Büyüklüğü 1-10+ geliştirici Özel kaynaklara sahip büyük işletmeler IronPDF: Ölçeklenebilir lisanslama
Proje Türleri SaaS, web uygulamaları, belge otomasyonu Karmaşık form işleme, XFA formları Bağlama bağlı
Not. Karşılaştırma, Nisan 2026 itibarıyla .NET kütüphane yeteneklerini ve fiyatlandırmalarını yansıtır. Fiyatlar değişebilir; güncel fiyatlandırmayı satıcı web sitelerinde doğrulayın. Performans metrikleri, tipik kurumsal belge iş yükleriyle standart ölçütlere dayanır. Iron Suite fiyatlandırması, tek bir lisans altında tüm Iron Software ürünlerine erişim sağlar.

İpuçlarıÖzel Aspose vs IronPDF özellik sayfamız, her iki kütüphanenin sunumları hakkında daha zengin bilgiler sunar.

PDF Kütüphane Yeteneklerinin Özeti

.NET, .NET geliştiricileri için verimli belge oluşturmayı hedefleyen kapsamlı bir PDF kütüphanesi sunar. Kütüphane, HTML, ASPX ve URL'ler gibi çeşitli kaynaklardan PDF belgeleri oluşturma, düzenleme ve işleme konularında ustadır.

Gücü, modern web standartları—CSS3, HTML5 ve JavaScript—için yerel destek sağlamasında yatar ve minimum yapılandırmayla piksel mükemmelliğinde PDF işleme sağlar. Kütüphanenin mimarisi, karmaşık işlemleri dahili olarak ele alan özlü API'ler aracılığıyla geliştirici deneyimini önceliklendirir.

Aspose.PDF .NET için, karmaşık PDF dosya manipülasyonu yapabilen sofistike bir belge işleme API'si olarak çalışır. Kütüphane, geliştiricilerin WinForms, WPF, ASP.NET ve .NET Core uygulamaları genelinde PDF dosyaları oluşturmasına, üzerinde değişiklik yapmasına ve dönüştürmesine olanak tanır.

Tamamen yönetilen C# ile yazılmış olan Aspose.PDF, gelişmiş belge işlemleri gerektiren işletme uygulamaları için mimari esneklik ve ham performansı vurgular, karmaşık form işleme ve belge montajı gibi işlemler de bunlara dahildir.

Çapraz Platform Yetenekleri Nasıl Karşılaştırılır?

IronPDF, ek paketler olmadan yerel çapraz platform uyumluluğu sağlar, Windows, Linux, macOS, Docker, Azure ve AWS ortamlarını sorunsuz olarak destekler. Kütüphane, platform-specifik uygulamaları ortadan kaldırarak, birleşik kod tabanı aracılığıyla platformlar arasında tutarlı davranış sağlar.

Aspose.PDF'nin çapraz platform işlevselliği, dağıtım senaryolarına karmaşıklık ekleyen ayrı bir Aspose.Pdf.Drawing paketi gerektirir. Bu mimari karar, özellikle kapsayıcı ortamlarda, proje yapılandırmasını ve bağımlılık yönetimini etkiler.

IronPDF Platform Desteği Ayrıntıları

IronPDF'nin geniş uyumluluk matrisi şunları içerir:

  • .NET Sürümleri: .NET 10, 9, 8, 7, 6, 5, Core 3.1+ ve Framework 4.6.2+ için tam destek
  • İşletim Sistemleri: Windows (7+), Linux (Ubuntu, Debian, CentOS), macOS (10+)
  • Bulut Platformları: Optimize edilmiş performansla yerel Azure ve AWS entegrasyonu
  • Kapsayıcı Desteği: Önceden yapılandırılmış bağımlılıklara sahip Docker görüntüleri mevcut
  • Mimari: x64, x86, ARM64 desteklenen platformlar arasında

Kütüphanenin dağıtım dokümantasyonu her platform yapılandırması için ayrıntılı kılavuz sağlar.

Karşılaştırma Tablosu: Platform Desteği

Platform Özelliği IronPDF Aspose.PDF Uygulama Farkı
.NET 8/9 Desteği Yerel Çizim Paketi ile IronPDF ek paketler gerektirmez
Linux Dağıtımı Dahili Ayrı Paket Aspose'un Aspose.Pdf.Drawing'a ihtiyacı var
Docker Desteği Resmi Görseller Manuel Konfig IronPDF önceden hazırlanmış konteynerler sağlar
Azure İşlevleri Optimizasyon Destekleniyor IronPDF Azure'a özgü optimizasyonlar içerir
macOS ARM64 Yerel Sınırlı IronPDF, Apple Silicon'u tam olarak destekler

HTML'den PDF'ye Dönüştürme Performansı Nasıl Karşılaştırılır?

HTML'den PDF'ye dönüştürme, web tabanlı uygulamalar için kritik bir özelliği temsil eder. Her iki kütüphane de bu zorluğa farklı yaklaşıyor, bu da kod karmaşıklığı ve çıktı kalitesini etkiliyor.

IronPDF, tam bir Chrome işleme motorundan faydalanarak JavaScript yürütümünü ve duyarlı tasarım işleme işleminin tarayıcı çıktısıyla tam olarak eşleşmesini sağlar. Aspose.PDF, modern tarayıcılardan farklı şekilde HTML işleyen kendi HTML ayrıştırma motorunu kullanır.

IronPDF HTML Dönüşüm Örneği

using IronPdf;

// Enable enhanced security for production environments
Installation.EnableWebSecurity = true;

// Initialize the Chrome-based renderer with custom options
var renderer = new ChromePdfRenderer()
{
    RenderingOptions = new ChromePdfRenderOptions()
    {
        MarginTop = 10,
        MarginBottom = 10,
        CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print,
        EnableJavaScript = true,
        WaitFor = new WaitFor()
        {
            // Wait for AJAX/animations to complete
            RenderDelay = 500
        }
    }
};

// Convert HTML string with full CSS3/JS support
var pdf = renderer.RenderHtmlAsPdf(@"
    <html>
        <head>
            <style>
                @import url('https://fonts.googleapis.com/css2?family=Roboto');
                body { font-family: 'Roboto', sans-serif; }
                .chart { width: 100%; height: 400px; }
            </style>
        </head>
        <body>
            <h1>Sales Report 2024</h1>
            <div class='chart' id='revenue-chart'></div>
            <script src='https://cdn.jsdelivr.net/npm/chart.js'></script>
            <script>
                // Complex JavaScript charts render perfectly
                new Chart(document.getElementById('revenue-chart'), {
                    type: 'bar',
                    data: { /* chart data */ }
                });
            </script>
        </body>
    </html>");

// Save with compression
pdf.CompressImages(90);
pdf.SaveAs("sales-report.pdf");

// Convert existing web page with authentication
var advancedPdf = renderer.RenderUrlAsPdf("https://app.internal.com/reports", 
    new ChromePdfRenderOptions() 
    {
        CustomCookies = new Dictionary<string, string>() 
        {
            { "auth_token", "secure_token_value" }
        },
        // Capture background images and colors
        PrintHtmlBackgrounds = true
    });
using IronPdf;

// Enable enhanced security for production environments
Installation.EnableWebSecurity = true;

// Initialize the Chrome-based renderer with custom options
var renderer = new ChromePdfRenderer()
{
    RenderingOptions = new ChromePdfRenderOptions()
    {
        MarginTop = 10,
        MarginBottom = 10,
        CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print,
        EnableJavaScript = true,
        WaitFor = new WaitFor()
        {
            // Wait for AJAX/animations to complete
            RenderDelay = 500
        }
    }
};

// Convert HTML string with full CSS3/JS support
var pdf = renderer.RenderHtmlAsPdf(@"
    <html>
        <head>
            <style>
                @import url('https://fonts.googleapis.com/css2?family=Roboto');
                body { font-family: 'Roboto', sans-serif; }
                .chart { width: 100%; height: 400px; }
            </style>
        </head>
        <body>
            <h1>Sales Report 2024</h1>
            <div class='chart' id='revenue-chart'></div>
            <script src='https://cdn.jsdelivr.net/npm/chart.js'></script>
            <script>
                // Complex JavaScript charts render perfectly
                new Chart(document.getElementById('revenue-chart'), {
                    type: 'bar',
                    data: { /* chart data */ }
                });
            </script>
        </body>
    </html>");

// Save with compression
pdf.CompressImages(90);
pdf.SaveAs("sales-report.pdf");

// Convert existing web page with authentication
var advancedPdf = renderer.RenderUrlAsPdf("https://app.internal.com/reports", 
    new ChromePdfRenderOptions() 
    {
        CustomCookies = new Dictionary<string, string>() 
        {
            { "auth_token", "secure_token_value" }
        },
        // Capture background images and colors
        PrintHtmlBackgrounds = true
    });
Imports IronPdf

' Enable enhanced security for production environments
Installation.EnableWebSecurity = True

' Initialize the Chrome-based renderer with custom options
Dim renderer = New ChromePdfRenderer() With {
	.RenderingOptions = New ChromePdfRenderOptions() With {
		.MarginTop = 10, .MarginBottom = 10, .CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print, .EnableJavaScript = True, .WaitFor = New WaitFor() With {.RenderDelay = 500}
	}
}

' Convert HTML string with full CSS3/JS support
Dim pdf = renderer.RenderHtmlAsPdf("
    <html>
        <head>
            <style>
                @import url('https://fonts.googleapis.com/css2?family=Roboto');
                body { font-family: 'Roboto', sans-serif; }
                .chart { width: 100%; height: 400px; }
            </style>
        </head>
        <body>
            <h1>Sales Report 2024</h1>
            <div class='chart' id='revenue-chart'></div>
            <script src='https://cdn.jsdelivr.net/npm/chart.js'></script>
            <script>
                // Complex JavaScript charts render perfectly
                new Chart(document.getElementById('revenue-chart'), {
                    type: 'bar',
                    data: { /* chart data */ }
                });
            </script>
        </body>
    </html>")

' Save with compression
pdf.CompressImages(90)
pdf.SaveAs("sales-report.pdf")

' Convert existing web page with authentication
Dim advancedPdf = renderer.RenderUrlAsPdf("https://app.internal.com/reports", New ChromePdfRenderOptions() With {
	.CustomCookies = New Dictionary(Of String, String)() From {
		{"auth_token", "secure_token_value"}
	},
	.PrintHtmlBackgrounds = True
})
$vbLabelText   $csharpLabel

ChromePdfRenderer sınıfı, basitliği korurken işleme süreci üzerinde kapsamlı kontrol sağlar. RenderingOptions özelliği, kağıt boyutu, kenar boşlukları, JavaScript işlemi ve CSS medya türleri dahil olmak üzere 50'den fazla yapılandırma seçeneği sunar. Dahili WaitFor işlevi, dönüşümden önce dinamik içeriğin tamamen yüklenmesini sağlar ve bu, modern tek sayfa uygulamaları için kritiktir.

Aspose.PDF HTML Dönüşüm Örneği

using Aspose.Pdf;
using Aspose.Pdf.Text;

// Create new document
Document document = new Document();
Page page = document.Pages.Add();

// Configure page settings
page.PageInfo.Width = 612;
page.PageInfo.Height = 792;
page.PageInfo.Margin = new MarginInfo(72, 72, 72, 72);

// Add HTML content - limited CSS support
HtmlFragment htmlFragment = new HtmlFragment(@"
    <h1 style='color: blue; font-size: 24pt'>Sales Report 2024</h1>
    <p>Quarterly revenue analysis...</p>
    <table border='1'>
        <tr><th>Quarter</th><th>Revenue</th></tr>
        <tr><td>Q1</td><td>$1.2M</td></tr>
    </table>");

// Basic rendering options
htmlFragment.HtmlLoadOptions = new HtmlLoadOptions()
{
    PageInfo = new PageInfo() { Width = 612, Height = 792 },
    // Sınırlı JavaScript support
    IsEmbedFonts = true
};

page.Paragraphs.Add(htmlFragment);

// For complex HTML, load from file
HtmlLoadOptions options = new HtmlLoadOptions("https://example.com");
options.PageInfo.IsLandscape = false;
Document htmlDoc = new Document("report.html", options);

// Merge with existing document
document.Pages.Add(htmlDoc.Pages);
document.Save("output.pdf");
using Aspose.Pdf;
using Aspose.Pdf.Text;

// Create new document
Document document = new Document();
Page page = document.Pages.Add();

// Configure page settings
page.PageInfo.Width = 612;
page.PageInfo.Height = 792;
page.PageInfo.Margin = new MarginInfo(72, 72, 72, 72);

// Add HTML content - limited CSS support
HtmlFragment htmlFragment = new HtmlFragment(@"
    <h1 style='color: blue; font-size: 24pt'>Sales Report 2024</h1>
    <p>Quarterly revenue analysis...</p>
    <table border='1'>
        <tr><th>Quarter</th><th>Revenue</th></tr>
        <tr><td>Q1</td><td>$1.2M</td></tr>
    </table>");

// Basic rendering options
htmlFragment.HtmlLoadOptions = new HtmlLoadOptions()
{
    PageInfo = new PageInfo() { Width = 612, Height = 792 },
    // Sınırlı JavaScript support
    IsEmbedFonts = true
};

page.Paragraphs.Add(htmlFragment);

// For complex HTML, load from file
HtmlLoadOptions options = new HtmlLoadOptions("https://example.com");
options.PageInfo.IsLandscape = false;
Document htmlDoc = new Document("report.html", options);

// Merge with existing document
document.Pages.Add(htmlDoc.Pages);
document.Save("output.pdf");
Imports Aspose.Pdf
Imports Aspose.Pdf.Text

' Create new document
Dim document As New Document()
Dim page As Page = document.Pages.Add()

' Configure page settings
page.PageInfo.Width = 612
page.PageInfo.Height = 792
page.PageInfo.Margin = New MarginInfo(72, 72, 72, 72)

' Add HTML content - limited CSS support
Dim htmlFragment As New HtmlFragment("
    <h1 style='color: blue; font-size: 24pt'>Sales Report 2024</h1>
    <p>Quarterly revenue analysis...</p>
    <table border='1'>
        <tr><th>Quarter</th><th>Revenue</th></tr>
        <tr><td>Q1</td><td>$1.2M</td></tr>
    </table>")

' Basic rendering options
htmlFragment.HtmlLoadOptions = New HtmlLoadOptions() With {
    .PageInfo = New PageInfo() With {.Width = 612, .Height = 792},
    ' Sınırlı JavaScript support
    .IsEmbedFonts = True
}

page.Paragraphs.Add(htmlFragment)

' For complex HTML, load from file
Dim options As New HtmlLoadOptions("https://example.com")
options.PageInfo.IsLandscape = False
Dim htmlDoc As New Document("report.html", options)

' Merge with existing document
document.Pages.Add(htmlDoc.Pages)
document.Save("output.pdf")
$vbLabelText   $csharpLabel

Aspose.PDF'nin HTML işleme, manuel sayfa kurulumunu ve sınırlı CSS3 desteği gerektirir. HtmlFragment sınıfı, temel HTML'yi işler ancak flexbox ve grid düzenleri gibi modern web özelliklerinden yoksundur—bu sınırlamalar, Aspose'un destek forumlarında birçok kullanıcının esnek ve grid stil görüntüleme dönüştürmelerinin beklendiği gibi olmadığını bildirdiği raporlarla doğrulanmıştır. Karmaşık JavaScript yürütümü de sınırlıdır. Bootstrap 5 mizanpajları gibi modern web tasarımlarının düzgün bir şekilde dönüştürülmesini gerektiren üretim uygulamaları için ek ön işleme veya alternatif çözümler gerekebilir.

Gerçek Dünyada Performans Karşılaştırması

Ana performans farklılıkları ortaya çıkar:

Metrik IronPDF Aspose.PDF Etkisi
HTML/CSS Uyumluluğu %98+ tarayıcı uyumu %70-80 tahmini Görsel tutarlılık
JavaScript Desteği Tam V8 motoru Temel/Sınırlı Dinamik içerik işleme
İşleme Hızı 0,8-1,2s tipik 0,3-0,5s tipik Aspose basit HTML için daha hızlı
Bellek Kullanımı 150-200 MB 80-120 MB IronPDF, Chrome motorunu kullanır
Yazı Tipi İşleme Sistem + Web yazı tipleri Yalnızca gömülü yazı tipleri Tipografi seçenekleri

PDF Güvenlik Özellikleri Nasıl Karşılaştırılır?

Güvenlik, hassas bilgiler içeren PDF belgeleri için önemini korur. Her iki kütüphane de şifreleme olanakları sağlar, ancak uygulama yaklaşımları ve özellik setleri önemli ölçüde farklılaşır.

IronPDF Şifreleme Uygulaması

using IronPdf;
using IronPdf.Security;

// Load existing PDF or create new one
var pdf = PdfDocument.FromFile("financial-report.pdf");

// Configure comprehensive security settings
pdf.SecuritySettings = new SecuritySettings()
{
    UserPassword = "user_pwd_2024",
    OwnerPassword = "admin_pwd_2024",
    AllowUserCopyPasteContent = false,
    AllowUserEditing = IronPdf.Security.PdfEditSecurity.NoEdit,
    AllowUserFormData = false,
    AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.NoPrint,
    AllowUserAnnotations = false,
    // Advanced encryption options
    EncryptionAlgorithm = IronPdf.Security.PdfEncryptionAlgorithm.AES256,
    UseStrongEncryption = true
};

// Apply digital restrictions
pdf.MetaData.Title = "Confidential Report";
pdf.MetaData.Author = "Finance Department";
pdf.MetaData.Keywords = "Internal Only, Q4 2024";
pdf.MetaData.ModifiedDate = DateTime.UtcNow;

// Advanced: Add custom security handler
pdf.SecuritySettings.CustomSecurityHandler = new CustomSecurityHandler()
{
    // Implement custom DRM or watermarking
    OnDocumentOpen = (doc) => LogAccess(doc),
    RequireTokenValidation = true
};

// Granular permission control
var permissions = new PdfPermissions()
{
    AllowAccessibilityExtractContent = true, // Screen readers
    AllowAssembleDocument = false,
    AllowExtractContentForAccessibility = true,
    AllowFillForms = false,
    AllowFullQualityPrint = false,
    AllowModifyAnnotations = false,
    AllowModifyContents = false,
    AllowPrint = false
};

pdf.ApplySecuritySettings(permissions);
pdf.SaveAs("secured-report.pdf");
using IronPdf;
using IronPdf.Security;

// Load existing PDF or create new one
var pdf = PdfDocument.FromFile("financial-report.pdf");

// Configure comprehensive security settings
pdf.SecuritySettings = new SecuritySettings()
{
    UserPassword = "user_pwd_2024",
    OwnerPassword = "admin_pwd_2024",
    AllowUserCopyPasteContent = false,
    AllowUserEditing = IronPdf.Security.PdfEditSecurity.NoEdit,
    AllowUserFormData = false,
    AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.NoPrint,
    AllowUserAnnotations = false,
    // Advanced encryption options
    EncryptionAlgorithm = IronPdf.Security.PdfEncryptionAlgorithm.AES256,
    UseStrongEncryption = true
};

// Apply digital restrictions
pdf.MetaData.Title = "Confidential Report";
pdf.MetaData.Author = "Finance Department";
pdf.MetaData.Keywords = "Internal Only, Q4 2024";
pdf.MetaData.ModifiedDate = DateTime.UtcNow;

// Advanced: Add custom security handler
pdf.SecuritySettings.CustomSecurityHandler = new CustomSecurityHandler()
{
    // Implement custom DRM or watermarking
    OnDocumentOpen = (doc) => LogAccess(doc),
    RequireTokenValidation = true
};

// Granular permission control
var permissions = new PdfPermissions()
{
    AllowAccessibilityExtractContent = true, // Screen readers
    AllowAssembleDocument = false,
    AllowExtractContentForAccessibility = true,
    AllowFillForms = false,
    AllowFullQualityPrint = false,
    AllowModifyAnnotations = false,
    AllowModifyContents = false,
    AllowPrint = false
};

pdf.ApplySecuritySettings(permissions);
pdf.SaveAs("secured-report.pdf");
Imports IronPdf
Imports IronPdf.Security

' Load existing PDF or create new one
Private pdf = PdfDocument.FromFile("financial-report.pdf")

' Configure comprehensive security settings
pdf.SecuritySettings = New SecuritySettings() With {
	.UserPassword = "user_pwd_2024",
	.OwnerPassword = "admin_pwd_2024",
	.AllowUserCopyPasteContent = False,
	.AllowUserEditing = IronPdf.Security.PdfEditSecurity.NoEdit,
	.AllowUserFormData = False,
	.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.NoPrint,
	.AllowUserAnnotations = False,
	.EncryptionAlgorithm = IronPdf.Security.PdfEncryptionAlgorithm.AES256,
	.UseStrongEncryption = True
}

' Apply digital restrictions
pdf.MetaData.Title = "Confidential Report"
pdf.MetaData.Author = "Finance Department"
pdf.MetaData.Keywords = "Internal Only, Q4 2024"
pdf.MetaData.ModifiedDate = DateTime.UtcNow

' Advanced: Add custom security handler
pdf.SecuritySettings.CustomSecurityHandler = New CustomSecurityHandler() With {
	.OnDocumentOpen = Function(doc) LogAccess(doc),
	.RequireTokenValidation = True
}

' Granular permission control
Dim permissions = New PdfPermissions() With {
	.AllowAccessibilityExtractContent = True,
	.AllowAssembleDocument = False,
	.AllowExtractContentForAccessibility = True,
	.AllowFillForms = False,
	.AllowFullQualityPrint = False,
	.AllowModifyAnnotations = False,
	.AllowModifyContents = False,
	.AllowPrint = False
}

pdf.ApplySecuritySettings(permissions)
pdf.SaveAs("secured-report.pdf")
$vbLabelText   $csharpLabel

IronPDF'nin güvenlik uygulaması, SecuritySettings sınıfı aracılığıyla ayrıntılı kontrol sağlar. API, özelleştirilebilir güvenlik işleyicileri ile işletme DRM senaryolarını etkinleştirerek hem şifre tabanlı hem de sertifika tabanlı şifrelemeyi destekler.

Aspose.PDF Şifreleme Uygulaması

using Aspose.Pdf;
using Aspose.Pdf.Facades;

// Load document
Document pdfDocument = new Document("financial-report.pdf");

// Basic encryption
pdfDocument.Encrypt(
    userPassword: "user123",
    ownerPassword: "owner123",
    permissions: Permissions.PrintDocument | Permissions.ModifyContent,
    cryptoAlgorithm: CryptoAlgorithm.AESx256
);

// Advanced security with certificates
using (PdfFileSecurity fileSecurity = new PdfFileSecurity())
{
    fileSecurity.BindPdf(pdfDocument);

    // Certificate-based encryption
    X509Certificate2 certificate = new X509Certificate2("recipient.cer");
    fileSecurity.EncryptFile(
        null, // No user password
        "owner_password",
        DocumentPrivilege.Print | DocumentPrivilege.Copy,
        KeySize.x256,
        Algorithm.AES,
        new X509Certificate2[] { certificate }
    );
}

// Set document restrictions
pdfDocument.Security = new PdfSecurity()
{
    IsEncrypted = true,
    EncryptionAlgorithm = EncryptionAlgorithm.AES_256,
    Permissions = AccessPermissions.ExtractContent | 
                  AccessPermissions.ExtractContentWithDisabilities
};

pdfDocument.Save("encrypted.pdf");
using Aspose.Pdf;
using Aspose.Pdf.Facades;

// Load document
Document pdfDocument = new Document("financial-report.pdf");

// Basic encryption
pdfDocument.Encrypt(
    userPassword: "user123",
    ownerPassword: "owner123",
    permissions: Permissions.PrintDocument | Permissions.ModifyContent,
    cryptoAlgorithm: CryptoAlgorithm.AESx256
);

// Advanced security with certificates
using (PdfFileSecurity fileSecurity = new PdfFileSecurity())
{
    fileSecurity.BindPdf(pdfDocument);

    // Certificate-based encryption
    X509Certificate2 certificate = new X509Certificate2("recipient.cer");
    fileSecurity.EncryptFile(
        null, // No user password
        "owner_password",
        DocumentPrivilege.Print | DocumentPrivilege.Copy,
        KeySize.x256,
        Algorithm.AES,
        new X509Certificate2[] { certificate }
    );
}

// Set document restrictions
pdfDocument.Security = new PdfSecurity()
{
    IsEncrypted = true,
    EncryptionAlgorithm = EncryptionAlgorithm.AES_256,
    Permissions = AccessPermissions.ExtractContent | 
                  AccessPermissions.ExtractContentWithDisabilities
};

pdfDocument.Save("encrypted.pdf");
Imports Aspose.Pdf
Imports Aspose.Pdf.Facades

' Load document
Private pdfDocument As New Document("financial-report.pdf")

' Basic encryption
pdfDocument.Encrypt(userPassword:= "user123", ownerPassword:= "owner123", permissions:= Permissions.PrintDocument Or Permissions.ModifyContent, cryptoAlgorithm:= CryptoAlgorithm.AESx256)

' Advanced security with certificates
Using fileSecurity As New PdfFileSecurity()
	fileSecurity.BindPdf(pdfDocument)

	' Certificate-based encryption
	Dim certificate As New X509Certificate2("recipient.cer")
	fileSecurity.EncryptFile(Nothing, "owner_password", DocumentPrivilege.Print Or DocumentPrivilege.Copy, KeySize.x256, Algorithm.AES, New X509Certificate2() { certificate })
End Using

' Set document restrictions
pdfDocument.Security = New PdfSecurity() With {
	.IsEncrypted = True,
	.EncryptionAlgorithm = EncryptionAlgorithm.AES_256,
	.Permissions = AccessPermissions.ExtractContent Or AccessPermissions.ExtractContentWithDisabilities
}

pdfDocument.Save("encrypted.pdf")
$vbLabelText   $csharpLabel

Aspose.PDF, temel şifrelemeyi gelişmiş güvenlik özelliklerinden ayırır ve sertifika işlemleri için PdfFileSecurity sınıfını gerektirir. Fonksiyonel olmasına rağmen, API, IronPDF'nin birleşik yaklaşımına kıyasla eşdeğer güvenlik yapılandırmaları için daha fazla kod gerektirir.

Güvenlik Özelliği Karşılaştırma Matrisi

Güvenlik Özelliği IronPDF Aspose.PDF Açıklamalar
AES-256 Şifreleme Dahili Destekleniyor Her ikisi de mevcut standartları uygular
Sertifika Şifreleme Yerel API Fasadenler Yoluyla Aspose ek sınıflar gerektirir
Özelleştirilebilir Güvenlik İşleyicileri Genişletilebilir Sınırlı IronPDF, özelleştirilmiş DRM'yi sağlar
Gizleme Araçları Tek-çizgili API Manuel süreç IronPDF, uyum basitleştirir
Dijital İmzalar Entegre Destekleniyor Her ikisi de PKI altyapısını destekler
İzin Ayrıntılığı 15+ seçenek 8 seçenek IronPDF daha hassas kontrol sunar

PDF İçerik Redaksiyon Özellikleri Nasıl Karşılaştırılır?

İçerik redaksiyonu, GDPR ve HIPAA gibi düzenlemelerle uyum için kritik olan hassas bilgilerin kalıcı olarak kaldırılmasını sağlar. Uygulama yaklaşımı hem güvenlik hem de kullanılabilirliği önemli ölçüde etkiler.

IronPDF Redaksiyon Örneği

using IronPdf;

// Load PDF containing sensitive data
PdfDocument pdf = PdfDocument.FromFile("medical-records.pdf");

// Simple redaction - removes all instances permanently
pdf.RedactTextOnAllPages("SSN: *", "XXX-XX-XXXX");
pdf.RedactTextOnAllPages(@"\b\d{3}-\d{2}-\d{4}\b"); // Regex for SSN pattern

// Advanced redaction with options
var redactionOptions = new RedactionOptions()
{
    RedactionColor = Color.Black,
    RedactionOpacity = 1.0f,
    UseRegex = true,
    MatchCase = false,
    // Redact across form fields and annotations
    SearchInFormFields = true,
    SearchInAnnotations = true
};

// Redact specific pages with custom rendering
pdf.RedactTextOnPages("CONFIDENTIAL", 
    new[] { 0, 1, 5 }, // Page indices
    redactionOptions);

// Area-based redaction for images/signatures
pdf.RedactArea(new Rectangle(100, 100, 200, 50), 2); // Page 3

// Verify redaction (for compliance logging)
var redactionLog = pdf.GetRedactionLog();
Console.WriteLine($"Redacted {redactionLog.Count} items");

pdf.SaveAs("redacted-medical-records.pdf");
using IronPdf;

// Load PDF containing sensitive data
PdfDocument pdf = PdfDocument.FromFile("medical-records.pdf");

// Simple redaction - removes all instances permanently
pdf.RedactTextOnAllPages("SSN: *", "XXX-XX-XXXX");
pdf.RedactTextOnAllPages(@"\b\d{3}-\d{2}-\d{4}\b"); // Regex for SSN pattern

// Advanced redaction with options
var redactionOptions = new RedactionOptions()
{
    RedactionColor = Color.Black,
    RedactionOpacity = 1.0f,
    UseRegex = true,
    MatchCase = false,
    // Redact across form fields and annotations
    SearchInFormFields = true,
    SearchInAnnotations = true
};

// Redact specific pages with custom rendering
pdf.RedactTextOnPages("CONFIDENTIAL", 
    new[] { 0, 1, 5 }, // Page indices
    redactionOptions);

// Area-based redaction for images/signatures
pdf.RedactArea(new Rectangle(100, 100, 200, 50), 2); // Page 3

// Verify redaction (for compliance logging)
var redactionLog = pdf.GetRedactionLog();
Console.WriteLine($"Redacted {redactionLog.Count} items");

pdf.SaveAs("redacted-medical-records.pdf");
Imports IronPdf

' Load PDF containing sensitive data
Private pdf As PdfDocument = PdfDocument.FromFile("medical-records.pdf")

' Simple redaction - removes all instances permanently
pdf.RedactTextOnAllPages("SSN: *", "XXX-XX-XXXX")
pdf.RedactTextOnAllPages("\b\d{3}-\d{2}-\d{4}\b") ' Regex for SSN pattern

' Advanced redaction with options
Dim redactionOptions As New RedactionOptions() With {
	.RedactionColor = Color.Black,
	.RedactionOpacity = 1.0F,
	.UseRegex = True,
	.MatchCase = False,
	.SearchInFormFields = True,
	.SearchInAnnotations = True
}

' Redact specific pages with custom rendering
pdf.RedactTextOnPages("CONFIDENTIAL", { 0, 1, 5 }, redactionOptions)

' Area-based redaction for images/signatures
pdf.RedactArea(New Rectangle(100, 100, 200, 50), 2) ' Page 3

' Verify redaction (for compliance logging)
Dim redactionLog = pdf.GetRedactionLog()
Console.WriteLine($"Redacted {redactionLog.Count} items")

pdf.SaveAs("redacted-medical-records.pdf")
$vbLabelText   $csharpLabel

IronPDF'nin RedactTextOnAllPages() metodu, içeriği sadece siyah kutularla kaplamaktan ziyade, PDF yapısından kalıcı olarak kaldırarak gerçek gizleme uygulaması yapar. redaksiyon öğreticisi, denetime-uyumlu iş akışlarını, denetim yol takiplerini ve metin dışı içerik için alan bazlı redaksiyonları gösterir.

Aspose.PDF Redaksiyon Örneği

using Aspose.Pdf;
using Aspose.Pdf.Redaction;
using Aspose.Pdf.Text;

Document document = new Document("medical-records.pdf");

// Find text to redact
TextFragmentAbsorber textAbsorber = new TextFragmentAbsorber("CONFIDENTIAL");
textAbsorber.TextSearchOptions = new TextSearchOptions(true); // Regex enabled

// Elle redaction process
foreach (Page page in document.Pages)
{
    page.Accept(textAbsorber);

    foreach (TextFragment textFragment in textAbsorber.TextFragments)
    {
        // Create redaction annotation
        RedactionAnnotation redaction = new RedactionAnnotation(page, textFragment.Rectangle)
        {
            FillColor = Color.Black,
            BorderColor = Color.Black,
            OverlayText = "[REDACTED]",
            TextAlignment = HorizontalAlignment.Center
        };

        page.Annotations.Add(redaction);

        // Apply redaction (makes it permanent)
        redaction.Redact();

        // Elle text removal
        textFragment.Text = string.Empty;
    }
}

// Secondary pass for form fields
var formEditor = new Form(document);
foreach (Field field in document.Form.Fields)
{
    if (field.Value.Contains("SSN:"))
    {
        field.Value = "XXX-XX-XXXX";
        field.ReadOnly = true;
    }
}

document.Save("redacted.pdf");
using Aspose.Pdf;
using Aspose.Pdf.Redaction;
using Aspose.Pdf.Text;

Document document = new Document("medical-records.pdf");

// Find text to redact
TextFragmentAbsorber textAbsorber = new TextFragmentAbsorber("CONFIDENTIAL");
textAbsorber.TextSearchOptions = new TextSearchOptions(true); // Regex enabled

// Elle redaction process
foreach (Page page in document.Pages)
{
    page.Accept(textAbsorber);

    foreach (TextFragment textFragment in textAbsorber.TextFragments)
    {
        // Create redaction annotation
        RedactionAnnotation redaction = new RedactionAnnotation(page, textFragment.Rectangle)
        {
            FillColor = Color.Black,
            BorderColor = Color.Black,
            OverlayText = "[REDACTED]",
            TextAlignment = HorizontalAlignment.Center
        };

        page.Annotations.Add(redaction);

        // Apply redaction (makes it permanent)
        redaction.Redact();

        // Elle text removal
        textFragment.Text = string.Empty;
    }
}

// Secondary pass for form fields
var formEditor = new Form(document);
foreach (Field field in document.Form.Fields)
{
    if (field.Value.Contains("SSN:"))
    {
        field.Value = "XXX-XX-XXXX";
        field.ReadOnly = true;
    }
}

document.Save("redacted.pdf");
Imports Aspose.Pdf
Imports Aspose.Pdf.Redaction
Imports Aspose.Pdf.Text

Dim document As New Document("medical-records.pdf")

' Find text to redact
Dim textAbsorber As New TextFragmentAbsorber("CONFIDENTIAL")
textAbsorber.TextSearchOptions = New TextSearchOptions(True) ' Regex enabled

' Elle redaction process
For Each page As Page In document.Pages
    page.Accept(textAbsorber)

    For Each textFragment As TextFragment In textAbsorber.TextFragments
        ' Create redaction annotation
        Dim redaction As New RedactionAnnotation(page, textFragment.Rectangle) With {
            .FillColor = Color.Black,
            .BorderColor = Color.Black,
            .OverlayText = "[REDACTED]",
            .TextAlignment = HorizontalAlignment.Center
        }

        page.Annotations.Add(redaction)

        ' Apply redaction (makes it permanent)
        redaction.Redact()

        ' Elle text removal
        textFragment.Text = String.Empty
    Next
Next

' Secondary pass for form fields
Dim formEditor As New Form(document)
For Each field As Field In document.Form.Fields
    If field.Value.Contains("SSN:") Then
        field.Value = "XXX-XX-XXXX"
        field.ReadOnly = True
    End If
Next

document.Save("redacted.pdf")
$vbLabelText   $csharpLabel

Aspose.PDF'nin redaksiyonu, metin arama, ek açıklama oluşturma ve açıkça kaldırma adımlarını gerektirir. Kontrol sağlayan bu yaklaşım, uyum açısından kritik senaryolarda karmaşıklığı ve hata potansiyelini artırır. Çok aşamalı bu süreç ayrıca büyük belgelerde performansı etkiler.

Redaksiyon Yeteneği Analizi

Gizleme yaklaşımlarındaki temel farklılıklar şunlardır:

  • IronPDF: PDF akışından gerçek içerik kaldırma, otomatik desen eşleştirme, tek yöntemli API
  • Aspose.PDF: Açıklama tabanlı yaklaşım, manuel metin konumu bulma zorunluluğu, çok aşamalı süreç
  • Uyumluluk: IronPDF'nin yaklaşımı NIST yönergeleri ile uyumlu işler
  • Performans: IronPDF, optimize edilmiş algoritmalar sayesinde 1000 sayfalık belgeleri 3 kat daha hızlı işler

Dijital İmza Yetenekleri Nasıl Karşılaştırılır?

Dijital imzalar, PDF belgeleri için kimlik doğrulama, bütünlük ve inkâr edilememe sağlar. Uygulama karmaşıklığı, üretim ortamlarında benimsemeyi doğrudan etkiler.

IronPDF Dijital İmza Örneği

using IronPdf;
using IronPdf.Signing;
using System.Security.Cryptography.X509Certificates;

// Load certificate with private key
X509Certificate2 signingCertificate = new X509Certificate2(
    "company-signing.pfx", 
    "cert_password",
    X509KeyStorageFlags.Exportable | X509KeyStorageFlags.PersistKeySet
);

// Create signature with advanced options
var signature = new PdfSignature(signingCertificate)
{
    // Visual signature appearance
    SignatureImage = new PdfSignatureImage("signature.png", 100, 30),
    SignaturePosition = new Rectangle(400, 650, 150, 50),

    // Signature metadata
    ContactInformation = "legal@company.com",
    LocationDescription = "San Francisco, CA",
    SignatureReason = "Contract Approval",

    // Cryptographic options
    DigestMethod = DigestMethods.SHA256,
    TimeStampUrl = "http://timestamp.digicert.com"
};

// Load and sign document
PdfDocument pdf = PdfDocument.FromFile("contract.pdf");

// Advanced: Multi-signature workflow
var signatureManager = pdf.SignatureManager;
if (signatureManager.HasPreviousSignatures)
{
    // Artımsal signing preserves existing signatures
    signature.SigningMode = SigningMode.IncrementalUpdate;
}

// Apply signature with validation
var signResult = pdf.Sign(signature);

// Verify signature integrity
if (signResult.IsValid)
{
    Console.WriteLine($"Document signed at {signResult.SigningTime}");
    Console.WriteLine($"Certificate: {signResult.SignerCertificate.Subject}");
}

// Add document timestamp (no visual signature)
pdf.ApplyTimestamp(new TimestampSignature()
{
    TimestampServerUrl = "http://timestamp.com/odoca.com",
    Username = "api_user",
    Password = "api_key"
});

pdf.SaveAs("signed-contract.pdf");
using IronPdf;
using IronPdf.Signing;
using System.Security.Cryptography.X509Certificates;

// Load certificate with private key
X509Certificate2 signingCertificate = new X509Certificate2(
    "company-signing.pfx", 
    "cert_password",
    X509KeyStorageFlags.Exportable | X509KeyStorageFlags.PersistKeySet
);

// Create signature with advanced options
var signature = new PdfSignature(signingCertificate)
{
    // Visual signature appearance
    SignatureImage = new PdfSignatureImage("signature.png", 100, 30),
    SignaturePosition = new Rectangle(400, 650, 150, 50),

    // Signature metadata
    ContactInformation = "legal@company.com",
    LocationDescription = "San Francisco, CA",
    SignatureReason = "Contract Approval",

    // Cryptographic options
    DigestMethod = DigestMethods.SHA256,
    TimeStampUrl = "http://timestamp.digicert.com"
};

// Load and sign document
PdfDocument pdf = PdfDocument.FromFile("contract.pdf");

// Advanced: Multi-signature workflow
var signatureManager = pdf.SignatureManager;
if (signatureManager.HasPreviousSignatures)
{
    // Artımsal signing preserves existing signatures
    signature.SigningMode = SigningMode.IncrementalUpdate;
}

// Apply signature with validation
var signResult = pdf.Sign(signature);

// Verify signature integrity
if (signResult.IsValid)
{
    Console.WriteLine($"Document signed at {signResult.SigningTime}");
    Console.WriteLine($"Certificate: {signResult.SignerCertificate.Subject}");
}

// Add document timestamp (no visual signature)
pdf.ApplyTimestamp(new TimestampSignature()
{
    TimestampServerUrl = "http://timestamp.com/odoca.com",
    Username = "api_user",
    Password = "api_key"
});

pdf.SaveAs("signed-contract.pdf");
Imports IronPdf
Imports IronPdf.Signing
Imports System.Security.Cryptography.X509Certificates

' Load certificate with private key
Dim signingCertificate As New X509Certificate2("company-signing.pfx", "cert_password", X509KeyStorageFlags.Exportable Or X509KeyStorageFlags.PersistKeySet)

' Create signature with advanced options
Dim signature As New PdfSignature(signingCertificate) With {
    ' Visual signature appearance
    .SignatureImage = New PdfSignatureImage("signature.png", 100, 30),
    .SignaturePosition = New Rectangle(400, 650, 150, 50),

    ' Signature metadata
    .ContactInformation = "legal@company.com",
    .LocationDescription = "San Francisco, CA",
    .SignatureReason = "Contract Approval",

    ' Cryptographic options
    .DigestMethod = DigestMethods.SHA256,
    .TimeStampUrl = "http://timestamp.digicert.com"
}

' Load and sign document
Dim pdf As PdfDocument = PdfDocument.FromFile("contract.pdf")

' Advanced: Multi-signature workflow
Dim signatureManager = pdf.SignatureManager
If signatureManager.HasPreviousSignatures Then
    ' Incremental signing preserves existing signatures
    signature.SigningMode = SigningMode.IncrementalUpdate
End If

' Apply signature with validation
Dim signResult = pdf.Sign(signature)

' Verify signature integrity
If signResult.IsValid Then
    Console.WriteLine($"Document signed at {signResult.SigningTime}")
    Console.WriteLine($"Certificate: {signResult.SignerCertificate.Subject}")
End If

' Add document timestamp (no visual signature)
pdf.ApplyTimestamp(New TimestampSignature() With {
    .TimestampServerUrl = "http://timestamp.com/odoca.com",
    .Username = "api_user",
    .Password = "api_key"
})

pdf.SaveAs("signed-contract.pdf")
$vbLabelText   $csharpLabel

IronPDF, sertifika yönetimi, görsel görünüm ve kriptografik işlemleri şeffaf bir şekilde ele alarak PdfSignature sınıfı aracılığıyla dijital imzaları kolaylaştırır. imzalama belgeleri HSM entegrasyonu ve toplu imzalama iş akışları gibi gelişmiş senaryoları kapsar.

Aspose.PDF Dijital İmza Örneği

using Aspose.Pdf;
using Aspose.Pdf.Forms;
using Aspose.Pdf.Facades;
using System.Security.Cryptography.X509Certificates;

Document document = new Document("contract.pdf");

// Create signature field manually
SignatureField signatureField = new SignatureField(
    document.Pages[1], 
    new Rectangle(100, 650, 300, 700)
);
signatureField.PartialName = "SignatureField1";

// Configure PKCS7 signature
PKCS7 pkcs7 = new PKCS7(
    "company-signing.pfx",
    "cert_password"
);
pkcs7.Reason = "Contract Approval";
pkcs7.ContactInfo = "legal@company.com";
pkcs7.Location = "San Francisco, CA";
pkcs7.Date = DateTime.Now;

// Setup visual appearance
SignatureAppearance appearance = new SignatureAppearance()
{
    Foreground = System.Drawing.Color.Blue,
    Background = System.Drawing.Color.White,
    GraphicsMode = SignatureAppearance.GraphicsModeEnum.SignatureAndDescription
};

// Elle signature application
using (PdfFileSignature pdfSign = new PdfFileSignature())
{
    pdfSign.BindPdf(document);

    // Configure signature rectangle
    System.Drawing.Rectangle rect = new System.Drawing.Rectangle(
        100, 650, 200, 50
    );

    // Sign with appearance
    pdfSign.Sign(1, // Page number
        "Approved by Legal Department",
        "legal@company.com",
        "San Francisco",
        true, // Visible
        rect,
        pkcs7);

    // Save incrementally
    pdfSign.Save("signed.pdf");
}

// Timestamp requires separate operation
PdfFileSignature timeStamp = new PdfFileSignature();
timeStamp.BindPdf("signed.pdf");
timeStamp.Timestamp(new TimestampSettings("http://tsa.example.com")
{
    BasicAuthCredentials = new BasicAuthCredentials("user", "pass")
});
using Aspose.Pdf;
using Aspose.Pdf.Forms;
using Aspose.Pdf.Facades;
using System.Security.Cryptography.X509Certificates;

Document document = new Document("contract.pdf");

// Create signature field manually
SignatureField signatureField = new SignatureField(
    document.Pages[1], 
    new Rectangle(100, 650, 300, 700)
);
signatureField.PartialName = "SignatureField1";

// Configure PKCS7 signature
PKCS7 pkcs7 = new PKCS7(
    "company-signing.pfx",
    "cert_password"
);
pkcs7.Reason = "Contract Approval";
pkcs7.ContactInfo = "legal@company.com";
pkcs7.Location = "San Francisco, CA";
pkcs7.Date = DateTime.Now;

// Setup visual appearance
SignatureAppearance appearance = new SignatureAppearance()
{
    Foreground = System.Drawing.Color.Blue,
    Background = System.Drawing.Color.White,
    GraphicsMode = SignatureAppearance.GraphicsModeEnum.SignatureAndDescription
};

// Elle signature application
using (PdfFileSignature pdfSign = new PdfFileSignature())
{
    pdfSign.BindPdf(document);

    // Configure signature rectangle
    System.Drawing.Rectangle rect = new System.Drawing.Rectangle(
        100, 650, 200, 50
    );

    // Sign with appearance
    pdfSign.Sign(1, // Page number
        "Approved by Legal Department",
        "legal@company.com",
        "San Francisco",
        true, // Visible
        rect,
        pkcs7);

    // Save incrementally
    pdfSign.Save("signed.pdf");
}

// Timestamp requires separate operation
PdfFileSignature timeStamp = new PdfFileSignature();
timeStamp.BindPdf("signed.pdf");
timeStamp.Timestamp(new TimestampSettings("http://tsa.example.com")
{
    BasicAuthCredentials = new BasicAuthCredentials("user", "pass")
});
Imports Aspose.Pdf
Imports Aspose.Pdf.Forms
Imports Aspose.Pdf.Facades
Imports System.Security.Cryptography.X509Certificates

Dim document As New Document("contract.pdf")

' Create signature field manually
Dim signatureField As New SignatureField(document.Pages(1), New Rectangle(100, 650, 300, 700))
signatureField.PartialName = "SignatureField1"

' Configure PKCS7 signature
Dim pkcs7 As New PKCS7("company-signing.pfx", "cert_password")
pkcs7.Reason = "Contract Approval"
pkcs7.ContactInfo = "legal@company.com"
pkcs7.Location = "San Francisco, CA"
pkcs7.Date = DateTime.Now

' Setup visual appearance
Dim appearance As New SignatureAppearance() With {
    .Foreground = System.Drawing.Color.Blue,
    .Background = System.Drawing.Color.White,
    .GraphicsMode = SignatureAppearance.GraphicsModeEnum.SignatureAndDescription
}

' Elle signature application
Using pdfSign As New PdfFileSignature()
    pdfSign.BindPdf(document)

    ' Configure signature rectangle
    Dim rect As New System.Drawing.Rectangle(100, 650, 200, 50)

    ' Sign with appearance
    pdfSign.Sign(1, ' Page number
                 "Approved by Legal Department",
                 "legal@company.com",
                 "San Francisco",
                 True, ' Visible
                 rect,
                 pkcs7)

    ' Save incrementally
    pdfSign.Save("signed.pdf")
End Using

' Timestamp requires separate operation
Dim timeStamp As New PdfFileSignature()
timeStamp.BindPdf("signed.pdf")
timeStamp.Timestamp(New TimestampSettings("http://tsa.example.com") With {
    .BasicAuthCredentials = New BasicAuthCredentials("user", "pass")
})
$vbLabelText   $csharpLabel

Aspose.PDF, imzalama işlemleri için manuel imza alanı oluşturma ve birden çok sınıf gerektirir. PKCS7, SignatureField ve PdfFileSignature arasındaki ayrım, standart imzalama iş akışları için karmaşıklığı artırır.

Dijital İmza Özellik Matriksi

Özellik IronPDF Aspose.PDF Uygulama Etkisi
Görünür İmzalar Dahili Manuel kurulum IronPDF daha az kod gerektirir
Görünmez İmzalar Destekleniyor Destekleniyor Her ikisi de onaylamayı ele alır
Çoklu-imzalar Artımsal Manuel izleme IronPDF otomatik olarak korur
Zaman damgası Sunucusu Entegre Ayrı API IronPDF birleşik yaklaşım
HSM Desteği PKCS#11 aracılığıyla Özel sağlayıcı Her ikisi de donanım anahtarlarını destekler
LTV (Uzun dönem) Otomatik Manuel yapılandırma IronPDF, uyum basitleştirir
Toplu İmzalama Optimizasyon Standart döngü IronPDF toplu için 5 kat daha hızlı

Filigranlama Özellikleri Nasıl Karşılaştırılır?

Filigranlama, fikri mülkiyeti korur ve belgenin izlenebilirliğini sağlar. Uygulama yaklaşımı hem görsel kaliteyi hem de performansı etkiler.

IronPDF Filigranlama Örneği

using IronPdf;
using IronPdf.Editing;

// Create renderer for new PDFs
var renderer = new ChromePdfRenderer();

// Generate PDF from URL
var pdf = renderer.RenderUrlAsPdf("https://ironpdf.com/features/");

// HTML/CSS watermark with transparency and rotation
pdf.ApplyWatermark(@"
    <div style='
        font-family: Arial, sans-serif;
        font-size: 72px;
        color: rgba(255, 0, 0, 0.3);
        transform: rotate(-45deg);
        text-shadow: 2px 2px 4px rgba(0,0,0,0.1);
    '>
        CONFIDENTIAL
    </div>",
    rotation: 45,
    opacity: 30,
    verticalAlignment: VerticalAlignment.Middle,
    horizontalAlignment: HorizontalAlignment.Center
);

// Advanced watermark with dynamic content
string dynamicWatermark = $@"
    <div style='text-align: center; font-family: Georgia;'>
        <img src='data:image/png;base64,{logoBase64}' width='100' 
             style='opacity: 0.5;' />
        <p style='color: #666; font-size: 14px; margin-top: 10px;'>
            Document ID: {documentId}<br/>
            Generated: {DateTime.Now:yyyy-MM-dd HH:mm}<br/>
            User: {currentUser}
        </p>
    </div>";

// Apply to specific pages with custom positioning
pdf.ApplyWatermark(dynamicWatermark,
    pageIndexes: new[] { 0, 2, 4 }, // First, third, fifth pages
    rotation: 0,
    opacity: 50,
    verticalOffset: -100, // 100px from center
    horizontalOffset: 200
);

// Background watermark (behind content)
var backgroundWatermark = new HtmlStamper()
{
    Html = "<h1 style='color: #f0f0f0; font-size: 120px;'>DRAFT</h1>",
    Opacity = 10,
    IsStampBehindContent = true,
    VerticalAlignment = VerticalAlignment.Middle,
    HorizontalAlignment = HorizontalAlignment.Center
};

pdf.ApplyStamp(backgroundWatermark);

// Batch watermarking with performance optimization
var options = new WatermarkOptions()
{
    UseParallelProcessing = true,
    CacheWatermarkImage = true
};

foreach (var page in pdf.Pages)
{
    page.ApplyWatermark("© 2024 Company Name", options);
}

pdf.SaveAs("watermarked-document.pdf");
using IronPdf;
using IronPdf.Editing;

// Create renderer for new PDFs
var renderer = new ChromePdfRenderer();

// Generate PDF from URL
var pdf = renderer.RenderUrlAsPdf("https://ironpdf.com/features/");

// HTML/CSS watermark with transparency and rotation
pdf.ApplyWatermark(@"
    <div style='
        font-family: Arial, sans-serif;
        font-size: 72px;
        color: rgba(255, 0, 0, 0.3);
        transform: rotate(-45deg);
        text-shadow: 2px 2px 4px rgba(0,0,0,0.1);
    '>
        CONFIDENTIAL
    </div>",
    rotation: 45,
    opacity: 30,
    verticalAlignment: VerticalAlignment.Middle,
    horizontalAlignment: HorizontalAlignment.Center
);

// Advanced watermark with dynamic content
string dynamicWatermark = $@"
    <div style='text-align: center; font-family: Georgia;'>
        <img src='data:image/png;base64,{logoBase64}' width='100' 
             style='opacity: 0.5;' />
        <p style='color: #666; font-size: 14px; margin-top: 10px;'>
            Document ID: {documentId}<br/>
            Generated: {DateTime.Now:yyyy-MM-dd HH:mm}<br/>
            User: {currentUser}
        </p>
    </div>";

// Apply to specific pages with custom positioning
pdf.ApplyWatermark(dynamicWatermark,
    pageIndexes: new[] { 0, 2, 4 }, // First, third, fifth pages
    rotation: 0,
    opacity: 50,
    verticalOffset: -100, // 100px from center
    horizontalOffset: 200
);

// Background watermark (behind content)
var backgroundWatermark = new HtmlStamper()
{
    Html = "<h1 style='color: #f0f0f0; font-size: 120px;'>DRAFT</h1>",
    Opacity = 10,
    IsStampBehindContent = true,
    VerticalAlignment = VerticalAlignment.Middle,
    HorizontalAlignment = HorizontalAlignment.Center
};

pdf.ApplyStamp(backgroundWatermark);

// Batch watermarking with performance optimization
var options = new WatermarkOptions()
{
    UseParallelProcessing = true,
    CacheWatermarkImage = true
};

foreach (var page in pdf.Pages)
{
    page.ApplyWatermark("© 2024 Company Name", options);
}

pdf.SaveAs("watermarked-document.pdf");
Imports IronPdf
Imports IronPdf.Editing

' Create renderer for new PDFs
Private renderer = New ChromePdfRenderer()

' Generate PDF from URL
Private pdf = renderer.RenderUrlAsPdf("https://ironpdf.com/features/")

' HTML/CSS watermark with transparency and rotation
pdf.ApplyWatermark("
    <div style='
        font-family: Arial, sans-serif;
        font-size: 72px;
        color: rgba(255, 0, 0, 0.3);
        transform: rotate(-45deg);
        text-shadow: 2px 2px 4px rgba(0,0,0,0.1);
    '>
        CONFIDENTIAL
    </div>", rotation:= 45, opacity:= 30, verticalAlignment:= VerticalAlignment.Middle, horizontalAlignment:= HorizontalAlignment.Center)

' Advanced watermark with dynamic content
Dim dynamicWatermark As String = $"
    <div style='text-align: center; font-family: Georgia;'>
        <img src='data:image/png;base64,{logoBase64}' width='100' 
             style='opacity: 0.5;' />
        <p style='color: #666; font-size: 14px; margin-top: 10px;'>
            Document ID: {documentId}<br/>
            Generated: {DateTime.Now:yyyy-MM-dd HH:mm}<br/>
            User: {currentUser}
        </p>
    </div>"

' Apply to specific pages with custom positioning
pdf.ApplyWatermark(dynamicWatermark, pageIndexes:= { 0, 2, 4 }, rotation:= 0, opacity:= 50, verticalOffset:= -100, horizontalOffset:= 200)

' Background watermark (behind content)
Dim backgroundWatermark = New HtmlStamper() With {
	.Html = "<h1 style='color: #f0f0f0; font-size: 120px;'>DRAFT</h1>",
	.Opacity = 10,
	.IsStampBehindContent = True,
	.VerticalAlignment = VerticalAlignment.Middle,
	.HorizontalAlignment = HorizontalAlignment.Center
}

pdf.ApplyStamp(backgroundWatermark)

' Batch watermarking with performance optimization
Dim options = New WatermarkOptions() With {
	.UseParallelProcessing = True,
	.CacheWatermarkImage = True
}

For Each page In pdf.Pages
	page.ApplyWatermark("© 2024 Company Name", options)
Next page

pdf.SaveAs("watermarked-document.pdf")
$vbLabelText   $csharpLabel

IronPDF'nin filigranlaması, gradyanlar, gölgeler ve duyarlı düzenler gibi karmaşık tasarımlar sağlayarak tam HTML/CSS işleme kullanır. filigranlama örnekleri, QR kodu filigranları ve dinamik içerik enjeksiyonu gibi gelişmiş teknikleri sergiler.

Aspose.PDF Filigranlama Örneği

using Aspose.Pdf;
using Aspose.Pdf.Text;

Document document = new Document("input.pdf");

// Text stamp as watermark
TextStamp textStamp = new TextStamp("CONFIDENTIAL")
{
    Background = true, // Behind content
    Opacity = 0.3,
    TextAlignment = HorizontalAlignment.Center,
    VerticalAlignment = VerticalAlignment.Center,
    RotateAngle = 45,
    TextState = new TextState()
    {
        Font = FontRepository.FindFont("Arial"),
        FontSize = 72,
        ForegroundColor = Color.Red,
        FontStyle = FontStyles.Bold
    }
};

// Apply to all pages
foreach (Page page in document.Pages)
{
    page.AddStamp(textStamp);
}

// Image watermark
ImageStamp imageStamp = new ImageStamp("logo.png")
{
    Background = true,
    Opacity = 0.2,
    Width = 200,
    Height = 100,
    XIndent = page.PageInfo.Width / 2 - 100,
    YIndent = page.PageInfo.Height / 2 - 50
};

// Artifact-based watermark (PDF/A compliant)
WatermarkArtifact watermark = new WatermarkArtifact();
watermark.SetText("SAMPLE");
watermark.ArtifactHorizontalAlignment = HorizontalAlignment.Center;
watermark.ArtifactVerticalAlignment = VerticalAlignment.Center;
watermark.Rotation = 45;
watermark.Opacity = 0.5;
watermark.IsBackground = true;

// Complex positioning requires calculation
foreach (Page page in document.Pages)
{
    // Elle centering
    double pageWidth = page.PageInfo.Width;
    double pageHeight = page.PageInfo.Height;

    TextStamp positionedStamp = new TextStamp("Page " + page.Number)
    {
        XIndent = pageWidth - 100,
        YIndent = 20,
        TextState = new TextState()
        {
            FontSize = 10,
            ForegroundColor = Color.Gray
        }
    };

    page.AddStamp(positionedStamp);
}

document.Save("watermarked.pdf");
using Aspose.Pdf;
using Aspose.Pdf.Text;

Document document = new Document("input.pdf");

// Text stamp as watermark
TextStamp textStamp = new TextStamp("CONFIDENTIAL")
{
    Background = true, // Behind content
    Opacity = 0.3,
    TextAlignment = HorizontalAlignment.Center,
    VerticalAlignment = VerticalAlignment.Center,
    RotateAngle = 45,
    TextState = new TextState()
    {
        Font = FontRepository.FindFont("Arial"),
        FontSize = 72,
        ForegroundColor = Color.Red,
        FontStyle = FontStyles.Bold
    }
};

// Apply to all pages
foreach (Page page in document.Pages)
{
    page.AddStamp(textStamp);
}

// Image watermark
ImageStamp imageStamp = new ImageStamp("logo.png")
{
    Background = true,
    Opacity = 0.2,
    Width = 200,
    Height = 100,
    XIndent = page.PageInfo.Width / 2 - 100,
    YIndent = page.PageInfo.Height / 2 - 50
};

// Artifact-based watermark (PDF/A compliant)
WatermarkArtifact watermark = new WatermarkArtifact();
watermark.SetText("SAMPLE");
watermark.ArtifactHorizontalAlignment = HorizontalAlignment.Center;
watermark.ArtifactVerticalAlignment = VerticalAlignment.Center;
watermark.Rotation = 45;
watermark.Opacity = 0.5;
watermark.IsBackground = true;

// Complex positioning requires calculation
foreach (Page page in document.Pages)
{
    // Elle centering
    double pageWidth = page.PageInfo.Width;
    double pageHeight = page.PageInfo.Height;

    TextStamp positionedStamp = new TextStamp("Page " + page.Number)
    {
        XIndent = pageWidth - 100,
        YIndent = 20,
        TextState = new TextState()
        {
            FontSize = 10,
            ForegroundColor = Color.Gray
        }
    };

    page.AddStamp(positionedStamp);
}

document.Save("watermarked.pdf");
Imports Aspose.Pdf
Imports Aspose.Pdf.Text

Dim document As New Document("input.pdf")

' Text stamp as watermark
Dim textStamp As New TextStamp("CONFIDENTIAL") With {
    .Background = True, ' Behind content
    .Opacity = 0.3,
    .TextAlignment = HorizontalAlignment.Center,
    .VerticalAlignment = VerticalAlignment.Center,
    .RotateAngle = 45,
    .TextState = New TextState() With {
        .Font = FontRepository.FindFont("Arial"),
        .FontSize = 72,
        .ForegroundColor = Color.Red,
        .FontStyle = FontStyles.Bold
    }
}

' Apply to all pages
For Each page As Page In document.Pages
    page.AddStamp(textStamp)
Next

' Image watermark
Dim imageStamp As New ImageStamp("logo.png") With {
    .Background = True,
    .Opacity = 0.2,
    .Width = 200,
    .Height = 100,
    .XIndent = page.PageInfo.Width / 2 - 100,
    .YIndent = page.PageInfo.Height / 2 - 50
}

' Artifact-based watermark (PDF/A compliant)
Dim watermark As New WatermarkArtifact()
watermark.SetText("SAMPLE")
watermark.ArtifactHorizontalAlignment = HorizontalAlignment.Center
watermark.ArtifactVerticalAlignment = VerticalAlignment.Center
watermark.Rotation = 45
watermark.Opacity = 0.5
watermark.IsBackground = True

' Complex positioning requires calculation
For Each page As Page In document.Pages
    ' Elle centering
    Dim pageWidth As Double = page.PageInfo.Width
    Dim pageHeight As Double = page.PageInfo.Height

    Dim positionedStamp As New TextStamp("Page " & page.Number) With {
        .XIndent = pageWidth - 100,
        .YIndent = 20,
        .TextState = New TextState() With {
            .FontSize = 10,
            .ForegroundColor = Color.Gray
        }
    }

    page.AddStamp(positionedStamp)
Next

document.Save("watermarked.pdf")
$vbLabelText   $csharpLabel

Aspose.PDF'nin damgalama yaklaşımı, manuel konum hesaplamalarını gerektirir ve karmaşık filigranlar için yerel HTML işleme eksiktir. TextStamp, ImageStamp ve WatermarkArtifact sınıfları arasındaki ayrım, birleşik filigranlama iş akışlarını karmaşık hale getirir.

Filigranlama Performans Analizi

Filigranlama konusundaki temel farklılıklar şunlardır:

Boyut IronPDF Aspose.PDF Gerçek dünya Etkisi
HTML/CSS Desteği Tam işleme Yalnızca Metin/Görsel Tasarım esnekliği
Toplu Performans 1000 sayfa/dakika 600 sayfa/dakika IronPDF ile %40 daha hızlı
Bellek Kullanımı Optimize edilmiş önbellek Standart IronPDF daha büyük partileri ele alır
Dinamik İçerik Yerel destek Manuel montaj Daha hızlı geliştirme
Şeffaflık Alfa kanalı Sadece Opaklık Daha iyi görsel efektler

İçerik Damgalama Özellikleri Nasıl Karşılaştırılır?

İçerik damgalama, PDF belgelerinde üstbilgi, altbilgi, sayfa numaraları ve diğer tekrar eden öğeleri ekler. Uygulama verimliliği, belge oluşturma iş akışlarını doğrudan etkiler.

IronPDF Damgalama Örneği

using IronPdf;
using IronPdf.Editing;

// Load or create PDF
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Annual Report 2024</h1>");

// Advanced header with dynamic content
var headerStamper = new HtmlStamper()
{
    Html = @"
        <div style='display: flex; justify-content: space-between; 
                    align-items: center; width: 100%; padding: 10px;
                    border-bottom: 2px solid #333;'>
            <img src='logo.png' height='40' />
            <div style='text-align: center;'>
                <h3 style='margin: 0;'>{title}</h3>
                <p style='margin: 0; font-size: 10px;'>CONFIDENTIAL</p>
            </div>
            <div style='text-align: right; font-size: 10px;'>
                Page {page} of {total}<br/>
                {date}
            </div>
        </div>",
    VerticalAlignment = VerticalAlignment.Top,
    HorizontalAlignment = HorizontalAlignment.Center,
    Width = Unit.Percentage(100),
    Height = Unit.Millimeters(20)
};

// Apply with merge fields
pdf.ApplyStamp(headerStamper, new StampOptions()
{
    MergeFields = new Dictionary<string, string>()
    {
        { "title", "Financial Statement" },
        { "date", DateTime.Now.ToString("MMMM d, yyyy") }
    },
    PageNumbers = new[] { 1, 2, 3 } // Specific pages
});

// Text stamper with Google Yazı Tipleri
TextStamper textStamper = new TextStamper()
{
    Text = "© 2024 IronPDF Çözümüs",
    FontFamily = "Roboto",
    UseGoogleFont = true,
    FontSize = 12,
    TextColor = Color.FromArgb(100, 100, 100),
    VerticalAlignment = VerticalAlignment.Bottom,
    HorizontalAlignment = HorizontalAlignment.Center,
    VerticalOffset = Unit.Millimeters(10)
};

pdf.ApplyStamp(textStamper);

// Image stamper with precise positioning
ImageStamper logoStamper = new ImageStamper("qr-code.png")
{
    Width = Unit.Inches(1),
    Height = Unit.Inches(1),
    HorizontalAlignment = HorizontalAlignment.Right,
    VerticalAlignment = VerticalAlignment.Bottom,
    HorizontalOffset = Unit.Millimeters(-10),
    VerticalOffset = Unit.Millimeters(-10),
    Hyperlink = "https://ironpdf.com"
};

// Barcode stamper (using HTML5 canvas)
var barcodeStamper = new HtmlStamper()
{
    Html = @"
        <canvas id='barcode'></canvas>
        <script src='https://cdn.jsdelivr.net/npm/jsbarcode@3.11.5/dist/JsBarcode.all.min.js'></script>
        <script>
            JsBarcode('#barcode', 'ISBN-978-3-16-148410-0', {
                format: 'code128',
                width: 2,
                height: 50
            });
        </script>",
    Width = Unit.Millimeters(60),
    Height = Unit.Millimeters(20)
};

// Apply all stamps with batch processing
pdf.ApplyMultipleStamps(new List<Stamper> 
{ 
    headerStamper, 
    textStamper, 
    logoStamper, 
    barcodeStamper 
});

// Page numbering with custom format
pdf.AddPageNumbers(new PageNumberOptions()
{
    Format = "Page {current} of {total}",
    Font = new FontOptions("Arial", 10),
    Position = PageNumberPosition.BottomCenter,
    StartNumber = 1,
    SkipPages = new[] { 0 } // Skip first page
});

pdf.SaveAs("stamped-report.pdf");
using IronPdf;
using IronPdf.Editing;

// Load or create PDF
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Annual Report 2024</h1>");

// Advanced header with dynamic content
var headerStamper = new HtmlStamper()
{
    Html = @"
        <div style='display: flex; justify-content: space-between; 
                    align-items: center; width: 100%; padding: 10px;
                    border-bottom: 2px solid #333;'>
            <img src='logo.png' height='40' />
            <div style='text-align: center;'>
                <h3 style='margin: 0;'>{title}</h3>
                <p style='margin: 0; font-size: 10px;'>CONFIDENTIAL</p>
            </div>
            <div style='text-align: right; font-size: 10px;'>
                Page {page} of {total}<br/>
                {date}
            </div>
        </div>",
    VerticalAlignment = VerticalAlignment.Top,
    HorizontalAlignment = HorizontalAlignment.Center,
    Width = Unit.Percentage(100),
    Height = Unit.Millimeters(20)
};

// Apply with merge fields
pdf.ApplyStamp(headerStamper, new StampOptions()
{
    MergeFields = new Dictionary<string, string>()
    {
        { "title", "Financial Statement" },
        { "date", DateTime.Now.ToString("MMMM d, yyyy") }
    },
    PageNumbers = new[] { 1, 2, 3 } // Specific pages
});

// Text stamper with Google Yazı Tipleri
TextStamper textStamper = new TextStamper()
{
    Text = "© 2024 IronPDF Çözümüs",
    FontFamily = "Roboto",
    UseGoogleFont = true,
    FontSize = 12,
    TextColor = Color.FromArgb(100, 100, 100),
    VerticalAlignment = VerticalAlignment.Bottom,
    HorizontalAlignment = HorizontalAlignment.Center,
    VerticalOffset = Unit.Millimeters(10)
};

pdf.ApplyStamp(textStamper);

// Image stamper with precise positioning
ImageStamper logoStamper = new ImageStamper("qr-code.png")
{
    Width = Unit.Inches(1),
    Height = Unit.Inches(1),
    HorizontalAlignment = HorizontalAlignment.Right,
    VerticalAlignment = VerticalAlignment.Bottom,
    HorizontalOffset = Unit.Millimeters(-10),
    VerticalOffset = Unit.Millimeters(-10),
    Hyperlink = "https://ironpdf.com"
};

// Barcode stamper (using HTML5 canvas)
var barcodeStamper = new HtmlStamper()
{
    Html = @"
        <canvas id='barcode'></canvas>
        <script src='https://cdn.jsdelivr.net/npm/jsbarcode@3.11.5/dist/JsBarcode.all.min.js'></script>
        <script>
            JsBarcode('#barcode', 'ISBN-978-3-16-148410-0', {
                format: 'code128',
                width: 2,
                height: 50
            });
        </script>",
    Width = Unit.Millimeters(60),
    Height = Unit.Millimeters(20)
};

// Apply all stamps with batch processing
pdf.ApplyMultipleStamps(new List<Stamper> 
{ 
    headerStamper, 
    textStamper, 
    logoStamper, 
    barcodeStamper 
});

// Page numbering with custom format
pdf.AddPageNumbers(new PageNumberOptions()
{
    Format = "Page {current} of {total}",
    Font = new FontOptions("Arial", 10),
    Position = PageNumberPosition.BottomCenter,
    StartNumber = 1,
    SkipPages = new[] { 0 } // Skip first page
});

pdf.SaveAs("stamped-report.pdf");
Imports IronPdf
Imports IronPdf.Editing
Imports System.Drawing

' Load or create PDF
Dim renderer As New ChromePdfRenderer()
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf("<h1>Annual Report 2024</h1>")

' Advanced header with dynamic content
Dim headerStamper As New HtmlStamper() With {
    .Html = "
        <div style='display: flex; justify-content: space-between; 
                    align-items: center; width: 100%; padding: 10px;
                    border-bottom: 2px solid #333;'>
            <img src='logo.png' height='40' />
            <div style='text-align: center;'>
                <h3 style='margin: 0;'>{title}</h3>
                <p style='margin: 0; font-size: 10px;'>CONFIDENTIAL</p>
            </div>
            <div style='text-align: right; font-size: 10px;'>
                Page {page} of {total}<br/>
                {date}
            </div>
        </div>",
    .VerticalAlignment = VerticalAlignment.Top,
    .HorizontalAlignment = HorizontalAlignment.Center,
    .Width = Unit.Percentage(100),
    .Height = Unit.Millimeters(20)
}

' Apply with merge fields
pdf.ApplyStamp(headerStamper, New StampOptions() With {
    .MergeFields = New Dictionary(Of String, String)() From {
        {"title", "Financial Statement"},
        {"date", DateTime.Now.ToString("MMMM d, yyyy")}
    },
    .PageNumbers = New Integer() {1, 2, 3} ' Specific pages
})

' Text stamper with Google Fonts
Dim textStamper As New TextStamper() With {
    .Text = "© 2024 IronPDF Çözümüs",
    .FontFamily = "Roboto",
    .UseGoogleFont = True,
    .FontSize = 12,
    .TextColor = Color.FromArgb(100, 100, 100),
    .VerticalAlignment = VerticalAlignment.Bottom,
    .HorizontalAlignment = HorizontalAlignment.Center,
    .VerticalOffset = Unit.Millimeters(10)
}

pdf.ApplyStamp(textStamper)

' Image stamper with precise positioning
Dim logoStamper As New ImageStamper("qr-code.png") With {
    .Width = Unit.Inches(1),
    .Height = Unit.Inches(1),
    .HorizontalAlignment = HorizontalAlignment.Right,
    .VerticalAlignment = VerticalAlignment.Bottom,
    .HorizontalOffset = Unit.Millimeters(-10),
    .VerticalOffset = Unit.Millimeters(-10),
    .Hyperlink = "https://ironpdf.com"
}

' Barcode stamper (using HTML5 canvas)
Dim barcodeStamper As New HtmlStamper() With {
    .Html = "
        <canvas id='barcode'></canvas>
        <script src='https://cdn.jsdelivr.net/npm/jsbarcode@3.11.5/dist/JsBarcode.all.min.js'></script>
        <script>
            JsBarcode('#barcode', 'ISBN-978-3-16-148410-0', {
                format: 'code128',
                width: 2,
                height: 50
            });
        </script>",
    .Width = Unit.Millimeters(60),
    .Height = Unit.Millimeters(20)
}

' Apply all stamps with batch processing
pdf.ApplyMultipleStamps(New List(Of Stamper) From {
    headerStamper,
    textStamper,
    logoStamper,
    barcodeStamper
})

' Page numbering with custom format
pdf.AddPageNumbers(New PageNumberOptions() With {
    .Format = "Page {current} of {total}",
    .Font = New FontOptions("Arial", 10),
    .Position = PageNumberPosition.BottomCenter,
    .StartNumber = 1,
    .SkipPages = New Integer() {0} ' Skip first page
})

pdf.SaveAs("stamped-report.pdf")
$vbLabelText   $csharpLabel

.NET'nin damgalama API'si, metin, görüntü ve HTML içeriğini polimorfik Stamper sınıfları üzerinden birleştirir. Framework, duyarlı düzenler, birleştirme alanları ve dinamik içerik oluşturmayı destekler. Gelişmiş özellikler, IronQR kütüphanesi aracılığıyla barkod entegrasyonu ve QR kodu damgalama içerir.

Aspose.PDF Damgalama Örneği

using Aspose.Pdf;
using Aspose.Pdf.Text;

Document document = new Document("report.pdf");

// Header setup requires manual positioning
foreach (Page page in document.Pages)
{
    // Calculate positions
    double pageWidth = page.PageInfo.Width;
    double pageHeight = page.PageInfo.Height;

    // Company logo
    ImageStamp logoStamp = new ImageStamp("logo.png")
    {
        TopMargin = 10,
        HorizontalAlignment = HorizontalAlignment.Left,
        Width = 100,
        Height = 40
    };
    page.AddStamp(logoStamp);

    // Header text
    TextStamp headerText = new TextStamp("Annual Report 2024")
    {
        TopMargin = 20,
        HorizontalAlignment = HorizontalAlignment.Center,
        TextState = new TextState()
        {
            Font = FontRepository.FindFont("Arial"),
            FontSize = 16,
            FontStyle = FontStyles.Bold
        }
    };
    page.AddStamp(headerText);

    // Page numbers require string building
    TextStamp pageNumber = new TextStamp($"Page {document.Pages.IndexOf(page) + 1} of {document.Pages.Count}")
    {
        BottomMargin = 20,
        HorizontalAlignment = HorizontalAlignment.Center,
        TextState = new TextState()
        {
            FontSize = 10,
            ForegroundColor = Color.Gray
        }
    };
    page.AddStamp(pageNumber);
}

// Footer with multiple elements
TextFragment footerLeft = new TextFragment("© 2024 Company Name");
TextFragment footerRight = new TextFragment(DateTime.Now.ToString("MMMM d, yyyy"));

// Elle positioning for footer elements
Table footerTable = new Table()
{
    ColumnWidths = "250 250"
};

Row footerRow = footerTable.Rows.Add();
footerRow.Cells.Add(footerLeft.Text);
footerRow.Cells.Add(footerRight.Text);
footerRow.Cells[1].Alignment = HorizontalAlignment.Right;

// Add to each page
foreach (Page page in document.Pages)
{
    page.Paragraphs.Add(footerTable);
}

// Barcode requires external library or manual drawing
// No built-in barcode support

document.Save("stamped.pdf");
using Aspose.Pdf;
using Aspose.Pdf.Text;

Document document = new Document("report.pdf");

// Header setup requires manual positioning
foreach (Page page in document.Pages)
{
    // Calculate positions
    double pageWidth = page.PageInfo.Width;
    double pageHeight = page.PageInfo.Height;

    // Company logo
    ImageStamp logoStamp = new ImageStamp("logo.png")
    {
        TopMargin = 10,
        HorizontalAlignment = HorizontalAlignment.Left,
        Width = 100,
        Height = 40
    };
    page.AddStamp(logoStamp);

    // Header text
    TextStamp headerText = new TextStamp("Annual Report 2024")
    {
        TopMargin = 20,
        HorizontalAlignment = HorizontalAlignment.Center,
        TextState = new TextState()
        {
            Font = FontRepository.FindFont("Arial"),
            FontSize = 16,
            FontStyle = FontStyles.Bold
        }
    };
    page.AddStamp(headerText);

    // Page numbers require string building
    TextStamp pageNumber = new TextStamp($"Page {document.Pages.IndexOf(page) + 1} of {document.Pages.Count}")
    {
        BottomMargin = 20,
        HorizontalAlignment = HorizontalAlignment.Center,
        TextState = new TextState()
        {
            FontSize = 10,
            ForegroundColor = Color.Gray
        }
    };
    page.AddStamp(pageNumber);
}

// Footer with multiple elements
TextFragment footerLeft = new TextFragment("© 2024 Company Name");
TextFragment footerRight = new TextFragment(DateTime.Now.ToString("MMMM d, yyyy"));

// Elle positioning for footer elements
Table footerTable = new Table()
{
    ColumnWidths = "250 250"
};

Row footerRow = footerTable.Rows.Add();
footerRow.Cells.Add(footerLeft.Text);
footerRow.Cells.Add(footerRight.Text);
footerRow.Cells[1].Alignment = HorizontalAlignment.Right;

// Add to each page
foreach (Page page in document.Pages)
{
    page.Paragraphs.Add(footerTable);
}

// Barcode requires external library or manual drawing
// No built-in barcode support

document.Save("stamped.pdf");
Imports Aspose.Pdf
Imports Aspose.Pdf.Text

Dim document As New Document("report.pdf")

' Header setup requires manual positioning
For Each page As Page In document.Pages
    ' Calculate positions
    Dim pageWidth As Double = page.PageInfo.Width
    Dim pageHeight As Double = page.PageInfo.Height

    ' Company logo
    Dim logoStamp As New ImageStamp("logo.png") With {
        .TopMargin = 10,
        .HorizontalAlignment = HorizontalAlignment.Left,
        .Width = 100,
        .Height = 40
    }
    page.AddStamp(logoStamp)

    ' Header text
    Dim headerText As New TextStamp("Annual Report 2024") With {
        .TopMargin = 20,
        .HorizontalAlignment = HorizontalAlignment.Center,
        .TextState = New TextState() With {
            .Font = FontRepository.FindFont("Arial"),
            .FontSize = 16,
            .FontStyle = FontStyles.Bold
        }
    }
    page.AddStamp(headerText)

    ' Page numbers require string building
    Dim pageNumber As New TextStamp($"Page {document.Pages.IndexOf(page) + 1} of {document.Pages.Count}") With {
        .BottomMargin = 20,
        .HorizontalAlignment = HorizontalAlignment.Center,
        .TextState = New TextState() With {
            .FontSize = 10,
            .ForegroundColor = Color.Gray
        }
    }
    page.AddStamp(pageNumber)
Next

' Footer with multiple elements
Dim footerLeft As New TextFragment("© 2024 Company Name")
Dim footerRight As New TextFragment(DateTime.Now.ToString("MMMM d, yyyy"))

' Elle positioning for footer elements
Dim footerTable As New Table() With {
    .ColumnWidths = "250 250"
}

Dim footerRow As Row = footerTable.Rows.Add()
footerRow.Cells.Add(footerLeft.Text)
footerRow.Cells.Add(footerRight.Text)
footerRow.Cells(1).Alignment = HorizontalAlignment.Right

' Add to each page
For Each page As Page In document.Pages
    page.Paragraphs.Add(footerTable)
Next

' Barcode requires external library or manual drawing
' No built-in barcode support

document.Save("stamped.pdf")
$vbLabelText   $csharpLabel

Aspose.PDF'nin damgalaması, manuel yerleşim hesaplamalarını gerektirir ve birleşik içerik işleme yeteneğinden yoksundur. Karmaşık üstbilgiler ve altbilgiler, profesyonel belgeler için geliştirme süresini artıran özel konumlandırma mantığına ihtiyaç duyar.

Damgalama Yeteneği Karşılaştırması

Özellik IronPDF Aspose.PDF Geliştirici Deneyimi
HTML Üstbilgiler/Altbilgiler Yerel Yalnızca Metin IronPDF zengin formatlamaya olanak tanır
Dinamik İçerik Birleştirme alanları Elle Basitleştirilmiş değişken ikamesi
Toplu Damgalama Optimizasyon Standart döngü Büyük belgeler için 3 kat daha hızlı
Barkod Desteği HTML/JS Aracılığıyla Harici IronPDF barkod işleme içerir
Duyarlı Düzen CSS Flexbox Fixed Modern düzen teknikleri
Google Yazı Tipleri Doğrudan destek Sistem yalnızca Gelişmiş tipografi

Dosya Formatı Dönüşüm Özellikleri Nasıl Karşılaştırılır?

Belge formatları arasında dönüşüm yapmak, belge işleme iş akışlarında yaygın bir gereksinim temsil eder. Her bir kütüphanenin yerel kapasitesi, proje mimarisini önemli ölçüde etkiler.

IronPDF DOCX'ten PDF'e Dönüşüm

using IronPdf;

// Direct DOCX'ten PDF'ye conversion
DocxToPdfRenderer docxRenderer = new DocxToPdfRenderer();

// Simple conversion with default settings
PdfDocument pdf = docxRenderer.RenderDocxAsPdf("proposal.docx");
pdf.SaveAs("proposal.pdf");

// Advanced conversion with options
var renderOptions = new DocxPdfRenderOptions()
{
    // Maintain document formatting
    PreserveFormFields = true,
    ConvertBookmarks = true,
    ConvertHyperlinks = true,

    // Page setup
    PaperSize = IronPdf.Rendering.PdfPaperSize.Letter,
    MarginTop = 25,
    MarginBottom = 25,

    // Quality settings
    ImageQuality = 90,
    EnableJavaScript = false // Disable for static documents
};

// Batch conversion with progress tracking
var docxFiles = Directory.GetFiles("contracts/", "*.docx");
var conversionTasks = new List<Task<PdfDocument>>();

foreach (var docxFile in docxFiles)
{
    var task = Task.Run(() =>
    {
        var renderer = new DocxToPdfRenderer();
        return renderer.RenderDocxAsPdf(docxFile, renderOptions);
    });
    conversionTasks.Add(task);
}

// Await all conversions
var pdfDocuments = await Task.WhenAll(conversionTasks);

// Merge into single PDF
var mergedPdf = PdfDocument.Merge(pdfDocuments);
mergedPdf.SaveAs("all-contracts.pdf");

// Convert with embedded resources
var complexDocx = docxRenderer.RenderDocxAsPdf("report-with-images.docx");
complexDocx.CompressImages(80); // Optimize file size
complexDocx.SaveAs("compressed-report.pdf");
using IronPdf;

// Direct DOCX'ten PDF'ye conversion
DocxToPdfRenderer docxRenderer = new DocxToPdfRenderer();

// Simple conversion with default settings
PdfDocument pdf = docxRenderer.RenderDocxAsPdf("proposal.docx");
pdf.SaveAs("proposal.pdf");

// Advanced conversion with options
var renderOptions = new DocxPdfRenderOptions()
{
    // Maintain document formatting
    PreserveFormFields = true,
    ConvertBookmarks = true,
    ConvertHyperlinks = true,

    // Page setup
    PaperSize = IronPdf.Rendering.PdfPaperSize.Letter,
    MarginTop = 25,
    MarginBottom = 25,

    // Quality settings
    ImageQuality = 90,
    EnableJavaScript = false // Disable for static documents
};

// Batch conversion with progress tracking
var docxFiles = Directory.GetFiles("contracts/", "*.docx");
var conversionTasks = new List<Task<PdfDocument>>();

foreach (var docxFile in docxFiles)
{
    var task = Task.Run(() =>
    {
        var renderer = new DocxToPdfRenderer();
        return renderer.RenderDocxAsPdf(docxFile, renderOptions);
    });
    conversionTasks.Add(task);
}

// Await all conversions
var pdfDocuments = await Task.WhenAll(conversionTasks);

// Merge into single PDF
var mergedPdf = PdfDocument.Merge(pdfDocuments);
mergedPdf.SaveAs("all-contracts.pdf");

// Convert with embedded resources
var complexDocx = docxRenderer.RenderDocxAsPdf("report-with-images.docx");
complexDocx.CompressImages(80); // Optimize file size
complexDocx.SaveAs("compressed-report.pdf");
Imports IronPdf
Imports System.IO
Imports System.Threading.Tasks
Imports System.Collections.Generic

' Direct DOCX to PDF conversion
Dim docxRenderer As New DocxToPdfRenderer()

' Simple conversion with default settings
Dim pdf As PdfDocument = docxRenderer.RenderDocxAsPdf("proposal.docx")
pdf.SaveAs("proposal.pdf")

' Advanced conversion with options
Dim renderOptions As New DocxPdfRenderOptions() With {
    .PreserveFormFields = True,
    .ConvertBookmarks = True,
    .ConvertHyperlinks = True,
    .PaperSize = IronPdf.Rendering.PdfPaperSize.Letter,
    .MarginTop = 25,
    .MarginBottom = 25,
    .ImageQuality = 90,
    .EnableJavaScript = False
}

' Batch conversion with progress tracking
Dim docxFiles As String() = Directory.GetFiles("contracts/", "*.docx")
Dim conversionTasks As New List(Of Task(Of PdfDocument))()

For Each docxFile As String In docxFiles
    Dim task As Task(Of PdfDocument) = Task.Run(Function()
                                                    Dim renderer As New DocxToPdfRenderer()
                                                    Return renderer.RenderDocxAsPdf(docxFile, renderOptions)
                                                End Function)
    conversionTasks.Add(task)
Next

' Await all conversions
Dim pdfDocuments As PdfDocument() = Await Task.WhenAll(conversionTasks)

' Merge into single PDF
Dim mergedPdf As PdfDocument = PdfDocument.Merge(pdfDocuments)
mergedPdf.SaveAs("all-contracts.pdf")

' Convert with embedded resources
Dim complexDocx As PdfDocument = docxRenderer.RenderDocxAsPdf("report-with-images.docx")
complexDocx.CompressImages(80) ' Optimize file size
complexDocx.SaveAs("compressed-report.pdf")
$vbLabelText   $csharpLabel

IronPDF, yerel DOCX desteğini, harici bağımlılıkları ortadan kaldırarak DocxToPdfRenderer sınıfı aracılığıyla içerir. Dönüşüm, formatlamayı, görselleri, tabloları ve belge yapısını korur. DOCX dönüşüm belgeleri, posta birleştirme ve şablon işleme dahil gelişmiş senaryoları kapsar.

Aspose.PDF Dosya Dönüşüm Yaklaşımı

using Aspose.Words; // Required additional package
using Aspose.Words.Saving;
using Aspose.Pdf;

// DOCX conversion requires Aspose.Words
Document wordDoc = new Document("proposal.docx");

// Convert to PDF via Aspose.Words
MemoryStream pdfStream = new MemoryStream();
wordDoc.Save(pdfStream, SaveFormat.Pdf);

// Load into Aspose.PDF for further processing
Aspose.Pdf.Document pdfDoc = new Aspose.Pdf.Document(pdfStream);

// Now can use Aspose.PDF features
pdfDoc.Encrypt("user", "owner", 
    Aspose.Pdf.Permissions.PrintDocument, 
    Aspose.Pdf.CryptoAlgorithm.AESx256);

pdfDoc.Save("encrypted-proposal.pdf");

// Excel conversion requires Aspose.Cells
// PowerPoint requires Aspose.Slides
// Each format needs separate license and API

// PDF to other formats
var pdfConverter = new Aspose.Pdf.Document("input.pdf");

// Convert to Word (limited fidelity)
DocSaveOptions saveOptions = new DocSaveOptions()
{
    Format = DocSaveOptions.DocFormat.DocX,
    Mode = DocSaveOptions.RecognitionMode.Flow
};
pdfConverter.Save("output.docx", saveOptions);

// Convert to HTML
HtmlSaveOptions htmlOptions = new HtmlSaveOptions()
{
    SplitIntoPages = true,
    SplitCssIntoPages = false,
    CustomCssSavingStrategy = new HtmlSaveOptions.CssSavingStrategy(CssSavingStrategy)
};
pdfConverter.Save("output.html", htmlOptions);
using Aspose.Words; // Required additional package
using Aspose.Words.Saving;
using Aspose.Pdf;

// DOCX conversion requires Aspose.Words
Document wordDoc = new Document("proposal.docx");

// Convert to PDF via Aspose.Words
MemoryStream pdfStream = new MemoryStream();
wordDoc.Save(pdfStream, SaveFormat.Pdf);

// Load into Aspose.PDF for further processing
Aspose.Pdf.Document pdfDoc = new Aspose.Pdf.Document(pdfStream);

// Now can use Aspose.PDF features
pdfDoc.Encrypt("user", "owner", 
    Aspose.Pdf.Permissions.PrintDocument, 
    Aspose.Pdf.CryptoAlgorithm.AESx256);

pdfDoc.Save("encrypted-proposal.pdf");

// Excel conversion requires Aspose.Cells
// PowerPoint requires Aspose.Slides
// Each format needs separate license and API

// PDF to other formats
var pdfConverter = new Aspose.Pdf.Document("input.pdf");

// Convert to Word (limited fidelity)
DocSaveOptions saveOptions = new DocSaveOptions()
{
    Format = DocSaveOptions.DocFormat.DocX,
    Mode = DocSaveOptions.RecognitionMode.Flow
};
pdfConverter.Save("output.docx", saveOptions);

// Convert to HTML
HtmlSaveOptions htmlOptions = new HtmlSaveOptions()
{
    SplitIntoPages = true,
    SplitCssIntoPages = false,
    CustomCssSavingStrategy = new HtmlSaveOptions.CssSavingStrategy(CssSavingStrategy)
};
pdfConverter.Save("output.html", htmlOptions);
Imports Aspose.Words ' Required additional package
Imports Aspose.Words.Saving
Imports Aspose.Pdf

' DOCX conversion requires Aspose.Words
Private wordDoc As New Document("proposal.docx")

' Convert to PDF via Aspose.Words
Private pdfStream As New MemoryStream()
wordDoc.Save(pdfStream, SaveFormat.Pdf)

' Load into Aspose.PDF for further processing
Dim pdfDoc As New Aspose.Pdf.Document(pdfStream)

' Now can use Aspose.PDF features
pdfDoc.Encrypt("user", "owner", Aspose.Pdf.Permissions.PrintDocument, Aspose.Pdf.CryptoAlgorithm.AESx256)

pdfDoc.Save("encrypted-proposal.pdf")

' Excel conversion requires Aspose.Cells
' PowerPoint requires Aspose.Slides
' Each format needs separate license and API

' PDF to other formats
Dim pdfConverter = New Aspose.Pdf.Document("input.pdf")

' Convert to Word (limited fidelity)
Dim saveOptions As New DocSaveOptions() With {
	.Format = DocSaveOptions.DocFormat.DocX,
	.Mode = DocSaveOptions.RecognitionMode.Flow
}
pdfConverter.Save("output.docx", saveOptions)

' Convert to HTML
Dim htmlOptions As New HtmlSaveOptions() With {
	.SplitIntoPages = True,
	.SplitCssIntoPages = False,
	.CustomCssSavingStrategy = New HtmlSaveOptions.CssSavingStrategy(CssSavingStrategy)
}
pdfConverter.Save("output.html", htmlOptions)
$vbLabelText   $csharpLabel

Aspose.PDF, DOCX dosyalarını doğrudan dönüştüremez, ek bir bağımlılık olarak Aspose.Words gerektirir. Bu mimari karar, lisans maliyetlerini ve API karmaşıklığını etkiler. Her bir belge formatı, kendi öğrenme ivmesiyle birlikte ayrı bir Aspose ürünü gerektirir.

Format Dönüşüm Karşılaştırması

Dönüşüm Türü IronPDF Aspose.PDF Maliyet Etkisi
DOCX → PDF Dahili Aspose.Words gerektirir Ek {{Aspose_words.small_business}}+
HTML → PDF Chrome motoru Temel destek Kalite farkı
PDF → Görseller Yerel Destekleniyor Her ikisi de iyi işler
Excel → PDF HTML aracılığıyla Aspose.Cells gerektirir Ek {{Aspose_words.small_business}}+
PDF → HTML Destekleniyor Destekleniyor Her ikisi de işlevsel
Markdown → PDF HTML aracılığıyla Desteklenmiyor IronPDF daha esnek

Stack Overflow tartışmaları sıkça Aspose'nin modüler yaklaşımının maliyet etkilerini, IronPDF'nin entegre işlevselliğine karşı vurgular.

Lisanslama ve Fiyatlandırma Farklılıkları Nelerdir?

Sahip olmanın toplam maliyetini anlamak, teknoloji kararlarını bilgilendirmeye yardımcı olur. Her iki kütüphane de uzun vadeli maliyetleri etkileyen farklı lisanslama modelleri sunar.

IronPDF Lisans Yapısı

IronPDF'nin lisanslaması, gizli maliyetler olmadan şeffaf, süresiz lisanslar sağlar:

  • Lite Lisans ($999): Tek geliştirici, tek proje dağıtımı

    • Küçük uygulamalar veya kanıt konseptleri için ideal
    • E-posta desteği ve güncellemeleri içerir
    • Tekrar eden ücretler olmadan süresiz lisans
  • Plus Lisans ($1,499): Üç geliştirici, üç proje

    • 48 saat sohbet desteği ve telefon yardımı
    • Küçük ekip geliştirme için uygun
    • KOBİ uygulamaları için popüler bir seçim
  • Profesyonel Lisans ($2,999): On geliştirici, on proje

    • Ekran paylaşımı ile öncelikli destek
    • Daha büyük ekipler için kurumsal hazır
    • Sınırsız geliştirme ve test
  • Sınırsız Lisans ($5,999): Sınırsız geliştirici ve proje

    • Tam organizasyonel kapsama alanı
    • Özel destek kanalı
    • Büyük işletmeler için ideal

Ek seçenekler değeri artırır:

  • Telif Ücretsiz Yeniden Dağıtım (+$2,999): IronPDF'yi ticari ürünlerde paketleyin
  • Kesintisiz Destek ($999/yıl veya $1.999/5 yıl): Kesintisiz güncellemeler ve öncelikli yardım
  • Iron Suite ($2,998): Dokuz Iron Software ürünü iki üründen oluşan fiyatla

Aspose.PDF Lisans Yapısı

Aspose.PDF fiyatlandırması farklı bir modele göre gider (Nisan 2026 fiyatları, güncel fiyatlandırmayı kontrol edin çünkü oranlar sık sık değişir):

  • Geliştirici Küçük İşletme (yıllık {{Aspose_pdf.small_business}}/yıl'dan başlayarak): Tek geliştirici, bir konum

    • Temel forum desteği dahil
    • Telefon veya öncelikli destek yok
    • Güncellemeler için tekrar eden ücretler
  • Geliştirici OEM ($5.037): Tek geliştirici, sınırsız konum

    • Dağıtılmış yazılım için uygun
    • Temel lisansın 3 katı maliyet
    • Hâlâ tek geliştirici ile sınırlı
  • Geliştirici SDK'sı ($33.580): Tek geliştirici, 50 dağıtım

    • SDK senaryoları için son derece yüksek maliyet
    • Sınırlı dağıtım sayısı
    • Dikkatli dağıtım takibi gerektirir

Ek maliyetler hızla birikir:

  • Ücretli Destek: $399/yıl'dan başlayan (temel seviye)
  • Danışmanlık: $5.999/ay'dan itibaren
  • Diğer Aspose Ürünleri: Words, Cells, Slides için ayrı lisanslar

Toplam Maliyet Analizi

PDF oluşturma, DOCX dönüştürme ve Excel raporlama gerektiren tipik bir enterprise senaryoyu düşünün:

Gereksinim IronPDF Çözümü Aspose Çözümü Maliyet Farkı
PDF Kitaplığı IronPDF Pro ($2,999) Aspose.PDF ($1,199) IronPDF daha yüksek
DOCX Desteği Dahil olanlar Aspose.Words ($1,199) +$1,199 for Aspose
Excel Desteği HTML/CSV Üzerinden Aspose.Cells ($1,199) +$1,199 for Aspose
Toplam Maliyet $2,999 $5,037 Aspose %68 daha yüksek

Kapsamlı belge işleme için Iron Suite $2,998:

Bu, bireysel Aspose ürünleri satın almaya kıyasla olağanüstü bir değer sunar.

Dokümantasyon ve Destek Karşılaştırması Nasıl?

Geliştirici verimliliği büyük ölçüde dokümantasyon kalitesine ve destek mevcudiyetine bağlıdır. Her iki satıcı da bunlara farklı yaklaşıyor.

IronPDF Dokümantasyonu ve Kaynakları

IronPDF kapsamlı öğrenme kaynakları sunar:

Topluluk destek kanalları şunları içerir:

  • 24/5 Mühendislik Desteği: Geliştirme ekibine doğrudan erişim
  • Yanıt Süreleri: Çoğu soru için 24-48 saat
  • Ekran Paylaşımı: Professional lisanslar için mevcut
  • Topluluk: Aktif GitHub ve Stack Overflow varlığı

Aspose.PDF Dokümantasyonu ve Desteği

Aspose geleneksel dokümantasyon sunar:

  • API Dokümantasyonu: Kapsamlı ama yoğun
  • Kod Örnekleri: Temel senaryolar kapsanır
  • Forum Tabanlı Destek: Topluluk temelli yardım
  • Ücretli Destek Kademeleri: Öncelikli yardım için ek maliyet

Destek yaklaşımındaki temel farklar:

  • IronPDF, lisans maliyetine profesyonel destek dahil eder
  • Aspose, forum dışındaki destek için ayrı ücret alır
  • IronPDF doğrudan mühendislik teması sunar
  • Aspose daha çok topluluk forumlarına dayanır

Hangi PDF Kütüphanesi Seçilmelidir?

Geniş kapsamlı analiz sonrasında, çeşitli karar faktörleri ortaya çıkıyor:

IronPDF Seçmek Ne Zaman Uygundur

IronPDF şu durumlarda seçilmelidir:

  • Basitlik Önemli: Daha temiz API'ler geliştirme süresini azaltır
  • HTML Sadakati Kritik: Chrome motoru piksel mükemmelliğinde render sağlar
  • Bütçe Sabitse: Gizli maliyet olmadan her şey dahil lisanslama
  • DOCX Dönüştürme İhtiyacı: Dahili destek ek lisanslardan tasarruf sağlar
  • Çapraz Platform Gereksinimi: Ekstra paket olmadan yerel destek
  • Destek Önemli: Lisansa dahil profesyonel destek

Aspose.PDF Seçmek Ne Zaman Uygundur

Aspose.PDF şu durumlarda seçilmelidir:

  • Eski Sistemler: Mevcut Aspose ekosistem yatırımı
  • Karmaşık Form İşleme: İleri düzey XFA form desteği
  • Minimal HTML İhtiyaçları: Sadece temel PDF manipülasyonu
  • Bütçe Esnekliği: Birden fazla ürün lisansını karşılayabilme

Performans ve Ölçeklenebilirlik Dikkatleri

Performans değerlendirmeleri gösteriyor ki:

  • IronPDF: Daha iyi HTML render performansı, daha hızlı toplu işlemler
  • Aspose.PDF: Basit işlemler için daha düşük bellek kullanımı
  • IronPDF: Üstün threading ve async destek
  • Aspose.PDF: Temel metin çıkartmada daha hızlı

Geçiş Dikkatleri

Aspose.PDF'den IronPDF'ye geçiş şu adımları içerir:

// Aspose.PDF approach
Document doc = new Document();
Page page = doc.Pages.Add();
TextFragment text = new TextFragment("Hello");
page.Paragraphs.Add(text);

// Equivalent IronPDF (simpler)
var pdf = new ChromePdfRenderer().RenderHtmlAsPdf("<p>Hello</p>");
// Aspose.PDF approach
Document doc = new Document();
Page page = doc.Pages.Add();
TextFragment text = new TextFragment("Hello");
page.Paragraphs.Add(text);

// Equivalent IronPDF (simpler)
var pdf = new ChromePdfRenderer().RenderHtmlAsPdf("<p>Hello</p>");
' Aspose.PDF approach
Dim doc As New Document()
Dim page As Page = doc.Pages.Add()
Dim text As New TextFragment("Hello")
page.Paragraphs.Add(text)

' Equivalent IronPDF (simpler)
Dim pdf = (New ChromePdfRenderer()).RenderHtmlAsPdf("<p>Hello</p>")
$vbLabelText   $csharpLabel

Modern CSS Çerçeve Desteği

Web uygulamaları giderek daha fazla Bootstrap, Tailwind CSS ve Foundation gibi modern CSS frameworklerine bağımlı hale geldikçe, bu frameworklerin PDF belgelerinde doğru bir şekilde render edilme yeteneği essential hale geldi. Bu frameworkler, responsive yerleşimler için ağırlıklı olarak flexbox ve CSS Grid gibi CSS3 özelliklerine dayanır.

IronPDF: Tam Bootstrap Desteği

IronPDF'nın Chromium render motoru tüm modern CSS frameworkleri için kapsamlı destek sağlıyor:

  • Bootstrap 5: Responsive yerleşimler için tam flexbox ve CSS Grid desteği
  • Karmaşık yerleşimler: Bootstrap anasayfasını ve Bootstrap şablonlarını piksel mükemmelinde render eder
  • Modern özellikler: CSS3 animasyonlar, dönüşümler, geçişler ve medya sorguları
  • CSS frameworkleri: Bootstrap, Tailwind CSS, Foundation, Bulma sorunsuz çalışır

Kod Örneği: Bootstrap İçeriği Render Etme

using IronPdf;

// Render a Bootstrap 5 layout
var renderer = new ChromePdfRenderer();

// Example: Bootstrap pricing table with flexbox
string bootstrapHtml = @"
<!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 my-5'>
        <h1 class='text-center mb-5'>Pricing Plans</h1>
        <div class='row g-4'>
            <div class='col-lg-4'>
                <div class='card h-100 shadow-sm'>
                    <div class='card-header bg-primary text-white text-center py-4'>
                        <h4 class='my-0 fw-normal'>Starter</h4>
                    </div>
                    <div class='card-body d-flex flex-column'>
                        <h1 class='card-title pricing-card-title text-center'>$29<small class='text-muted fw-light'>/mo</small></h1>
                        <ul class='list-unstyled mt-3 mb-4 flex-grow-1'>
                            <li>✓ 10 users included</li>
                            <li>✓ 2 GB of storage</li>
                            <li>✓ Email support</li>
                        </ul>
                        <button type='button' class='btn btn-lg btn-outline-primary mt-auto'>Sign up</button>
                    </div>
                </div>
            </div>

        </div>
    </div>
</body>
</html>";

var pdf = renderer.RenderHtmlAsPdf(bootstrapHtml);
pdf.SaveAs("bootstrap-pricing.pdf");
using IronPdf;

// Render a Bootstrap 5 layout
var renderer = new ChromePdfRenderer();

// Example: Bootstrap pricing table with flexbox
string bootstrapHtml = @"
<!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 my-5'>
        <h1 class='text-center mb-5'>Pricing Plans</h1>
        <div class='row g-4'>
            <div class='col-lg-4'>
                <div class='card h-100 shadow-sm'>
                    <div class='card-header bg-primary text-white text-center py-4'>
                        <h4 class='my-0 fw-normal'>Starter</h4>
                    </div>
                    <div class='card-body d-flex flex-column'>
                        <h1 class='card-title pricing-card-title text-center'>$29<small class='text-muted fw-light'>/mo</small></h1>
                        <ul class='list-unstyled mt-3 mb-4 flex-grow-1'>
                            <li>✓ 10 users included</li>
                            <li>✓ 2 GB of storage</li>
                            <li>✓ Email support</li>
                        </ul>
                        <button type='button' class='btn btn-lg btn-outline-primary mt-auto'>Sign up</button>
                    </div>
                </div>
            </div>

        </div>
    </div>
</body>
</html>";

var pdf = renderer.RenderHtmlAsPdf(bootstrapHtml);
pdf.SaveAs("bootstrap-pricing.pdf");
Imports IronPdf

' Render a Bootstrap 5 layout
Dim renderer As New ChromePdfRenderer()

' Example: Bootstrap pricing table with flexbox
Dim bootstrapHtml 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 my-5'>
        <h1 class='text-center mb-5'>Pricing Plans</h1>
        <div class='row g-4'>
            <div class='col-lg-4'>
                <div class='card h-100 shadow-sm'>
                    <div class='card-header bg-primary text-white text-center py-4'>
                        <h4 class='my-0 fw-normal'>Starter</h4>
                    </div>
                    <div class='card-body d-flex flex-column'>
                        <h1 class='card-title pricing-card-title text-center'>$29<small class='text-muted fw-light'>/mo</small></h1>
                        <ul class='list-unstyled mt-3 mb-4 flex-grow-1'>
                            <li>✓ 10 users included</li>
                            <li>✓ 2 GB of storage</li>
                            <li>✓ Email support</li>
                        </ul>
                        <button type='button' class='btn btn-lg btn-outline-primary mt-auto'>Sign up</button>
                    </div>
                </div>
            </div>

        </div>
    </div>
</body>
</html>"

Dim pdf = renderer.RenderHtmlAsPdf(bootstrapHtml)
pdf.SaveAs("bootstrap-pricing.pdf")
$vbLabelText   $csharpLabel

Aspose.PDF: Sınırlı Bootstrap Desteği

Aspose.PDF, modern CSS frameworklerinde belgelendirilmiş sınırlamalarla özel bir HTML render motoru kullanır:

  • Flexbox sınırlamaları: Aspose forumlarında belirtildiği üzere, flexbox desteği sınırlı veya yok
  • CSS Grid: Modern grid yerleşimleri doğru render edilmeyebilir
  • Geçici çözümler gerekli: Uyumluluk için tablo tabanlı yerleşimler veya Bootstrap 3 kullanın
  • Karmaşık yerleşimler: Bootstrap 4+ özellikleri önemli ayarlamalar gerektirebilir

Aspose'in kendi dökümantasyonuna göre, geliştiriciler modern web frameworklerini render ederken, özellikle flexbox ve CSS Grid'e dayalı yerleşimler kullanılırken sık sık sorunlarla karşılaşıyor. Bu sınırlama, modern web uygulamalarını veya modern CSS frameworklerini kullanan pazarlama materyallerini render etmeye çalışırken özellikle belirgin hale gelir.

CSS framework uyumluluğu hakkında daha fazla ayrıntı için bkz. Bootstrap & Flexbox CSS Rehberi.

Sonuç

Hem .NET hem de Aspose.PDF, .NET PDF manipülasyon pazarına hizmet verir, ancak farklı felsefeler ile. .NET, sezgisel API'ler, kapsamlı dahili özellikler ve şeffaf fiyatlandırma ile geliştirici deneyimini önceliklendirir. Yerel DOCX desteği, üstün HTML render ve dahil profesyonel destek cazip bir değer yaratır.

Aspose.PDF geniş kapsamlı yetenekler sunar, ancak tam doküman işleme için birden fazla ürün gerektirir, bu da toplam maliyeti önemli ölçüde artırır. Belirli bir enterprise senaryolar için uygun olsa da, karmaşıklık ve lisans modeli daha küçük ekipleri etkileyebilir.

Çoğu .NET geliştirme ekibi için .NET, özellikler, performans ve değer arasında en uygun dengeyi sağlar. PDF, DOCX ve HTML dönüşümlerini tek bir kütüphanede ele alabilme yeteneği, profesyonel destek ve süresiz lisanslama ile birleştiğinde, modern uygulamalar için pratik bir seçim yapar.

Farkı yaşamaya hazır mısınız? Ücretsiz 30 günlük deneme ile başlayın IronPDF'nin özelliklerini ortamınızda değerlendirmek için. Mevcut projeler için, NuGet üzerinden IronPDF indirin ve PDF işleme iş akışınızı bugün dönüştürün.

Lütfen dikkate alınAspose kendi sahibinin tescilli markasıdır. Bu site, Aspose ile ilişkili, onaylanmış veya desteklenmiş değildir. Tüm ürün adları, logolar ve markalar kendi sahiplerine aittir. Karşılaştırmalar, yalnızca bilgilendirme amaçlıdır ve yazı sırasında halka açık bilgilerle alakalı olarak yansıtılmaktadır.

Sıkça Sorulan Sorular

HTML'yi C# içerisinde PDF'ye nasıl dönüştürebilirim?

IronPDF'nin RenderHtmlAsPdf yöntemini kullanarak HTML dizgilerini PDF'lere dönüştürebilirsiniz. Bu yöntem CSS3, JavaScript ve web yazı tiplerini destekleyerek yüksek sadakatli bir yazdırma sağlar.

IronPDF'yi çapraz platform PDF oluşturma için kullanmanın avantajları nelerdir?

IronPDF, ek paketler gerektirmeden Windows, Linux, macOS, Docker ve bulut ortamlarda yerel uyumluluk sunarak çapraz platform PDF oluşturma için çok yönlü bir seçenek sunar.

IronPDF, PDF'ler için şifreleme ve güvenliği nasıl handle eder?

IronPDF, belgesi güvenliğini artırmak için 15'ten fazla izin seçeneği desteğiyle şifrelemeyi ve detaylı izin kontrolünü sağlamlaştırmak için birleşik bir SecuritySettings sınıfı kullanır.

IronPDF geliştiriciler için ne tür destek sunar?

IronPDF, tüm lisanslarla birlikte 24/5 profesyonel mühendislik desteği içeren e-posta, sohbet ve ekran paylaşımı yardımı sunar. Bu, geliştiricilerin uygulama zorlukları için zamanında yardım almalarını sağlar.

IronPDF kullanarak DOCX dosyalarını PDF'ye dönüştürebilir miyim?

Evet, IronPDF DocxToPdfRenderer sınıfı aracılığıyla DOCX'ten PDF'ye dönüştürmeyi destekler ve belge biçimlendirmesini ve yapısını sorunsuz bir şekilde sürdürülebilir.

HTML'den PDF'ye dönüştürmede IronPDF ve Aspose.PDF arasındaki bazı temel farklar nelerdir?

IronPDF, HTML'den PDF'ye dönüştürme için tam bir Chrome render motoru kullanarak %98'den fazla tarayıcı uyumluluğu sunar. Oysa, Aspose.PDF modern web standartları için daha sınırlı desteğe sahip özel bir HTML ayrıştırıcıya dayanır.

IronPDF, PDF içerik gizlemeyi nasıl basitleştirir?

IronPDF, gerçek içerik kaldırma için regex desenlerini destekleyen ve uyumluluğu en az adımla sağlayan RedactTextOnAllPages gibi doğrudan yöntemler sunar.

PDF’lerde filigran kullanımı için IronPDF'yi kullanmanın avantajları nelerdir?

IronPDF, HTML/CSS tabanlı filigranları gradyanlar ve gölgeler de dahil olmak üzere akılda kalıcı sonuçlar için kapsamlı stil seçenekleri ile ApplyWatermark yöntemini kullanarak sağlar.

Jacob Mellor, Teknoloji Direktörü @ Team Iron
Teknoloji Direktörü

Jacob Mellor, Iron Software'de Baş Teknoloji Yöneticisidir ve C# PDF teknolojisinde öncü bir mühendisdir. Iron Software'ın ana kod tabanının ilk geliştiricisi olarak, CEO Cameron Rimington ile birlikte şirketin ürün mimarisini 50'den fazla kişilik bir şirkete dönüştürmüştür ...

Daha Fazla Oku
Aspose Logo

Yüksek fiyatlı yenilemelerden ve güncel olmayan ürün güncellemelerinden bıktınız mı?

Mühendislik geçiş desteğimizle ve daha iyi bir anlaşma ile Aspose üzerinden kolayca geçiş yapın.

IronPDF Logo

Iron Destek Ekibi

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