Haukcode.DinkToPdf'ten IronPDF'e Geçiş
Haukcode.DinkToPdf, .NET uygulamaları için HTML'yi PDF'ye dönüştürmek amacıyla wkhtmltopdf ikili dosyasını saran ve bir zamanlar popüler olan DinkToPdf kütüphanesinin topluluk çatallamasıdır. Fork daha sonra Haukcode.WkHtmlToPdfDotNet olarak yeniden adlandırıldı ve en son yayın olan 1.5.95, 22 Ekim 2024'te LGPL-3.0-veya-daha-sonrası altında yayımlandı. Fork, orijinal DinkToPdf (1.0.8, 18 Nisan 2017) terk edildikten sonra NuGet üzerinde paketi canlı tutsa da, yine de ebeveyni ile aynı arşivlenmiş wkhtmltopdf ikili dosyasına bağlıdır. wkhtmltopdf/wkhtmltopdf deposu 2 Ocak 2023'te arşivlendi ve tüm wkhtmltopdf GitHub organizasyonu 10 Temmuz 2024'te arşivlendi, bu yüzden upstream sorunlar yamalanmayacak.
Bu kılavuz, .NET geliştiricileri için arşivlenmiş wkhtmltopdf ikili dosyasını kullanmayı bırakmayı düşünenler için Haukcode.DinkToPdf / Haukcode.WkHtmlToPdfDotNet'den IronPDF'e geçiş yolunu, adım adım talimatlar, kod karşılaştırmaları ve pratik örnekler içerir.
Güvenlik Danışmanlığı: CVE-2022-35583
Haukcode.DinkToPdf, üst akar wkhtmltopdf ikili dosyasına karşı yükseltilmiş bir güvenlik danışmanlığını devralır:
CVE-2022-35583 — wkhtmltopdf 0.12.6'ya karşı SSRF danışmanlığı
wkhtmltopdf 0.12.6'ya karşı bir Sunucu Tarafı İstek Köleliği danışmanlığı yayımlandı (NVD'de CVSS 9.8; üzerinde dikkat çeken wkhtmltopdf proje upstream'i bunu bir kütüphane hatası yerine uygulama tarafı giriş temizleme sorunu olarak görüyor). Her halükarda, yamalanacak — upstream arşivlendi. Halk tartışmasında işaret edilen tipik maruz kalma desenleri şunları içerir:
- Saldırı Vektörü: Güvenilmeyen HTML içeriği, dönüştürme sırasında iç kaynakları almak için işleyicinin zorlandığı hususlara neden olabilir
- AWS Metadata:
http://169.254.169.254istekleri, eğer renderer EC2 üzerinde çalışıyorsa örnek metadata döndürebilir - İç Ağ Erişimi: İç hizmetler, işleme sunucusundan erişilebilir olabilir
- Local File Inclusion:
file://protokolü ile yerel dosyalar okunabilir olabilir
Yukarı akış yaması beklenmiyor — wkhtmltopdf deposu 2 Ocak 2023'te arşivlendi ve son sürüm (0.12.6) Haziran 2020'deydi.
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:
| Aspekt | Haukcode.DinkToPdf | IronPDF |
|---|---|---|
| Motor Tabanı | wkhtmltopdf (QtWebKit çatallaması, yaklaşık 2015) | Modern Krom |
| Güvenlik Durumu | CVE-2022-35583 danışmanlığı (yamalanmamış / tartışmalı upstream) | Bilinen kritik CVE yoktur |
| Proje Durumu | Topluluk forku; üst düzey wkhtmltopdf arşivlendi | Aktif olarak sürdürülüyor |
| HTML5/CSS3 | Modern Flexbox/Grid yok | Tam CSS3 |
| JavaScript | Sınırlı, tutarsız | Tam destek |
| Yerel İkili Dosyalar | libwkhtmltox.dll/.so/.dylib platform başına |
Yönetilen NuGet paketi |
| İş Parçacığı Güvenliği | SynchronizedConverter çağrıları serileştirir |
Tasarımı gereği iş parçacığı güvenli |
| Destek | Topluluk | Profesyonel destek |
| Güncellemeler | Son sürüm çatalı 1.5.95 (22 Ekim 2024); üst düzey wkhtmltopdf 0.12.6 (Haziran 2020) | Düzenli sürümler |
| Lisans | LGPL-3.0-veya-daha sonra (çatal) / MIT (orijinal DinkToPdf) | Ücretli deneme ile ticari |
Hızlı Başlangıç: Haukcode.DinkToPdf'ten IronPDF'e Geçiş
Geçiş bu öncü adımlarla hemen başlayabilir.
Adım 1: DinkToPdf ve Yerel Dosyaları Kaldır
Haukcode.DinkToPdf NuGet paketlerini kaldırın:
# 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 dosyaları silin:
libwkhtmltox.dll(Windows)libwkhtmltox.so(Linux)libwkhtmltox.dylib(macOS)
Adım 2:IronPDF Yükleme
# Install IronPDF
dotnet add package IronPdf
# Install IronPDF
dotnet add package IronPdf
3. Adım: Namespace'leri Güncelleme
DinkToPdf ad alanlarını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
Adım 4: Lisansı Başlat
Uygulama başlangıcında lisans başlatmayı ekleyin:
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
Kod Göç Örnekleri
Temel HTML'den PDF'ye Dönüştürme
En temel işlem, bu .NET PDF kütüphaneleri arasındaki karmaşıklık farkını ortaya koymaktadır.
Haukcode.DinkToPdf Yaklaşımı:
// 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 GlobalSettings ve Objects ile bir HtmlToPdfDocument oluşturmayı, HtmlContent ile bir ObjectSettings eklemeyi, ham byte almak için converter.Convert() çağrısı yapmayı ve elle bir dosyaya File.WriteAllBytes() ile yazmayı gerektirir.
IronPDF bunu üç satıra indirger: bir ChromePdfRenderer oluştur, RenderHtmlAsPdf() çağrısı yap ve yerleşik SaveAs() metodunu kullan.
İleri düzey HTML-to-PDF senaryoları için HTML'den PDF'ye dönüşüm rehberine bakın.
URL'leri PDF'ye Dönüştürme
URL'den PDF'ye dönüştürme, benzer model farklılıkları gösterir.
Haukcode.DinkToPdf Yaklaşımı:
// 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 oluşturma desenini kullanır. IronPDF, niyeti net bir şekilde ifade eden özel bir RenderUrlAsPdf() metodu sağlar.
Kimlik doğrulama ve özel başlık seçenekleri için URL'den PDF'ye dokümantasyonu inceleyin.
Özel Sayfa Ayarları
Yönlendirme, kağıt boyutu ve kenar boşluklarını yapılandırmak farklı yaklaşımlar gerektirir.
Haukcode.DinkToPdf Yaklaşımı:
// 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 nesnesi ile GlobalSettings içinde iç içe yerleştirir. IronPDF, PaperSize, PaperOrientation ve bireysel kenar boşluğu özellikleri gibi net isimlere sahip doğrudan RenderingOptions özellikleri sunar.
Haukcode.DinkToPdf API'den IronPDF'e Eşleme Referansı
Bu eşleştirme, doğrudan API eşdeğerlerini göstererek geçişi hızlandırır:
Dönüştürücü Sınıf Eşleme
| Haukcode.DinkToPdf | IronPDF |
|---|---|
SynchronizedConverter |
ChromePdfRenderer |
BasicConverter |
ChromePdfRenderer |
PdfTools |
Yok |
IConverter |
Yok |
Belge Yapılandırma Eşleme
| Haukcode.DinkToPdf | IronPDF |
|---|---|
HtmlToPdfDocument |
Yöntem çağrısı |
GlobalSettings |
RenderingOptions |
ObjectSettings |
RenderingOptions |
converter.Convert(doc) |
renderer.RenderHtmlAsPdf(html) |
GlobalSettings Özellik Eşleme
| GlobalSettings Özellik | 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şleme
| ObjectSettings Özellik | IronPDF Eşdeğeri |
|---|---|
HtmlContent |
İlk parametre RenderHtmlAsPdf() |
Page (URL) |
renderer.RenderUrlAsPdf(url) |
HeaderSettings.Right = "[page]" |
{page} HtmlHeader.HtmlFragment içinde |
Yer Tutucu Sözdizimi Geçişi
| Haukcode.DinkToPdf | IronPDF |
|---|---|
[page] |
{page} |
[toPage] |
{total-pages} |
[date] |
{date} |
Yaygın Göç Sorunları ve Çözümleri
Sorun 1: Singleton Gereksinimi
Haukcode.DinkToPdf: Yerel wkhtmltopdf ikili dosyası ile iplik güvenliği sorunları nedeniyle tek başına bir SynchronizedConverter gerektirir.
Çözüm: IronPDF'in ChromePdfRenderer'i tasarım gereği iplik güvenlidir—tek başına bir nesne gerektirmez:
// 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!
Sorun 2: Yerel Dosya Bağımlılıkları
Haukcode.DinkToPdf: Platforma özgü yerel kütüphaneleri (libwkhtmltox.dll/so/dylib) gerektirir.
Çözüm: IronPDF, yerel dosya bağımlılıkları olmadan kendi kendine yeten bir yapıdır. Geçiş sonrası bu dosyaları silin:
libwkhtmltox.dll(Windows)libwkhtmltox.so(Linux)libwkhtmltox.dylib(macOS)
Sorun 3: Dönüş Türü Farklılıkları
Haukcode.DinkToPdf: converter.Convert() doğrudan byte[] döndürür.
Çözüm: IronPDF, birden fazla çıktı seçeneği sunan 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
Sorun 4: Başlık/Altbilgi Yer Tutucu Sözdizimi
Haukcode.DinkToPdf: [page] ve [toPage] gibi köşeli parantez sözdizimi kullanır.
Çözüm: IronPDF'in süslü parantez yer tutucularına güncelleyin:
// Before (DinkToPdf)
HeaderSettings = { Right = "Page [page] of [toPage]" }
// After (IronPDF)
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
HtmlFragment = "<span style='float:right'>Page {page} of {total-pages}</span>"
};
// Before (DinkToPdf)
HeaderSettings = { Right = "Page [page] of [toPage]" }
// After (IronPDF)
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
HtmlFragment = "<span style='float:right'>Page {page} of {total-pages}</span>"
};
' Before (DinkToPdf)
HeaderSettings = New With {.Right = "Page [page] of [toPage]"}
' After (IronPDF)
renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter With {
.HtmlFragment = "<span style='float:right'>Page {page} of {total-pages}</span>"
}
Haukcode.DinkToPdf Geçiş Kontrol Listesi
Geçiş Öncesi Görevler
Kod tabanınızı DinkToPdf kullanımını belirlemek için denetleyin:
# 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" .
Mevcut GlobalSettings ve ObjectSettings yapılandırmalarını belgeleyin. Kaldırılabilecek herhangi bir yerel kütüphane yükleme kodunu tespit edin.
Kod Güncelleme Görevleri
- DinkToPdf NuGet paketlerini kaldırın 2.IronPDF NuGet paketini yükleyin
- Namespace eklemelerini
DinkToPdf'danIronPdf'ya güncelle SynchronizedConverter'yiChromePdfRendererile değiştirinHtmlToPdfDocumentdesenlerini doğrudan metod çağrılarına dönüştürünGlobalSettings'yiRenderingOptions'ya dönüştürünObjectSettings'yiRenderingOptions'ya dönüştürün- Yer tutucu sözdizimini güncelle (
[page]→{page},[toPage]→{total-pages}) 9.IronPDF lisans başlatmasını başlatma sırasında ekleyin
Altyapı Temizlik Görevleri
- Yerel dosyaları silin (libwkhtmltox.*)
- Yerel kütüphane yükleme kodunu kaldırın
- ÖzelleştirilmişAssemblyLoadContext'i kaldırın, eğer mevcutsa
- Bağımlılık Enjeksiyonunu güncelleyin (tekil artık gerekmez)
- Yerel dosyalar için platform algılama kodunu kaldırın
Geçiş Sonrası Testler
Geçiş sonrasında bu yönleri doğrulayın:
- HTML'den PDF'e dönüştürmeyi test edin
- URL'den PDF'e dönüştürmeyi test edin
- Sayfa ayarlarını doğrulayın (boyut, yönlendirme, kenar boşlukları)
- Yer tutucularla birlikte başlıkları ve altbilgileri doğrulayın
- Gerçek HTML şablonlarıyla test yapın
- Yük altında performans testi yapın
IronPDF'e Geçmenin Temel Faydaları
Haukcode.DinkToPdf'den IronPDF'e geçiş, birkaç kritik avantaj sağlar:
Güvenlik: Asla yamalanmayacak CVE-2022-35583 (SSRF) ve diğer wkhtmltopdf güvenlik açıklarını ortadan kaldırır.
Modern Rendering Motoru: 2015'ten kalma bırakılmış Qt WebKit yerine aktif olarak güncellenen Chromium'u kullanır. Tam HTML5, CSS3 ve JavaScript desteği.
Yerel Dosya Yok: Yönetilecek platforma özgü DLL'ler olmadan kendi kendine yeten bir kütüphane. Windows, Linux ve macOS genelinde dağıtımı kolaylaştırır.
İplik Güvenliği: Tek başına nesne gereksinimi yok—herhangi bir modelde, istek başına örneklenmeyi de içeren, ChromePdfRenderer'u özgürce kullanın.
Basit API: Karmaşık belge nesnesi oluşturma yerine doğrudan metod çağrıları (RenderHtmlAsPdf(), RenderUrlAsPdf()).
Aktif Geliştirme: IronPDF'nin düzenli sürüm sıklığı, .NET Framework 4.6.2+, .NET Core 3.1+ ve .NET 5/6/7/8/9/10 dahil olmak üzere mevcut .NET sürümleriyle uyumlu tutar.

