HTML'den PDF'e Dönüşümde Yazı Tiplerini Yönetmek
EO.Pdf birkaç mimari zorluğı ortaya çıkarır ve bu zorluklar geliştirme ekiplerini alternatifleri değerlendirmeye sevk eder. Bu sorunları anlamak, göç stratejinizi planlamada esastır.
EO.Pdf Sorunları
-
Pakete dahil edilmiş Chromium Ayak İzi: EO.Pdf (güncel NuGet sürümü 26.1.34, Mart 2026), kendi Chromium bazlı renderlayıcısını taşır, bu da kurulum ayak izini, Chromium olmayan kütüphanelere göre artırır ve Docker görüntülerine ve CI/CD pipeline'larına yük ekler.
-
Eski Mimarisi Yükü: EO.Pdf'nin HTML'den PDF'ye dönüştürücüsü, proje bir Chromium bazlı render'a geçmeden önce gömülü bir Internet Explorer / Trident motoru üzerine inşa edilmiştir. Geçiş, sürümler arasında bazı API tuhaflıkları ve davranış farklılıkları bırakmıştır.
-
Windows'ta Yalnızca .NET Core: "Çok Platformlu" olarak pazarlanmasına rağmen, Essential Objects'ün kendi .NET Core belgeleri, EO.Pdf'nin yalnızca Windows'ta .NET Core 3.1+ ve .NET 5/6 desteklediğini belirtir — Linux ve macOS resmi olarak desteklenmez.
-
Statik Global Seçenekler: EO.Pdf'ın birincil HTML'den PDF'e giriş noktası, paylaşılan
HtmlToPdf.Optionsile statikHtmlToPdfsınıfıdır. Bu global durumu birden çok iş parçacığından değiştirmek güvenli değildir ve çok kiracılı web uygulamalarında gariptir. -
Ücretli Ticari Lisans: EO.Pdf, Tek, 3 Lisans Paketi, Kurumsal ve Kurumsal Plus seviyelerinde satılmaktadır (kalıcı ücretsiz seviye yok — sadece suyla işaretlenmiş 30 günlük deneme). Tam fiyatlar sipariş sayfasında görüntülenebilir.
Mimari̇ Karşılaştırma
| Aspekt | EO.Pdf | IronPDF |
|---|---|---|
| Renderlayıcı | Pakete dahil edilmiş Chromium (IE/Trident'ten geçiş yapıldı) | Gömülü Chromium |
| Eski Sorunlar | IE/Trident geçiş yükü | Başlangıçtan beri Chromium üzerinde inşa edilmiş |
| Platform Desteği | .NET Core üzerinde yalnızca Windows | Windows, Linux, macOS, Docker, Azure |
| Yapılandırma | Statik HtmlToPdf.Options (thread-safe değil) | Örnek tabanlı ChromePdfRenderer (thread-safe) |
| API Tasarımı | Karışık (HtmlToPdf statik + ACM nesne modeli) | Birleşik ChromePdfRenderer + HTML/CSS |
| Lisans modeli | Tek / 3-Lisans / Kurumsal / Kurumsal Plus (30 günlük deneme) | Geliştirici başına ticari; ücretsiz geliştirme denemesi |
| Modern .NET | .NET Framework + .NET Core 3.1+ (yalnızca Windows) | .NET Framework, .NET 6/7/8/9 çarpraz platform |
| Asenkron Destek | Sınırlı | Tam RenderHtmlAsPdfAsync / RenderUrlAsPdfAsync |
Kilit Göç Faydaları
- .NET Core / .NET 6+ üzerinde çok platformlu: Windows'a ek olarak Linux, macOS ve Docker üzerinde çalışır
- İş Parçacığı Güvenli Yapılandırma: Statik global yerine örnek tabanlı render seçenekleri
- Modern API: Tutarlı yöntem isimleri —
RenderHtmlAsPdf,RenderUrlAsPdf,PdfDocument.Merge - Tam Asenkron Destek: Kapsayıcı olmayan boru hatları için
RenderHtmlAsPdfAsyncveRenderUrlAsPdfAsync - Belgeleme: Geniş kapsamlı eğitimler, nasıl yapılır rehberleri ve aktif nesne referansı
Migration'a Ön Hazırlık
Ön Koşullar
Ortamınızın bu gereksinimleri karşıladığından emin olun:
- .NET Framework 4.6.2+ or .NET Core 3.1 / .NET 5-9
- Visual Studio 2019+ veya C# eklentisi ile VS Code
- NuGet Package Manager erişimi -IronPDF lisans anahtarı (ücretsiz deneme sürümü ironpdf.com adresinde mevcut)
EO.Pdf Kullanımını Denetleme
Çözüm dizininde bu komutları çalıştırarak tüm EO.Pdf referanslarını belirleyin:
# Find all EO.Pdf references
grep -r "EO.Pdf\|HtmlToPdf\|AcmRender\|PdfDocument" --include="*.cs" .
# Check NuGet packages
dotnet list package | grep -i "EO.Pdf"
Aranacak yaygın EO.Pdf ad alanları:
EO.Pdf- Çekirdek HTML'den PDF'eEO.Pdf.Acm- Gelişmiş İçerik Modeli (ACM)EO.Pdf.Contents- Düşük seviyeli içerik manipülasyonuEO.Pdf.Drawing- Grafik işlemleri
Çekirdek Desen Değişimini Anlama
EO.Pdf ve IronPDF arasındaki en önemli mimari fark, yapılandırma kapsamıdır. EO.Pdf tüm dönüşümleri etkileyen statik yöntemlerle küresel ayarlar kullanır—bu desen web uygulamalarında iş parçacığı güvenliği sorunlarına yol açar.IronPDF örnek tabanlı renderleyiciler ve yerel ayarlar kullanır, her dönüşümün izole olmasını sağlar.
Adım Adım Geçiş Süreci
1. Adım: NuGet Paketlerini Güncelleyin
EO.Pdf'yi kaldırın ve IronPDF'yi yükleyin:
# Remove EO.Pdf
dotnet remove package EO.Pdf
# Install IronPDF
dotnet add package IronPdf
Adım 2: Ad Alanı Referanslarını Güncelleyin
EO.Pdf ad alanlarınıIronPDF ile değiştirin:
// Remove these
using EO.Pdf;
using EO.Pdf.Acm;
// Add this
using IronPdf;Imports IronPdfAdım 3: Lisansı Yapılandırın
// Add at application startup (Program.cs or Startup.cs)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";' Add at application startup (Program.vb or Startup.vb)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"Tam API Geçiş Referansı
Temel Sınıf Eşlemeleri
| EO.Pdf Sınıfı | IronPDF Eşdeğeri |
|---|---|
HtmlToPdf | ChromePdfRenderer |
PdfDocument | PdfDocument |
HtmlToPdfOptions | ChromePdfRenderOptions |
AcmRender | Gerekli değil |
AcmText | HTML <span>, <p> |
AcmBlock | HTML <div> |
Metot Haritalama
| EO.Pdf Yöntemi | IronPDF Yöntemi |
|---|---|
HtmlToPdf.ConvertHtml(html, path) | renderer.RenderHtmlAsPdf(html) daha sonra SaveAs(path) |
HtmlToPdf.ConvertUrl(url, path) | renderer.RenderUrlAsPdf(url) daha sonra SaveAs(path) |
PdfDocument.Save(path) | pdf.SaveAs(path) |
new PdfDocument(path) | PdfDocument.FromFile(path) |
PdfDocument.Merge(doc1, doc2) (statik) | PdfDocument.Merge(doc1, doc2) (statik) |
Seçenekler Eşleme
| EO.Pdf Seçeneği | IronPDF RenderingOptions |
|---|---|
Options.PageSize = PdfPageSizes.A4 | PaperSize = PdfPaperSize.A4 |
Options.OutputArea (RectangleF) | MarginTop, MarginBottom, vb. |
Kod Göç Örnekleri
HTML'den PDF'ye Dönüşüm
Temel HTML'den PDF'ye dönüşüm, statik yöntemlerden örnek tabanlı renderlamaya geçişi gösterir.
EO.Pdf Uygulaması:
// NuGet: Install-Package EO.Pdf
using EO.Pdf;
using System;
class Program
{
static void Main()
{
string html = "<html><body><h1>Hello World</h1><p>This is a PDF generated from HTML.</p></body></html>";
HtmlToPdf.ConvertHtml(html, "output.pdf");
Console.WriteLine("PDF created successfully!");
}
}' NuGet: Install-Package EO.Pdf
Imports EO.Pdf
Imports System
Module Program
Sub Main()
Dim html As String = "<html><body><h1>Hello World</h1><p>This is a PDF generated from HTML.</p></body></html>"
HtmlToPdf.ConvertHtml(html, "output.pdf")
Console.WriteLine("PDF created successfully!")
End Sub
End ModuleIronPDF Uygulaması:
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
string html = "<html><body><h1>Hello World</h1><p>This is a PDF generated from HTML.</p></body></html>";
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
Console.WriteLine("PDF created successfully!");
}
}' NuGet: Install-Package IronPdf
Imports IronPdf
Imports System
Module Program
Sub Main()
Dim html As String = "<html><body><h1>Hello World</h1><p>This is a PDF generated from HTML.</p></body></html>"
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("output.pdf")
Console.WriteLine("PDF created successfully!")
End Sub
End ModuleIronPDF'in iki adımlı deseni (oluştur, ardından kaydet), kaydetmeden önce ek manipülasyon için PdfDocument nesnesine erişim sağlar. Daha fazla seçenek için, HTML'den PDF'e dokümantasyona bakın.
URL'den PDF'ye Dönüşüm
EO.Pdf Uygulaması:
// NuGet: Install-Package EO.Pdf
using EO.Pdf;
using System;
class Program
{
static void Main()
{
string url = "https://www.example.com";
HtmlToPdf.ConvertUrl(url, "webpage.pdf");
Console.WriteLine("PDF from URL created successfully!");
}
}' NuGet: Install-Package EO.Pdf
Imports EO.Pdf
Imports System
Module Program
Sub Main()
Dim url As String = "https://www.example.com"
HtmlToPdf.ConvertUrl(url, "webpage.pdf")
Console.WriteLine("PDF from URL created successfully!")
End Sub
End ModuleIronPDF Uygulaması:
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
string url = "https://www.example.com";
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf(url);
pdf.SaveAs("webpage.pdf");
Console.WriteLine("PDF from URL created successfully!");
}
}' NuGet: Install-Package IronPdf
Imports IronPdf
Imports System
Module Program
Sub Main()
Dim url As String = "https://www.example.com"
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderUrlAsPdf(url)
pdf.SaveAs("webpage.pdf")
Console.WriteLine("PDF from URL created successfully!")
End Sub
End ModuleIronPDF'in RenderUrlAsPdf, tam JavaScript yürütmesi ve modern CSS desteği sağlar. Daha fazla seçenek için, URL'den PDF'e dokümantas bakın.
Özel Ayarlarla HTML Dosyası
Bu örnek, yapılandırma desenlerindeki önemli farkı göstermektedir—EO.Pdf'ın inches ile olan OutputArea'si, İronPDF'in milimetre cinsinden bireysel kenar boşluğu özellikleri ile olan farkını.
EO.Pdf Uygulaması:
// NuGet: Install-Package EO.Pdf
using EO.Pdf;
using System;
class Program
{
static void Main()
{
HtmlToPdfOptions options = new HtmlToPdfOptions();
options.PageSize = PdfPageSizes.A4;
options.OutputArea = new RectangleF(0.5f, 0.5f, 7.5f, 10.5f);
HtmlToPdf.ConvertUrl("file:///C:/input.html", "output.pdf", options);
Console.WriteLine("PDF with custom settings created.");
}
}' NuGet: Install-Package EO.Pdf
Imports EO.Pdf
Imports System
Module Program
Sub Main()
Dim options As New HtmlToPdfOptions()
options.PageSize = PdfPageSizes.A4
options.OutputArea = New RectangleF(0.5F, 0.5F, 7.5F, 10.5F)
HtmlToPdf.ConvertUrl("file:///C:/input.html", "output.pdf", options)
Console.WriteLine("PDF with custom settings created.")
End Sub
End ModuleIronPDF Uygulaması:
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 20;
renderer.RenderingOptions.MarginBottom = 20;
renderer.RenderingOptions.MarginLeft = 20;
renderer.RenderingOptions.MarginRight = 20;
var pdf = renderer.RenderHtmlFileAsPdf("C:/input.html");
pdf.SaveAs("output.pdf");
Console.WriteLine("PDF with custom settings created.");
}
}' NuGet: Install-Package IronPdf
Imports IronPdf
Imports IronPdf.Rendering
Imports System
Module Program
Sub Main()
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
renderer.RenderingOptions.MarginTop = 20
renderer.RenderingOptions.MarginBottom = 20
renderer.RenderingOptions.MarginLeft = 20
renderer.RenderingOptions.MarginRight = 20
Dim pdf = renderer.RenderHtmlFileAsPdf("C:/input.html")
pdf.SaveAs("output.pdf")
Console.WriteLine("PDF with custom settings created.")
End Sub
End ModuleBirim dönüşümüne dikkat edin: EO.Pdf, OutputArea'de inç kullanırken,IronPDF milimetre kullanır. Dönüştürmek için kullanın: inches × 25.4 = mm. Daha fazla seçenek için işleme seçenekleri belgesine bakın.
Birden Fazla PDF'yi Birleştirme
Her iki kütüphane de belgeleri birleştirmek için statik PdfDocument.Merge ortaya çıkarıyor — EO.Pdf örnek Append yöntemi yok, bu nedenle doc.Append(other) kullanan herhangi bir kod geçersizdir ve Merge'e taşınması gereklidir.
EO.Pdf Uygulaması:
// NuGet: Install-Package EO.Pdf
using EO.Pdf;
using System;
class Program
{
static void Main()
{
PdfDocument doc1 = new PdfDocument("file1.pdf");
PdfDocument doc2 = new PdfDocument("file2.pdf");
// EO.Pdf has no Append; merge is a static method that returns a new PdfDocument.
PdfDocument mergedDoc = PdfDocument.Merge(doc1, doc2);
mergedDoc.Save("merged.pdf");
Console.WriteLine("PDFs merged successfully!");
}
}Imports EO.Pdf
Imports System
Module Program
Sub Main()
Dim doc1 As New PdfDocument("file1.pdf")
Dim doc2 As New PdfDocument("file2.pdf")
' EO.Pdf has no Append; merge is a static method that returns a new PdfDocument.
Dim mergedDoc As PdfDocument = PdfDocument.Merge(doc1, doc2)
mergedDoc.Save("merged.pdf")
Console.WriteLine("PDFs merged successfully!")
End Sub
End ModuleIronPDF Uygulaması:
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
var pdf1 = PdfDocument.FromFile("file1.pdf");
var pdf2 = PdfDocument.FromFile("file2.pdf");
var merged = PdfDocument.Merge(new List<PdfDocument> { pdf1, pdf2 });
merged.SaveAs("merged.pdf");
Console.WriteLine("PDFs merged successfully!");
}
}' NuGet: Install-Package IronPdf
Imports IronPdf
Imports System
Imports System.Collections.Generic
Module Program
Sub Main()
Dim pdf1 = PdfDocument.FromFile("file1.pdf")
Dim pdf2 = PdfDocument.FromFile("file2.pdf")
Dim merged = PdfDocument.Merge(New List(Of PdfDocument) From {pdf1, pdf2})
merged.SaveAs("merged.pdf")
Console.WriteLine("PDFs merged successfully!")
End Sub
End ModuleIronPDF'in statik Merge, belgelerin bir params listesini veya bir List<PdfDocument>'i kabul eder. Yapı oluşturucudan (new PdfDocument(path)) statik fabrikaya (PdfDocument.FromFile(path)) geçişe dikkat edin. Daha fazla seçenek için PDF birleştirme belgelerine bakın.
Kritik Taşıma Notları
Kenar Boşluğu Birimi Dönüşümü
EO.Pdf, OutputArea'de inç kullanır.IronPDF milimetre kullanır. Dönüştürmek için kullanın: inches × 25.4 = mm
// EO.Pdf - 0.5 inch margins
options.OutputArea = new RectangleF(0.5f, 0.5f, 7.5f, 10.5f);
//IronPDF- equivalent in millimeters (0.5" = 12.7mm)
renderer.RenderingOptions.MarginTop = 12.7;
renderer.RenderingOptions.MarginBottom = 12.7;
renderer.RenderingOptions.MarginLeft = 12.7;
renderer.RenderingOptions.MarginRight = 12.7;' EO.Pdf - 0.5 inch margins
options.OutputArea = New RectangleF(0.5F, 0.5F, 7.5F, 10.5F)
' IronPDF- equivalent in millimeters (0.5" = 12.7mm)
renderer.RenderingOptions.MarginTop = 12.7
renderer.RenderingOptions.MarginBottom = 12.7
renderer.RenderingOptions.MarginLeft = 12.7
renderer.RenderingOptions.MarginRight = 12.7Statikten Örnek Bazlı Yapılandırmaya
Tüm HtmlToPdf.Options.X'i renderer.RenderingOptions.X ile değiştirin:
// EO.Pdf - static options (NOT thread-safe!)
HtmlToPdf.Options.PageSize = PdfPageSizes.A4;
//IronPDF- instance options (thread-safe)
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;' EO.Pdf - static options (NOT thread-safe!)
HtmlToPdf.Options.PageSize = PdfPageSizes.A4
' IronPDF- instance options (thread-safe)
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4ACM'den HTML'e Geçiş
EO.Pdf'ın Gelişmiş İçerik Modelini (AcmRender, AcmText, AcmBlock) kullanıyorsanız, standart HTML/CSS'ye geçiş yapın:
// EO.Pdf ACM approach
var acmContent = new AcmContent();
acmContent.Add(new AcmText("Sample Text"));
//IronPDF HTML approach
var html = "<div>Sample Text</div>";
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
İki Aşamalı Kaydetme Deseni
EO.Pdf doğrudan ConvertHtml()'ye kaydeder.IronPDF bir PdfDocument nesnesi döndürür, ardından SaveAs() çağırırsınız:
// EO.Pdf - one step
HtmlToPdf.ConvertHtml(html, "output.pdf");
//IronPDF- two steps (enables manipulation before save)
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");' EO.Pdf - one step
HtmlToPdf.ConvertHtml(html, "output.pdf")
' IronPDF- two steps (enables manipulation before save)
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("output.pdf")Yapılandırıcıdan Statik Fabrikaya
new PdfDocument(path) ile PdfDocument.FromFile(path) değiştirin:
// EO.Pdf
var doc = new PdfDocument("file.pdf");
// IronPDF
var doc = PdfDocument.FromFile("file.pdf");' EO.Pdf
Dim doc = New PdfDocument("file.pdf")
' IronPDF
Dim doc = PdfDocument.FromFile("file.pdf")Taşınma Sonrası Kontrollistesi
Kod taşımasını tamamladıktan sonra, aşağıdakileri doğrulayın:
- Oluşturulan PDF'lerin görsel karşılaştırması
- Başlıklar/altbilgilerin doğru bir şekilde renderlandığını doğrulayın
- Güvenlik/şifreleme ayarlarını test edin
- Birleştirme işlemlerini doğrulayın
- Performans kıyaslaması
- Çok platformlu test (Windows, Linux, macOS)
- EO.Pdf lisans dosyalarını kaldırın
- Belgeleri güncelleyin
Ek Kaynaklar
EO.Pdf'den IronPDF'ye geçiş, eski IE/Trident dönemine ait yükü ve EO.Pdf'nin statik global seçeneklerinin iş parçacığı güvenliği endişelerini ele alır. Örneğe dayalı yapılandırmaya geçiş, PDF üretim kodunuzun eş zamanlı yük altında güvenilir bir şekilde çalışmasını garantilerken, IronPDF'nin çarpraz platform desteği dağıtımı Windows'un ötesine, Linux, macOS ve Docker'a genişletir.

Curtis Chau, Bilgisayar Bilimleri alanında Lisans Derecesine (Carleton Üniversitesi) sahip ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirmeyle ilgileniyor. Sezgisel ve estetik açıdan hoş kullanıcı arayüzleri oluşturma tutkunu, Curtis modern çerçevelerle çalışmayı ve iyi yapılandırılmış, görsel olarak çekici kılavuzlar oluşturmayı seviyor.