Iron Suite for .NET
10 .NET kütüphanesi. Tek bir tam belge suiti.
ABCpdf ve IronPDF Karşılaştırması: Teknik Kılavuz
.NET geliştiricileri PDF belgeleri oluşturma, değiştirme ve yönetme ihtiyacı duyduğunda, teknik değerlendirmelerde genellikle iki kütüphane öne çıkar: WebSupergoo'dan ABCpdf for .NET ve Iron Software'dan IronPDF. Her ikisi de C# uygulamalarında PDF belgeleri oluşturur, düzenler ve dönüştürür, ancak mimari, API tasarımı, lisanslama yaklaşımı ve platform desteği açısından farklılık gösterirler.
Bu karşılaştırma, profesyonel geliştiricilerin ve mimarların .NET PDF ihtiyaçları için bilinçli kararlar vermelerine yardımcı olmak amacıyla her iki kütüphaneyi teknik açıdan ilgili yönleriyle inceler.
ABCpdf for .NET'i Anlamak
ABCpdf for .NET, WebSupergoo tarafından geliştirilen uzun süredir var olan bir PDF kütüphanesidir. Kütüphane, geliştiricilerin tercih ettikleri HTML işleme motorunu seçmelerine olanak tanıyan birkaç HTML işleme motorunu (varsayılan olarak ABCChrome146 olan sürümlenmiş ABCChrome yapıları, Gecko, WebKit ve Windows'a yerleşik Internet Explorer bileşenlerini kullanan eski MSHtml/Trident motoru) destekler. Bu esneklik, ABCpdf'yi özellikle kurumsal Windows ortamlarında karmaşık PDF oluşturma görevleri için güçlü bir seçenek haline getirmiştir.
ABCpdf, merkezi Doc sınıfının bir PDF belgesini temsil eden üst düzey nesne olduğu belge merkezli bir API modeli kullanır ve çoğu PDF işlemi için ana giriş noktasıdır. Özel görevler, WebSupergoo.ABCpdf14.Operations ad alanındaki sınıflar gibi sınıflar tarafından ele alınır. Geliştiriciler bir Doc örneği oluşturur, seçenekleri yapılandırır, içerik ekler ve sonucu kaydeder.
IronPDF'i Anlamak
IronPDF, HTML'den PDF'ye dönüştürme, PDF manipülasyonu ve belge işleme yetenekleri sağlayan bir Chromium temeli üzerine inşa edilmiş bir .NET PDF kütüphanesidir. Kütüphane, işleme endişelerini belge manipülasyonundan ayırarak farklı sınıflar aracılığıyla ele alır: ChromePdfRenderer HTML'den PDF'ye dönüştürmeyi yönetirken, PdfDocument mevcut PDF işlemlerini yönetir.
IronPDF, HTML'yi paketlenmiş bir Chromium motoru ile işler ve kodda bir motor ayarı yoktur: standart IronPdf paketi Chromium 109'u, IronPdf.UpdatedChrome paketi ise Chromium 131'i içerir. Kaynak yönetimi için standart .NET IDisposable modelini destekler.
Mimari ve İşleme Motoru Karşılaştırması
Her iki kütüphane de artık varsayılan olarak bir Chromium tabanlı HTML motoru kullanıyor; mimari farklılıklar motor seçimi ve paketleme, nesne modeli ve platform desteğinde yatmaktadır.
| Yön | ABCpdf for .NET | IronPDF |
|---|---|---|
| İşleme Motorları | Yapılandırılabilir: ABCChrome (sürümlenmiş yapılar), Gecko, WebKit, MSHtml | Yalnızca Chromium, standart (Chromium 109) veya güncellenmiş (Chromium 131) çalışma zamanı paketi |
| Motor Yapılandırması | İsteğe bağlı: doc.HtmlOptions.Engine ile bir yapı sabitlenebilir | Paket tarafından seçilir (IronPdf veya IronPdf.UpdatedChrome); kodda motor ayarı yok |
| HTML/CSS Desteği | Seçilen motora bağlı | HTML, CSS ve JavaScript desteği paketlenmiş Chromium sürümüne bağlı |
| Nesne Modeli | Tek Doc sınıfı merkezi | Ayrı ChromePdfRenderer + PdfDocument |
| Nesne Yaşam Döngüsü | Doc, IDisposable uygular (using var doc = new Doc();); Clear() yeniden kullanım için sıfırlar | İşleme, bir PdfDocument döndürür |
| Çapraz Platform | Windows öncelikli; ABCpdf 13'ten beri Linux (x64, Ubuntu; HTML dönüştürme ABCpdf.ABCChrome146.Linux paketini gerektirir); macOS listelenmemiş | Yerel Windows, Linux, macOS, Docker |
ABCpdf, geliştiricilerin belirli bir işleme motorunu sabitlemesine olanak tanır. Mevcut varsayılanın dışındaki motorlar ana ABCpdf NuGet paketinde yer almaz: tam MSI yükleyicisinden veya ayrı NuGet paketlerinden gelirler (MSHtml, Windows'a yerleşik Internet Explorer bileşenlerini kullanır). IronPDF, bir motor ailesine sahiptir, Chromium, ve sürüm yüklediğiniz paketten gelir: platform paketleri (Windows'ta IronPdf, IronPdf.Linux, IronPdf.MacOs) kendi Chromium çalışma zamanlarını getirir ve Windows'ta standart IronPdf paketi (Chromium 109, eski Windows Sunucuları için tutulur) IronPdf.UpdatedChrome (Chromium 131) ile değiştirilebilir. Güncellenmiş paket, subgrid gibi daha yeni CSS'leri doğru şekilde işler ancak 32-bit işlemleri, Windows Server 2012 veya SingleProcess modunu desteklemez, bu nedenle ekipler hala bir paket seçer ve şablonlarını buna göre test eder.
API Tasarımı ve Kod Kalıpları
API tasarım felsefesi bu kütüphaneler arasında önemli ölçüde farklılık gösterir. ABCpdf, çoğu işlemi Doc sınıfında yoğunlaştırırken, IronPDF işleme ve belge manipülasyonunu ayırır.
URL'den PDF'ye Dönüştürme
ABCpdf for .NET:
// NuGet: Install-Package ABCpdf
using System;
using WebSupergoo.ABCpdf14;
using WebSupergoo.ABCpdf14.Objects;
class Program
{
static void Main()
{
using var doc = new Doc();
doc.HtmlOptions.Engine = EngineType.Chrome146; // optional: this is the default
// AddImageUrl draws the first page only; AddImageToChain adds each following page
int id = doc.AddImageUrl("https://www.example.com");
while (doc.Chainable(id))
{
doc.Page = doc.AddPage();
id = doc.AddImageToChain(id);
}
doc.Save("output.pdf");
}
}
IronPDF:
// NuGet: Install-Package IronPdf
using System;
using IronPdf;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
using var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
pdf.SaveAs("output.pdf");
}
}
Ekstra satırları açıklayan bir davranış farkı vardır: AddImageUrl(), işlenen sonucun yalnızca ilk sayfasını çizer ve döngü, WebSupergoo'nun belgelerinde gösterildiği gibi AddImageToChain() zincirleyerek daha fazla sayfa ekler. RenderUrlAsPdf(), tüm belgeyi tek bir çağrıda sayfalar.
Daha fazla URL'den PDF'ye seçenekleri için URL'den PDF'ye belgeleri keşfedin.
HTML Dizesinden PDF'ye Dönüştürme
ABCpdf for .NET:
// NuGet: Install-Package ABCpdf
using System;
using WebSupergoo.ABCpdf14;
using WebSupergoo.ABCpdf14.Objects;
class Program
{
static void Main()
{
string html = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>";
using var doc = new Doc();
doc.HtmlOptions.Engine = EngineType.Chrome146; // optional: this is the default
// As with URLs, AddImageHtml draws the first page and AddImageToChain the rest
int id = doc.AddImageHtml(html);
while (doc.Chainable(id))
{
doc.Page = doc.AddPage();
id = doc.AddImageToChain(id);
}
doc.Save("output.pdf");
}
}
IronPDF:
// NuGet: Install-Package IronPdf
using System;
using IronPdf;
class Program
{
static void Main()
{
string html = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>";
var renderer = new ChromePdfRenderer();
using var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}
Gelişmiş HTML işleme senaryoları için HTML dizesinden PDF'ye kılavuzunu inceleyin.
PDF Birleştirme İşlemleri
ABCpdf for .NET:
// NuGet: Install-Package ABCpdf
using System;
using WebSupergoo.ABCpdf14;
using WebSupergoo.ABCpdf14.Objects;
class Program
{
static void Main()
{
using var doc1 = new Doc();
doc1.Read("document1.pdf");
using var doc2 = new Doc();
doc2.Read("document2.pdf");
doc1.Append(doc2);
doc1.Save("merged.pdf");
}
}
IronPDF:
// NuGet: Install-Package IronPdf
using System;
using System.Collections.Generic;
using IronPdf;
class Program
{
static void Main()
{
using var pdf1 = PdfDocument.FromFile("document1.pdf");
using var pdf2 = PdfDocument.FromFile("document2.pdf");
using var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
}
}
Birleştirme semantiği farklıdır: doc1.Append(doc2), ikinci belgeyi birincinin sonuna eklerken, IronPDF'nin statik PdfDocument.Merge() yeni bir belge döndürür.
Ek birleştirme işlemlerini PDF birleştirme belgelerinde keşfedin.
Yöntem Eşleme Referansı
ABCpdf geçişini değerlendiren veya yetenekleri karşılaştıran geliştiriciler için bu eşleme, her iki kütüphane arasında en yakın karşılık gelen işlemleri gösterir:
Temel Belge İşlemleri
| İşlem | ABCpdf Yöntemi | IronPDF Yöntemi |
|---|---|---|
| Giriş nesnesi oluştur | new Doc() (bir PDF belgesi) | new ChromePdfRenderer() (bir işleyici) |
| HTML'den PDF'ye | doc.AddImageHtml(html) (ilk sayfa; daha fazlası için AddImageToChain()) | renderer.RenderHtmlAsPdf(html) |
| URL'den PDF'ye | doc.AddImageUrl(url) (ilk sayfa; daha fazlası için AddImageToChain()) | renderer.RenderUrlAsPdf(url) |
| Mevcut PDF'yi yükle | doc.Read(path) | PdfDocument.FromFile(path) |
| PDF'yi kaydet | doc.Save(path) | pdf.SaveAs(path) |
| Baytları al | doc.GetData() | pdf.BinaryData |
| PDF'leri birleştir | doc.Append(doc2) | PdfDocument.Merge(pdf1, pdf2) |
| Sayfa sayısı | doc.PageCount | pdf.PageCount |
| Metni çıkar | doc.GetText("Text") (mevcut sayfa; tüm sayfalar için doc.PageNumber döngüsü) | pdf.ExtractAllText() |
| Filigran ekle | doc.PageNumber + doc.AddText() ile sayfaları döngüle | pdf.ApplyWatermark(html) |
| Sahip parolası ayarla | doc.Encryption.OwnerPassword | pdf.SecuritySettings.OwnerPassword |
| Kullanıcı parolası ayarla | doc.Encryption.Password | pdf.SecuritySettings.UserPassword |
Yapılandırma Seçenekleri
| ABCpdf Ayarı | IronPDF Eşdeğeri |
|---|---|
doc.HtmlOptions.Engine = EngineType.Chrome146 | Chromium sürümü paket tarafından ayarlanır (IronPdf veya IronPdf.UpdatedChrome) |
doc.MediaBox.String = "A4"; doc.Rect.String = doc.MediaBox.String; | RenderingOptions.PaperSize = PdfPaperSize.A4 |
doc.MediaBox.String = "Letter" (varsayılan) | RenderingOptions.PaperSize = PdfPaperSize.Letter |
doc.Rect.Inset(x, y) | RenderingOptions.MarginTop/Bottom/Left/Right |
doc.HtmlOptions.BrowserWidth | RenderingOptions.PaperFit.UseResponsiveCssRendering(width) |
doc.HtmlOptions.Timeout (milisaniye) | RenderingOptions.Timeout (saniye) |
doc.HtmlOptions.UseScript | RenderingOptions.EnableJavaScript |
Ana Teknik Farklılıklar
Nesne Yaşam Döngüsü Kalıpları
ABCpdf'nin Doc sınıfı IDisposable uygular ve WebSupergoo'nun kendi örneklerinin çoğu, otomatik olarak bertaraf edilmesi için bir using bildirimi ile oluşturulur. Doc ayrıca kaynakları serbest bırakan ve belgeyi yeni oluşturulmuş bir duruma döndüren Clear() sunar, böylece bir Doc'u birkaç belge için yeniden kullanan kodlar için.
// NuGet: Install-Package ABCpdf
using WebSupergoo.ABCpdf14;
public static class AbcPdfExample
{
// Returns the rendered PDF as bytes; the Doc is disposed automatically by 'using'
public static byte[] RenderHtml(string html)
{
using var doc = new Doc();
int id = doc.AddImageHtml(html);
while (doc.Chainable(id))
{
doc.Page = doc.AddPage();
id = doc.AddImageToChain(id);
}
return doc.GetData();
}
}
IronPDF, iki rolü ayırır: işleyici bir PdfDocument üretir ve bu, doğrudan bir using ifadesine yerleştirilir:
// NuGet: Install-Package IronPdf
using IronPdf;
public static class IronPdfExample
{
// Returns the rendered PDF as bytes; the PdfDocument is disposed automatically by 'using'
public static byte[] RenderHtml(string html)
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.MarginTop = 20; // millimetres
renderer.RenderingOptions.MarginBottom = 20;
renderer.RenderingOptions.MarginLeft = 20;
renderer.RenderingOptions.MarginRight = 20;
using var pdf = renderer.RenderHtmlAsPdf(html);
return pdf.BinaryData;
}
}
Her iki örnek de kendi kodunuzdan çağrılacak yöntemlerdir, tam programlar değil.
Sayfa İndeksleme Konvansiyonları
ABCpdf, 1 tabanlı sayfa numaralandırması kullanır (doc.PageNumber = 1 ilk sayfa için), IronPDF ise 0 tabanlı indeksleme kullanır (pdf.Pages[0] ilk sayfa için). Ayrıca, ABCpdf'nin doc.Page özelliği bir sayfa numarası yerine bir sayfa nesne kimliği tutar, bu nedenle sayfa manipülasyon kodunu taşırken doğru özelliği seçmek ve ofseti ayarlamak gerekir.
Koordinat Sistemleri
ABCpdf, varsayılan olarak doc.Rect aracılığıyla pozisyonları noktalarla ölçer (inç başına 72 nokta; Units özelliği milimetre gibi birimlere geçiş yapabilir) ve sayfa boyutu ayrı olarak doc.MediaBox aracılığıyla ayarlanır. IronPDF, sayfa kenar boşluklarını milimetre cinsinden RenderingOptions aracılığıyla ayarlar. Bu, ABCpdf kodu gibi doc.Rect.Inset(20, 20), çizim dikdörtgenini her iki tarafta 20 nokta (yaklaşık 7 mm) içe alır, IronPDF'de bireysel kenar boşluğu özelliklerine çevrilir.
Lisanslama ve Dağıtım Düşünceleri
Bu .NET PDF kütüphanelerinin lisanslama modelleri farklı şekilde yapılandırılmıştır:
| Yön | ABCpdf for .NET | IronPDF |
|---|---|---|
| Fiyatlandırma Modeli | Katmanlı, $329'dan $24,950'ye kadar katmana bağlı olarak | Geliştirici, konum ve proje sayısına göre katmanlı kalıcı lisanslar, $999 (Lite) ile $4,799 (Sınırsız) arasında yayınlanmıştır |
| Lisans Yapılandırması | Kod tabanlı: XSettings.InstallLicense("KEY") | Kod tabanlı: IronPdf.License.LicenseKey = "KEY" |
| Katman Karmaşıklığı | Özellikler sürüme (Standart veya Profesyonel) bağlıdır; lisans türü dağıtım kapsamına bağlıdır | Katmanlar geliştirici, konum ve proje sayısına göre ölçeklenir; yeniden dağıtım (OEM/SaaS) ve genel API (SDK) kullanımı ayrı lisanslanır |
ABCpdf'nin satın alma sayfası, Standart ($329) ve Profesyonel ($495) tek bilgisayar lisanslarını, Profesyonel Beş Lisans Paketi ($1,485), birleşik Profesyonel Yeniden Dağıtım veya Kurumsal Lisans ($4,950), Profesyonel Grup Lisansı ($24,950), üç aylık SaaS aboneliği ($265) ve isteğe bağlı bir emanet anlaşmasını listeler. Standart sürüm, 32-bit işlemlerle sınırlıdır ve 64-bit desteği Profesyonel sürümle başlar, bu nedenle ekipler dağıtım modellerine uygun sürümü ve lisans türünü eşleştirmeli ve bütçelendirmelidir.
IronPDF'nin fiyatı, yazılımın nasıl dağıtıldığına bağlı olarak da değişir, yalnızca geliştirici, konum ve proje sayısına değil. Temel lisanslar, kuruluşunuz içinde kullanımını kapsar; IronPDF'yi ticari yazılıma veya ücretli bir SaaS ürününe gömmek, lisanslama sayfasında listelenen telifsiz OEM yeniden dağıtım kapsamını gerektirir ve IronPDF'nin işlevselliğini diğer geliştiricilere genel bir API aracılığıyla sunan bir ürün, bir SDK lisansı gerektirir. ABCpdf gibi, IronPDF'nin lisans anahtarı uygulama başlangıcında kodda ayarlanır.
Çapraz Platform Desteği
ABCpdf, Windows öncelikli bir mimari ile tasarlanmıştır. Linux desteği ABCpdf 13'te geldi ve gerçektir, ancak bazı koşullarla birlikte gelir: yalnızca x64, desteklenen bir Ubuntu sürümü (22.04, 24.04 veya 26.04), HTML dönüştürme için ana kütüphanenin yanında ABCpdf.ABCChrome146.Linux paketi ve bir dizi özellik (aralarında XPS ve Office okuma modülleri, EMF içe ve dışa aktarma ve System.Drawing API'leri) Windows'a özgü kalır. WebSupergoo, Windows'u geliştirme platformu ve Windows veya Ubuntu Linux'u dağıtım hedefleri olarak belgeler; macOS desteklenen bir platform olarak listelenmemiştir.
IronPDF, Windows, Linux, macOS ve Docker ortamları için yerel çapraz platform desteği sağlar ve bu, çekirdek tasarımının bir parçasıdır. .NET 10, mevcut uzun vadeli destek sürümü olarak, bu, macOS'ta geliştiren veya ABCpdf'nin desteklediği Ubuntu x64 sürümleri dışındaki Linux dağıtımlarına dağıtan ekipler için önemlidir.
Dokümantasyon ve Geliştirici Deneyimi
ABCpdf'nin dokümantasyonu kapsamlı ve referans tamdır: bir sınıf, özellik ve yöntem başına bir sayfa ile bir API ağacı olarak düzenlenmiştir, çoğu C# örnekleriyle birlikte, HTML işleme, koordinatlar ve güvenlik gibi konularda çalışılmış örnekler ve kavram kılavuzları ile birlikte.
IronPDF, kapsamlı kod örnekleri ve mevcut dokümantasyon uygulamalarını takip eden bir HTML'den PDF'ye öğretici ile modern dokümantasyon sağlar. API referansı ayrıntılı yöntem dokümantasyonu sağlar.
Ekipler ABCpdf'den IronPDF'ye Geçmeyi Düşündüğünde
Ekipler, ABCpdf for .NET'ten IronPDF'ye geçmeyi düşündüğünde aşağıdaki faktörleri değerlendirebilir:
Daha Az Motor Ailesi: ABCpdf, birkaç motor ailesi sunar (sürümlenmiş ABCChrome yapıları, Gecko, WebKit ve MSHtml); IronPDF, standart ve güncellenmiş bir çalışma zamanı paketinde bir Chromium sunar. Ekipler hala bir paket seçer ve şablonlarını buna göre test eder, ancak test edilecek bir motor ailesi vardır.
Ayrılmış Endişeler: İşleme ve belge manipülasyonunun farklı nesnelerde yaşamasını tercih eden geliştiriciler, IronPDF'nin ChromePdfRenderer ve bertaraf edilebilir PdfDocument'ini, her ikisini de ele alan tek bir Doc nesnesine tercih eder.
Çapraz Platform Gereksinimleri: macOS'ta geliştiren veya ABCpdf'nin desteklediği Ubuntu x64 sürümleri dışındaki Linux dağıtımlarına dağıtan projeler, IronPDF'nin yerel çapraz platform tasarımından faydalanır.
Lisanslama Modeli: Sürüm ve işlem bitliğine göre değil, geliştirici, konum ve proje sayısına göre katmanlı yayınlanmış kalıcı fiyatlandırmayı tercih eden ekipler, IronPDF'nin modelini bütçelendirmeyi daha kolay bulabilir. Her iki satıcıda da, yazılımı dağıtmak veya bir SaaS ürününün parçası olarak sunmak ayrı lisanslanır.
Modern .NET ile Entegrasyon
Her iki kütüphane de mevcut .NET sürümlerini destekler. IronPDF, .NET Framework 4.6.2+, .NET Core 3.1+, ve .NET 5'ten .NET 10'a kadar destekler ve bu, .NET ekosistemi geliştikçe devam eden uyumluluk için konumlandırılmıştır.
IronPDF ayrıca RenderHtmlAsPdfAsync() gibi async işleme yöntemlerini ortaya çıkarır, oysa ABCpdf'nin Doc API'si tamamen senkronize çalışır. Senkronize, tek iş parçacıklı anlamına gelmez: WebSupergoo, ABCpdf'yi tamamen çok iş parçacıklı ve IIS gibi yüksek performanslı çok iş parçacıklı ortamlar için tasarlanmış olarak tanımlar, bu nedenle her iki kütüphane de belgeleri paralel olarak işleyebilir.
Sonuç
ABCpdf for .NET ve IronPDF, her ikisi de C# geliştiricileri için PDF oluşturma ve manipülasyon yetenekleri sağlar. ABCpdf, yapılandırılabilir işleme motorları ve .NET ekosisteminde uzun süredir var olan bir varlık sunar. IronPDF, tek bir yerleşik Chromium motoru, yerel çapraz platform desteği ve işleme ve belge nesneleri arasında net bir ayrım ile modern bir API tasarımı sunar.
Seçim, belirli proje gereksinimlerine bağlıdır: mevcut ABCpdf yatırımları, çapraz platform dağıtım ihtiyaçları, API tasarım tercihleri ve lisanslama, kararın içine giren faktörlerdir.
IronPDF'yi ücretsiz deneme ile değerlendirmeye başlayın ve tam belgeleri keşfederek belirli gereksinimleriniz için uygunluğunu değerlendirin.