Haukcode.DinkToPdf'ten IronPDF'e Geçiş
Haukcode.DinkToPdf, bir zamanlar popüler olan DinkToPdf kütüphanesinin bir devamıdır ve .NET uygulamaları için HTML'yi PDF'e dönüştürmek için wkhtmltopdf çözümünü kullanır. Her ne kadar Haukcode.DinkToPdf, orijinal proje duraksadıktan sonra .NET Core ile uyum sağladıysa da, yukarı akış bağımlılığından kaynaklanan önemli güvenlik sorunlarını taşır. Wkhtmltopdf projesi Ocak 2023'te arşivlendi, bu nedenle bu sorunlar hiçbir zaman çözülemeyecek.
Bu kılavuz, profesyonel .NET geliştiricilerin PDF oluşturma iş akışlarındaki güvenlik risklerini kaldırmayı amaçlayan Haukcode.DinkToPdf'den IronPDF'e kapsamlı bir geçiş yolu sunar, adım adım talimatlar, kod karşılaştırmaları ve pratik örnekler içerir.
Kritik Güvenlik Uyarısı: CVE-2022-35583
Haukcode.DinkToPdf, wkhtmltopdf'den adreslenemeyen büyük bir güvenlik açığını devralır.
CVE-2022-35583 - Kritik SSRF Açığı (CVSS 9.8)
Wkhtmltopdf kütüphanesi (ve Haukcode.DinkToPdf dahil tüm sarmalayıcılar), Sunucu Tarafı İstek Sahtekarlığı (SSRF) saldırılarına açıktır.
Saldırı Vektörü: Kötü amaçlı HTML içeriği, sunucunun dahili kaynakları almasını sağlayabilir
- AWS Metadata Attack: AWS kimlik bilgilerini çalmak için
http://169.254.169.254'a erişebilir Dahili Ağ Erişimi: Dahili hizmetleri tarayabilir ve erişebilir - Local File Inclusion:
file://protokolü aracılığıyla yerel dosyaları okuyabilir Etkisi: Tüm altyapının ele geçirilmesi mümkün
Bu açığın bir düzeltmesi yoktur çünkü wkhtmltopdf 2023'te terk edildi ve arşivlendi. Son sürüm 2020'de 0.12.6 versiyonuydu.
IronPDF vs Haukcode.DinkToPdf: Özellik Karşılaştırması
Mimari farklılıkları anlamak, teknik karar vericilerin geçiş yatırımını değerlendirmesine yardımcı olur:
| Bağlam | Haukcode.DinkToPdf | IronPDF |
|---|---|---|
| Temel Motor | wkhtmltopdf (Qt WebKit ~2015) | Chromium (düzenli olarak güncelleniyor) |
| Güvenlik Durumu | CVE-2022-35583 (KRİTİK, düzeltilemez) | Aktif olarak yamalanıyor |
| Proje Durumu | Terk edilmiş projenin çatallanması | Aktif olarak geliştiriliyor |
| HTML5/CSS3 | Sınırlı | Desteklenir |
| JavaScript | Sınırlı, güvensiz | Tam V8 motor |
| Yerel İkili Dosyalar | Gerekli (platforma özgü) | Kendisi yeterli |
| İplik Güvenliği | Tekillik deseni gerekir | Tasarımı itibarıyla iplik güvenli |
| Destek | Sadece topluluk | Profesyonel destek |
| Güncellemeler | Beklenen yok | Düzenli sürümler |
| Lisans | MIT (Ücretsiz) | Ücretsiz deneme ile ticari |
Hızlı Başlangıç: Haukcode.DinkToPdf'den IronPDF'e Geçiş
Geçiş hemen bu temel adımlar ile başlatılabilir.
Adım 1: DinkToPdf ve Yerel Çözümlemeleri Kaldırma
Haukcode.DinkToPdf NuGet paketlerini kaldirin:
# Remove NuGet packages
dotnet remove package DinkToPdf
dotnet remove package Haukcode.DinkToPdf
dotnet remove package Haukcode.WkHtmlToPdf-DotNet
# Remove NuGet packages
dotnet remove package DinkToPdf
dotnet remove package Haukcode.DinkToPdf
dotnet remove package Haukcode.WkHtmlToPdf-DotNet
Projenizden yerel ikili dosyalari silin:
libwkhtmltox.dll(Windows)libwkhtmltox.so(Linux)libwkhtmltox.dylib(macOS)
Adım 2: IronPDF'i Kurun
# Install IronPDF
dotnet add package IronPdf
# Install IronPDF
dotnet add package IronPdf
Adım 3: Adalanları Güncelleyin
DinkToPdf ad alanlarini IronPdf ile değiştirin:
// Before (Haukcode.DinkToPdf)
using DinkToPdf;
using DinkToPdf.Contracts;
// After (IronPDF)
using IronPdf;
using IronPdf.Rendering; // For RenderingOptions
// Before (Haukcode.DinkToPdf)
using DinkToPdf;
using DinkToPdf.Contracts;
// After (IronPDF)
using IronPdf;
using IronPdf.Rendering; // For RenderingOptions
Imports IronPdf
Imports IronPdf.Rendering
Adim 4: Lisans Icin Yapisallastirma
Uygulama başlangıcında lisans başlatmasını ekleyin:
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
Kod Geçiş Örnekleri
Temel HTML'den PDF'ye Dönüşüm
En temel işlem, bu .NET PDF kutuphaneleri arasindaki karmasiklik farkini ortaya koyar.
Haukcode.DinkToPdf Yaklasimi:
// NuGet: Install-Package DinkToPdf
using DinkToPdf;
using DinkToPdf.Contracts;
using System.IO;
class Program
{
static void Main()
{
var converter = new SynchronizedConverter(new PdfTools());
var doc = new HtmlToPdfDocument()
{
GlobalSettings = {
ColorMode = ColorMode.Color,
Orientation = Orientation.Portrait,
PaperSize = PaperKind.A4,
},
Objects = {
new ObjectSettings() {
HtmlContent = "<html><body><h1>Hello World</h1></body></html>",
}
}
};
byte[] pdf = converter.Convert(doc);
File.WriteAllBytes("output.pdf", pdf);
}
}
// NuGet: Install-Package DinkToPdf
using DinkToPdf;
using DinkToPdf.Contracts;
using System.IO;
class Program
{
static void Main()
{
var converter = new SynchronizedConverter(new PdfTools());
var doc = new HtmlToPdfDocument()
{
GlobalSettings = {
ColorMode = ColorMode.Color,
Orientation = Orientation.Portrait,
PaperSize = PaperKind.A4,
},
Objects = {
new ObjectSettings() {
HtmlContent = "<html><body><h1>Hello World</h1></body></html>",
}
}
};
byte[] pdf = converter.Convert(doc);
File.WriteAllBytes("output.pdf", pdf);
}
}
Imports DinkToPdf
Imports DinkToPdf.Contracts
Imports System.IO
Module Program
Sub Main()
Dim converter = New SynchronizedConverter(New PdfTools())
Dim doc = New HtmlToPdfDocument() With {
.GlobalSettings = New GlobalSettings() With {
.ColorMode = ColorMode.Color,
.Orientation = Orientation.Portrait,
.PaperSize = PaperKind.A4
},
.Objects = New List(Of ObjectSettings) From {
New ObjectSettings() With {
.HtmlContent = "<html><body><h1>Hello World</h1></body></html>"
}
}
}
Dim pdf As Byte() = converter.Convert(doc)
File.WriteAllBytes("output.pdf", pdf)
End Sub
End Module
IronPDF Yaklaşımı:
// NuGet: Install-Package IronPdf
using IronPdf;
using System.IO;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<html><body><h1>Hello World</h1></body></html>");
pdf.SaveAs("output.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System.IO;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<html><body><h1>Hello World</h1></body></html>");
pdf.SaveAs("output.pdf");
}
}
Imports IronPdf
Imports System.IO
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("<html><body><h1>Hello World</h1></body></html>")
pdf.SaveAs("output.pdf")
End Sub
End Class
Haukcode.DinkToPdf, PdfTools ile bir SynchronizedConverter oluşturmayı, iç içe geçmiş GlobalSettings ve Objects ile bir HtmlToPdfDocument oluşturmayı, HtmlContent ile bir ObjectSettings eklemeyi, ham baytları almak için converter.Convert()'ı çağırmayı ve File.WriteAllBytes() ile dosyaya manuel olarak yazmayı gerektirir.
IronPDF, bunu üç satıra basitleştirir: bir ChromePdfRenderer oluşturun, RenderHtmlAsPdf()'ı çağırın ve yerleşik SaveAs() metodunu kullanın.
Gelişmiş HTML-PDF senaryoları için HTML'den PDF'e dönüştürme kılavuzuna bakın.
URL'leri PDF'ye Dönüştürme
URL'den PDF'ye donusumde benzer kalip farklari gorunur.
Haukcode.DinkToPdf Yaklasimi:
// NuGet: Install-Package DinkToPdf
using DinkToPdf;
using DinkToPdf.Contracts;
using System.IO;
class Program
{
static void Main()
{
var converter = new SynchronizedConverter(new PdfTools());
var doc = new HtmlToPdfDocument()
{
GlobalSettings = {
ColorMode = ColorMode.Color,
Orientation = Orientation.Portrait,
PaperSize = PaperKind.A4,
},
Objects = {
new ObjectSettings() {
Page = "https://www.example.com",
}
}
};
byte[] pdf = converter.Convert(doc);
File.WriteAllBytes("webpage.pdf", pdf);
}
}
// NuGet: Install-Package DinkToPdf
using DinkToPdf;
using DinkToPdf.Contracts;
using System.IO;
class Program
{
static void Main()
{
var converter = new SynchronizedConverter(new PdfTools());
var doc = new HtmlToPdfDocument()
{
GlobalSettings = {
ColorMode = ColorMode.Color,
Orientation = Orientation.Portrait,
PaperSize = PaperKind.A4,
},
Objects = {
new ObjectSettings() {
Page = "https://www.example.com",
}
}
};
byte[] pdf = converter.Convert(doc);
File.WriteAllBytes("webpage.pdf", pdf);
}
}
Imports DinkToPdf
Imports DinkToPdf.Contracts
Imports System.IO
Module Program
Sub Main()
Dim converter = New SynchronizedConverter(New PdfTools())
Dim doc = New HtmlToPdfDocument() With {
.GlobalSettings = New GlobalSettings() With {
.ColorMode = ColorMode.Color,
.Orientation = Orientation.Portrait,
.PaperSize = PaperKind.A4
},
.Objects = New List(Of ObjectSettings) From {
New ObjectSettings() With {
.Page = "https://www.example.com"
}
}
}
Dim pdf As Byte() = converter.Convert(doc)
File.WriteAllBytes("webpage.pdf", pdf)
End Sub
End Module
IronPDF Yaklaşımı:
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
pdf.SaveAs("webpage.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
pdf.SaveAs("webpage.pdf");
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderUrlAsPdf("https://www.example.com")
pdf.SaveAs("webpage.pdf")
End Sub
End Class
Haukcode.DinkToPdf, URL'ler için ObjectSettings.Page ile aynı belge yapım modelini kullanır. IronPDF, niyeti açıkça ifade eden özel bir RenderUrlAsPdf() yöntemi sağlar.
Kimlik doğrulama ve ozellestirilmis baslik seçenekleri icin URL'den PDF'ye dokümantasyonu kesfedin.
Ozellestirilmis Sayfa Ayarlari
Yonlendirme, kagit boyutu ve kenar boşluklarini ayarlamak baska yaklasimlar gerektirir.
Haukcode.DinkToPdf Yaklasimi:
// NuGet: Install-Package DinkToPdf
using DinkToPdf;
using DinkToPdf.Contracts;
using System.IO;
class Program
{
static void Main()
{
var converter = new SynchronizedConverter(new PdfTools());
var doc = new HtmlToPdfDocument()
{
GlobalSettings = {
ColorMode = ColorMode.Color,
Orientation = Orientation.Landscape,
PaperSize = PaperKind.Letter,
Margins = new MarginSettings() { Top = 10, Bottom = 10, Left = 10, Right = 10 }
},
Objects = {
new ObjectSettings() {
HtmlContent = "<html><body><h1>Landscape Document</h1><p>Custom page settings</p></body></html>",
}
}
};
byte[] pdf = converter.Convert(doc);
File.WriteAllBytes("landscape.pdf", pdf);
}
}
// NuGet: Install-Package DinkToPdf
using DinkToPdf;
using DinkToPdf.Contracts;
using System.IO;
class Program
{
static void Main()
{
var converter = new SynchronizedConverter(new PdfTools());
var doc = new HtmlToPdfDocument()
{
GlobalSettings = {
ColorMode = ColorMode.Color,
Orientation = Orientation.Landscape,
PaperSize = PaperKind.Letter,
Margins = new MarginSettings() { Top = 10, Bottom = 10, Left = 10, Right = 10 }
},
Objects = {
new ObjectSettings() {
HtmlContent = "<html><body><h1>Landscape Document</h1><p>Custom page settings</p></body></html>",
}
}
};
byte[] pdf = converter.Convert(doc);
File.WriteAllBytes("landscape.pdf", pdf);
}
}
Imports DinkToPdf
Imports DinkToPdf.Contracts
Imports System.IO
Module Program
Sub Main()
Dim converter = New SynchronizedConverter(New PdfTools())
Dim doc = New HtmlToPdfDocument() With {
.GlobalSettings = New GlobalSettings() With {
.ColorMode = ColorMode.Color,
.Orientation = Orientation.Landscape,
.PaperSize = PaperKind.Letter,
.Margins = New MarginSettings() With {.Top = 10, .Bottom = 10, .Left = 10, .Right = 10}
},
.Objects = {
New ObjectSettings() With {
.HtmlContent = "<html><body><h1>Landscape Document</h1><p>Custom page settings</p></body></html>"
}
}
}
Dim pdf As Byte() = converter.Convert(doc)
File.WriteAllBytes("landscape.pdf", pdf)
End Sub
End Module
IronPDF Yaklaşımı:
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.Letter;
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
renderer.RenderingOptions.MarginTop = 10;
renderer.RenderingOptions.MarginBottom = 10;
renderer.RenderingOptions.MarginLeft = 10;
renderer.RenderingOptions.MarginRight = 10;
var pdf = renderer.RenderHtmlAsPdf("<html><body><h1>Landscape Document</h1><p>Custom page settings</p></body></html>");
pdf.SaveAs("landscape.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.Letter;
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
renderer.RenderingOptions.MarginTop = 10;
renderer.RenderingOptions.MarginBottom = 10;
renderer.RenderingOptions.MarginLeft = 10;
renderer.RenderingOptions.MarginRight = 10;
var pdf = renderer.RenderHtmlAsPdf("<html><body><h1>Landscape Document</h1><p>Custom page settings</p></body></html>");
pdf.SaveAs("landscape.pdf");
}
}
Imports IronPdf
Imports IronPdf.Rendering
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
renderer.RenderingOptions.PaperSize = PdfPaperSize.Letter
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape
renderer.RenderingOptions.MarginTop = 10
renderer.RenderingOptions.MarginBottom = 10
renderer.RenderingOptions.MarginLeft = 10
renderer.RenderingOptions.MarginRight = 10
Dim pdf = renderer.RenderHtmlAsPdf("<html><body><h1>Landscape Document</h1><p>Custom page settings</p></body></html>")
pdf.SaveAs("landscape.pdf")
End Sub
End Class
Haukcode.DinkToPdf, ayarları ayrı bir MarginSettings nesnesiyle GlobalSettings içine yerleştirir. IronPDF, PaperSize, PaperOrientation ve bireysel kenar boşlukları gibi açık adlara sahip doğrudan RenderingOptions özellikleri sağlar.
Haukcode.DinkToPdf API'siniIronPDFile Eslestirme Referansi
Bu eşleme, doğrudan API eşdeğerlerini göstererek geçişi hızlandırır.
Dönüştürücü Sınıf Eşlemesi
| Haukcode.DinkToPdf | IronPDF |
|---|---|
SynchronizedConverter |
ChromePdfRenderer |
BasicConverter |
ChromePdfRenderer |
PdfTools |
N/A |
IConverter |
N/A |
Belge Yapılandırma Eşlemesi
| Haukcode.DinkToPdf | IronPDF |
|---|---|
HtmlToPdfDocument |
Yöntem çağrısı |
GlobalSettings |
RenderingOptions |
ObjectSettings |
RenderingOptions |
converter.Convert(doc) |
renderer.RenderHtmlAsPdf(html) |
GlobalSettings Özellik Eşlemesi
| GlobalSettings Özelliği | IronPDF Özelliği |
|---|---|
ColorMode |
RenderingOptions.GrayScale |
Orientation |
RenderingOptions.PaperOrientation |
PaperSize |
RenderingOptions.PaperSize |
Margins.Top |
RenderingOptions.MarginTop |
Margins.Bottom |
RenderingOptions.MarginBottom |
Margins.Left |
RenderingOptions.MarginLeft |
Margins.Right |
RenderingOptions.MarginRight |
ObjectSettings Özellik Eşlemesi
| ObjectSettings Özelliği | IronPDF Eşdeğeri |
|---|---|
HtmlContent |
İlk parametre RenderHtmlAsPdf()'e |
Page (URL) |
renderer.RenderUrlAsPdf(url) |
HeaderSettings.Right = "[page]" |
TextHeader.RightText = "{page}" |
Yer Tutucu Söz Dizimi Goc Yolu
| Haukcode.DinkToPdf | IronPDF |
|---|---|
[page] |
{page} |
[toPage] |
{total-pages} |
[date] |
{date} |
Yaygın Taşınma Sorunları ve Çözümleri
Durum 1: Singleton Gereksinimi
Haukcode.DinkToPdf: Yerel wkhtmltopdf binary'siyle ilgili iş parçacığı güvenliği sorunları nedeniyle tekil bir SynchronizedConverter gerektirir.
Çözüm: IronPDF'nin ChromePdfRenderer tasarım olarak iş parçacığı güvenliğindedir—tekil bir yapı gerekmez:
// Before (DinkToPdf) - MUST be singleton
services.AddSingleton(typeof(IConverter), new SynchronizedConverter(new PdfTools()));
// After (IronPDF) - Can be singleton or transient (both work)
services.AddSingleton<IPdfService, IronPdfService>();
// Or services.AddTransient<IPdfService, IronPdfService>() - both are safe!
// Before (DinkToPdf) - MUST be singleton
services.AddSingleton(typeof(IConverter), new SynchronizedConverter(new PdfTools()));
// After (IronPDF) - Can be singleton or transient (both work)
services.AddSingleton<IPdfService, IronPdfService>();
// Or services.AddTransient<IPdfService, IronPdfService>() - both are safe!
' Before (DinkToPdf) - MUST be singleton
services.AddSingleton(GetType(IConverter), New SynchronizedConverter(New PdfTools()))
' After (IronPDF) - Can be singleton or transient (both work)
services.AddSingleton(Of IPdfService, IronPdfService)()
' Or services.AddTransient(Of IPdfService, IronPdfService)() - both are safe!
Durum 2: Yerel Ikili Bagimliliklari
Haukcode.DinkToPdf: Platforma ozel doğal kutuphaneler (libwkhtmltox.dll/so/dylib) gerektirir.
Cozum: IronPDF, yerel ikili bagimliliklarla sınırlı olmayan kendi basina yeterli bir pakettir. Gectikten sonra bu dosyalari silin:
libwkhtmltox.dll(Windows)libwkhtmltox.so(Linux)libwkhtmltox.dylib(macOS)
Durum 3: Geri Donus Tipi Farklari
Haukcode.DinkToPdf: converter.Convert() doğrudan byte[] döndürür.
Çözüm: IronPDF, birden fazla çıkış seçeneğiyle birlikte bir PdfDocument nesnesi döndürür:
var pdf = renderer.RenderHtmlAsPdf(html);
byte[] bytes = pdf.BinaryData; // Get bytes
pdf.SaveAs("output.pdf"); // Or save directly
var pdf = renderer.RenderHtmlAsPdf(html);
byte[] bytes = pdf.BinaryData; // Get bytes
pdf.SaveAs("output.pdf"); // Or save directly
Dim pdf = renderer.RenderHtmlAsPdf(html)
Dim bytes As Byte() = pdf.BinaryData ' Get bytes
pdf.SaveAs("output.pdf") ' Or save directly
Durum 4: Baslik/Ayah Yeri Tutucu Soz Dizimi
Haukcode.DinkToPdf: [page] ve [toPage] gibi köşeli parantez söz dizimini kullanır.
Cozum: IronPDF'nin suslü parantez yeri tutucularina güncelleyin:
// Before (DinkToPdf)
HeaderSettings = { Right = "Page [page] of [toPage]" }
// After (IronPDF)
renderer.RenderingOptions.TextHeader = new TextHeaderFooter
{
RightText = "Page {page} of {total-pages}"
};
// Before (DinkToPdf)
HeaderSettings = { Right = "Page [page] of [toPage]" }
// After (IronPDF)
renderer.RenderingOptions.TextHeader = new TextHeaderFooter
{
RightText = "Page {page} of {total-pages}"
};
' Before (DinkToPdf)
HeaderSettings = New With {.Right = "Page [page] of [toPage]"}
' After (IronPDF)
renderer.RenderingOptions.TextHeader = New TextHeaderFooter With {
.RightText = "Page {page} of {total-pages}"
}
Haukcode.DinkToPdf Goc Kontrol Listesi
Ön Taşınma Görevleri
Kod tabaninizi DinkToPdf kullanimini tespit etmek icin kontrol edin:
# Find DinkToPdf namespace usage
grep -r "using DinkToPdf\|using Haukcode" --include="*.cs" .
# Find converter usage
grep -r "SynchronizedConverter\|BasicConverter\|HtmlToPdfDocument" --include="*.cs" .
# Find native library loading
grep -r "wkhtmltopdf\|libwkhtmltox" --include="*.cs" --include="*.csproj" .
# Find GlobalSettings/ObjectSettings usage
grep -r "GlobalSettings\|ObjectSettings\|MarginSettings" --include="*.cs" .
# Find DinkToPdf namespace usage
grep -r "using DinkToPdf\|using Haukcode" --include="*.cs" .
# Find converter usage
grep -r "SynchronizedConverter\|BasicConverter\|HtmlToPdfDocument" --include="*.cs" .
# Find native library loading
grep -r "wkhtmltopdf\|libwkhtmltox" --include="*.cs" --include="*.csproj" .
# Find GlobalSettings/ObjectSettings usage
grep -r "GlobalSettings\|ObjectSettings\|MarginSettings" --include="*.cs" .
Geçerli GlobalSettings ve ObjectSettings yapılandırmalarını belgeleyin. Silinebilecek herhangi bir yerel kutuphane yukleme kodunu tanimlayin.
Kod Güncelleme Görevleri
- DinkToPdf NuGet paketlerini kaldirin
- IronPdf NuGet paketini kurun
DinkToPdf'danIronPdf'ya ad alanı içe aktarmalarını güncelleyinSynchronizedConverter'iChromePdfRendererile değiştirinHtmlToPdfDocumentkalıplarını doğrudan yöntem çağrılarına dönüştürünGlobalSettings'ıRenderingOptions'a dönüştürünObjectSettings'yıRenderingOptions'e dönüştürün- Yer tutucu söz dizimini güncelleyin (
[page]→{page},[toPage]→{total-pages}) - BaşlangictaIronPDFlisans başlatmasi ekleyin
Altyapi Temizleme Gorevleri
- Yerel ikili dosyalari silin (libwkhtmltox.*)
- Yerel kutuphane yukleme kodunu kaldirin
- Var ise CustomAssemblyLoadContext'i kaldırin
- Bagimlilik Enjeksiyonunu güncelleyin (singleton artik gerekmez)
- Yerel ikili dosyalar icin platform algilama kodunu kaldirin
Taşınım Sonrası Test
Geçiş sonrasında aşağıdaki yönleri doğrulayın:
- HTML'den PDF'ye donusumu test edin
- URL'den PDF'ye donusumu test edin
- Sayfa ayarlarini dogrulayin (boyut, yonlendirme, kenar boşluklari)
- Yeri tutucular ile baslik ve alt bilgileri dogrulayin
- Gerçek HTML şablonlari ile test edin
- Yuk altinda performans testi yapin
IronPDF'e Geçişin Temel Avantajları
Haukcode.DinkToPdf'den IronPDF'ye gecis birkaç kritik avantaj saglar:
Guvenlik: Asla yamalanmayacak SSRF (CVE-2022-35583) ve diğer wkhtmltopdf güvenlik açiklarini giderir.
Modern Yorumlama Motoru: 2015'ten beri terkedilmis Qt WebKit yerine aktif olarak güncellenen Chromium kullanir. Tam HTML5, CSS3 ve JavaScript destegi.
Yerel Ikili Dosya Yok: Yönetilecek platforma özgü DLL'ler olmadan kendi basina yetkin kutuphane. Windows, Linux ve macOS'ta dağıtimi basitlestirir.
İş Parçacığı Güvenliği: Tekil gerekliliği yok—ChromePdfRenderer'ı herhangi bir desen içinde özgürce kullanın, talepler gereğince anında örnekleme dahil.
Daha Basit API: Karmaşık belge nesnesi yapımı yerine doğrudan yöntem çağrıları (RenderHtmlAsPdf(), RenderUrlAsPdf()).
Aktif Geliştirme: 2026 boyunca .NET 10 ve C# 14 benimsenmesi arttıkça, IronPDF'in düzenli güncellemeleri mevcut ve gelecekteki .NET sürümleriyle uyumluluğu sağlar.

