DinkToPdf'ten IronPDF'e C# ile Nasıl Geçilir
DinkToPdf, wkhtmltopdf'u sarmalar ve tüm guvenlik aciklari ve teknik sinirlandirmalarini miras alir. Bu sorunlari anlamak, goc etme aciliyetini degerlendirmeniz icin kritiktir.
Onemli Guvenlik Sorunlari
DinkToPdf, wkhtmltopdf'ten güncelemedigi onemli guvenlik aciklarini miras alir:
- CVE-2022-35583 (SSRF): Sunucu-Tarafi Istem Sahtekarligi, saldirganlarin ic ag kaynaklarina erismesine izin verir
- Terk Edilmis Proje: wkhtmltopdf 2020'den beri bakim yapilmiyor
- Guvenlik Yamasi Yok: Bilinen aciklar asla duzelmeyecek
Teknik Problemler
| Sorun | Etkisi |
|---|---|
| İplik Güvenliği | SynchronizedConverter hala es zamanli yuk altinda uretimde coker |
| Yerel İkili Dosyalar | Platforma ozgu libwkhtmltox ikilileri ile karmaşık kurulum |
| CSS Sinirlamalari | Flexbox, Grid veya modern CSS destegi yok |
| JavaScript | Tutarsiz calisma, zaman asimlari |
| Rendering | Güncel olmayan WebKit motoru (2015 civari) |
| Bakım | Son güncelleme: 2018 |
Mimari Karşılaştırma
| Bağlam | DinkToPdf | IronPDF |
|---|---|---|
| Güvenlik | CVE-2022-35583 (SSRF), günceleme yok | Bilinen bir güvenlik açığı yok |
| Render Motoru | Güncel olmayan WebKit (2015) | Modern Chromium |
| İplik Güvenliği | Eşzamanlı kullanımda kilitlenmeler | Tamamen eşzamanlı güvenli |
| Yerel Bağımlılıklar | Platforma özel binary'ler | Tamamen NuGet paketi |
| CSS Desteği | Flexbox/Gridyok | Tam CSS3 |
| JavaScript | Sınırlı, tutarsız | Desteklenir |
| Bakım | Terk (2018) | Aktif olarak bakım yapılıyor |
Özellik Karşılaştırma
| Özellik | DinkToPdf | IronPDF |
|---|---|---|
| HTML'den PDF'ye | ✅ (eski motor) | ✅ (Chromium) |
| URL'den PDF'ye | ✅ | ✅ |
| Özel kenar boşlukları | ✅ | ✅ |
| Üstbilgi/Altbilgi | ✅ (sınırlı) | ✅ (tam HTML) |
| CSS3 | ❌ Sınırlı | ✅Tam |
| Flexbox/Grid | ❌ | ✅ |
| JavaScript | ⚠️ Sınırlı | ✅Tam |
| PDF manipülasyonu | ❌ | ✅ |
| Form doldurma | ❌ | ✅ |
| Dijital imzalar | ❌ | ✅ |
| Şifreleme | ❌ | ✅ |
| Filigranlar | ❌ | ✅ |
| Birleştirme/Ayırma | ❌ | ✅ |
Önceden Taşıma Hazırlığı
Önkoşullar
Ortamınızın bu gereksinimlere uygun olduğunu doğrulayın:
- .NET Framework 4.6.2+ veya .NET Core 3.1 / .NET 5-9
- Visual Studio 2019+ veya C# uzantılı VS Code
- NuGet Paket Yöneticisi erişimi -IronPDFlisans anahtarı (ücretsiz deneme ironpdf.com adresinde mevcuttur)
DinkToPdfKullanimini Denetleyin
TumDinkToPdfreferanslarini belirlemek icin cozum dizininizde bu komutlari calistirin:
# Find allDinkToPdfusages in your codebase
grep -r "using DinkToPdf" --include="*.cs" .
grep -r "SynchronizedConverter\|HtmlToPdfDocument\|ObjectSettings" --include="*.cs" .
# Find NuGet package references
grep -r "DinkToPdf" --include="*.csproj" .
# Find wkhtmltopdf binaries
find . -name "libwkhtmltox*"
# Find allDinkToPdfusages in your codebase
grep -r "using DinkToPdf" --include="*.cs" .
grep -r "SynchronizedConverter\|HtmlToPdfDocument\|ObjectSettings" --include="*.cs" .
# Find NuGet package references
grep -r "DinkToPdf" --include="*.csproj" .
# Find wkhtmltopdf binaries
find . -name "libwkhtmltox*"
Beklenen Büyük Değişiklikler
| Değişiklik | DinkToPdf | IronPDF | Etkisi |
|---|---|---|---|
| Dönüştürucu | SynchronizedConverter(new PdfTools()) |
ChromePdfRenderer |
Daha basit örnekleme |
| Doküman | HtmlToPdfDocument |
Dogrudan metod cagrisi | Doküman nesnesi yok |
| Ayarlar | GlobalSettings + ObjectSettings |
RenderingOptions |
Tek opsiyon nesnesi |
| Dondurulecek Tip | byte[] |
PdfDocument |
Daha guclu nesne |
| Ikili | libwkhtmltox.dll/so |
Yok (yonetilen) | Yerel dosyalari kaldirin |
| Is parcacigi guvenligi | SynchronizedConverter gerekli |
Varsıyılan olarak iplik guvenli | Daha basit kod |
| DI | Singleton gerekli | Herhangi bir yasam suresi | Esnek |
Adım Adım Geçiş Süreci
Adım 1: NuGet Paketlerini Güncelleyin
DinkToPdf'u kaldirin veIronPDFyukleyin:
# Remove DinkToPdf
dotnet remove package DinkToPdf
# Install IronPDF
dotnet add package IronPdf
# Remove DinkToPdf
dotnet remove package DinkToPdf
# Install IronPDF
dotnet add package IronPdf
Adim 2: Yerel Ikilileri Kaldirin
Projenizden bu platforma ozgu dosyalari silin:
libwkhtmltox.dll(Windows)libwkhtmltox.so(Linux)libwkhtmltox.dylib(macOS)
IronPDF'un yerel bagimliligi yok—her sey yonetilen kod.
Adım 3: Ad Alanı Referanslarını Güncelleyin
DinkToPdf ad alanlariniIronPDFile değiştirin:
// Remove these
using DinkToPdf;
using DinkToPdf.Contracts;
// Add this
using IronPdf;
// Remove these
using DinkToPdf;
using DinkToPdf.Contracts;
// Add this
using IronPdf;
Imports IronPdf
Adim 4: Lisansi Ayarlayin
// Add at application startup (Program.cs or Global.asax)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Add at application startup (Program.cs or Global.asax)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
' Add at application startup (Program.vb or Global.asax)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
Tam API Geçiş Referansı
Çekirdek Sınıf Eşleştirmesi
| DinkToPdf | IronPDF |
|---|---|
SynchronizedConverter |
ChromePdfRenderer |
BasicConverter |
ChromePdfRenderer |
PdfTools |
Gerekli değil |
HtmlToPdfDocument |
Gerekli değil |
GlobalSettings |
RenderingOptions |
ObjectSettings |
RenderingOptions |
MarginSettings |
Ayrı kenar boşluğu özellikleri |
GlobalSettings Eslestirmesi
| DinkToPdf GlobalSettings | IronPDF Eşdeğeri |
|---|---|
ColorMode = ColorMode.Color |
Varsıyılan (her zaman renkli) |
Orientation = Orientation.Portrait |
PaperOrientation = PdfPaperOrientation.Portrait |
Orientation = Orientation.Landscape |
PaperOrientation = PdfPaperOrientation.Landscape |
PaperSize = PaperKind.A4 |
PaperSize = PdfPaperSize.A4 |
Margins = new MarginSettings() |
Ayrı kenar boşluğu özellikleri |
MarginSettings Eslestirmesi
| DinkToPdf Marginleri | IronPDF Eşdeğeri |
|---|---|
Margins.Top = 10 |
MarginTop = 10 |
Margins.Bottom = 10 |
MarginBottom = 10 |
Margins.Left = 15 |
MarginLeft = 15 |
Margins.Right = 15 |
MarginRight = 15 |
Kod Geçiş Örnekleri
Temel HTML'den PDF'e
Temel donusum, DinkToPdf'un detayli konfigrasyonundan IronPDF'in optimize edilmis API'sina dramatik basitlesmeyi gösterir.
DinkToPdf Uygulamasi:
// 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 = "<h1>Hello World</h1><p>This is a PDF from HTML.</p>",
WebSettings = { DefaultEncoding = "utf-8" }
}
}
};
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 = "<h1>Hello World</h1><p>This is a PDF from HTML.</p>",
WebSettings = { DefaultEncoding = "utf-8" }
}
}
};
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 ObjectSettings() With {
.HtmlContent = "<h1>Hello World</h1><p>This is a PDF from HTML.</p>",
.WebSettings = New WebSettings() With {
.DefaultEncoding = "utf-8"
}
}
}
}
Dim pdf As Byte() = converter.Convert(doc)
File.WriteAllBytes("output.pdf", pdf)
End Sub
End Module
IronPDF Uygulaması:
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>This is a PDF from HTML.</p>");
pdf.SaveAs("output.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>This is a PDF from HTML.</p>");
pdf.SaveAs("output.pdf");
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>This is a PDF from HTML.</p>")
pdf.SaveAs("output.pdf")
End Sub
End Class
IronPDF, 20 satirlikDinkToPdfkonfigrasyonunu 4 satirla azaltir. No SynchronizedConverter, no PdfTools, no HtmlToPdfDocument, no ObjectSettings—sadece render ve kaydet. Daha fazla seçenek icin HTML'den PDF'ye belgelerini gorun.
URL'den PDF'ye Dönüşüm
DinkToPdf Uygulamasi:
// 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 Uygulaması:
// 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
IronPDF'nin RenderUrlAsPdf, iç içe geçmiş ObjectSettings.Page yapılandırmasını doğrudan bir metot çağrısı ile değiştirir. Daha fazla seçenek icin URL'den PDF'ye belgelerini gorun.
Belirli Ayarlar ile Yatay ve Kenar Boşlukları
DinkToPdf Uygulamasi:
// 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.A4,
Margins = new MarginSettings { Top = 10, Bottom = 10, Left = 15, Right = 15 }
},
Objects = {
new ObjectSettings() {
HtmlContent = "<h1>Custom PDF</h1><p>Landscape orientation with custom margins.</p>",
WebSettings = { DefaultEncoding = "utf-8" }
}
}
};
byte[] pdf = converter.Convert(doc);
File.WriteAllBytes("custom.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.A4,
Margins = new MarginSettings { Top = 10, Bottom = 10, Left = 15, Right = 15 }
},
Objects = {
new ObjectSettings() {
HtmlContent = "<h1>Custom PDF</h1><p>Landscape orientation with custom margins.</p>",
WebSettings = { DefaultEncoding = "utf-8" }
}
}
};
byte[] pdf = converter.Convert(doc);
File.WriteAllBytes("custom.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.A4,
.Margins = New MarginSettings() With {
.Top = 10,
.Bottom = 10,
.Left = 15,
.Right = 15
}
},
.Objects = {
New ObjectSettings() With {
.HtmlContent = "<h1>Custom PDF</h1><p>Landscape orientation with custom margins.</p>",
.WebSettings = New WebSettings() With {
.DefaultEncoding = "utf-8"
}
}
}
}
Dim pdf As Byte() = converter.Convert(doc)
File.WriteAllBytes("custom.pdf", pdf)
End Sub
End Module
IronPDF Uygulaması:
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
renderer.RenderingOptions.MarginTop = 10;
renderer.RenderingOptions.MarginBottom = 10;
renderer.RenderingOptions.MarginLeft = 15;
renderer.RenderingOptions.MarginRight = 15;
var pdf = renderer.RenderHtmlAsPdf("<h1>Custom PDF</h1><p>Landscape orientation with custom margins.</p>");
pdf.SaveAs("custom.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
renderer.RenderingOptions.MarginTop = 10;
renderer.RenderingOptions.MarginBottom = 10;
renderer.RenderingOptions.MarginLeft = 15;
renderer.RenderingOptions.MarginRight = 15;
var pdf = renderer.RenderHtmlAsPdf("<h1>Custom PDF</h1><p>Landscape orientation with custom margins.</p>");
pdf.SaveAs("custom.pdf");
}
}
Imports IronPdf
Imports IronPdf.Rendering
Imports System
Module Program
Sub Main()
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape
renderer.RenderingOptions.MarginTop = 10
renderer.RenderingOptions.MarginBottom = 10
renderer.RenderingOptions.MarginLeft = 15
renderer.RenderingOptions.MarginRight = 15
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Custom PDF</h1><p>Landscape orientation with custom margins.</p>")
pdf.SaveAs("custom.pdf")
End Sub
End Module
IronPDF'nin RenderingOptions, hem GlobalSettings hem de MarginSettings yerine birleştirilmiş, akıcı bir API sunar. Daha fazla yapılandırma seçeneği için işleme seçenekleri dokümanına bakın.
Kritik Geçiş Notları
Yerel İkili Dosyaları Kaldır
En önemli temizlik adımı, wkhtmltopdf yerel ikili dosyalarını kaldırmaktır. IronPDF'nin yerel bağımlılıkları yoktur:
# Delete native binaries
rm libwkhtmltox.* 2>/dev/null
# Delete native binaries
rm libwkhtmltox.* 2>/dev/null
Singleton Gerekli Değil
DinkToPdf'in SynchronizedConverter'si, çökme durumlarını önlemek için bir singleton olarak kaydedilmeliydi. IronPDF'nin ChromePdfRenderer'si, her türlü DI yaşam döngüsüyle thread-safe'dir:
//DinkToPdf- MUST be singleton
services.AddSingleton(typeof(IConverter), new SynchronizedConverter(new PdfTools()));
//IronPDF- any lifetime works
services.AddScoped<ChromePdfRenderer>();
// Or just create inline:
var renderer = new ChromePdfRenderer();
//DinkToPdf- MUST be singleton
services.AddSingleton(typeof(IConverter), new SynchronizedConverter(new PdfTools()));
//IronPDF- any lifetime works
services.AddScoped<ChromePdfRenderer>();
// Or just create inline:
var renderer = new ChromePdfRenderer();
' DinkToPdf- MUST be singleton
services.AddSingleton(GetType(IConverter), New SynchronizedConverter(New PdfTools()))
' IronPDF- any lifetime works
services.AddScoped(Of ChromePdfRenderer)()
' Or just create inline:
Dim renderer As New ChromePdfRenderer()
Daha Zengin Dönüş Türü
DinkToPdf byte[] döndürür. IronPDF, manipülasyon yetenekleriyle birlikte PdfDocument döndürür:
//DinkToPdfreturns byte[]
byte[] pdf = converter.Convert(doc);
File.WriteAllBytes("output.pdf", pdf);
return File(pdf, "application/pdf");
//IronPDFreturns PdfDocument
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
return File(pdf.BinaryData, "application/pdf");
//DinkToPdfreturns byte[]
byte[] pdf = converter.Convert(doc);
File.WriteAllBytes("output.pdf", pdf);
return File(pdf, "application/pdf");
//IronPDFreturns PdfDocument
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
return File(pdf.BinaryData, "application/pdf");
' DinkToPdf returns byte()
Dim pdf As Byte() = converter.Convert(doc)
File.WriteAllBytes("output.pdf", pdf)
Return File(pdf, "application/pdf")
' IronPDF returns PdfDocument
Dim pdfDocument = renderer.RenderHtmlAsPdf(html)
pdfDocument.SaveAs("output.pdf")
Return File(pdfDocument.BinaryData, "application/pdf")
TamCSS3Desteği
DinkToPdf'de başarısız olan modern düzenler, IronPDF'de mükemmel çalışır:
//DinkToPdf- doesn't work (wkhtmltopdf uses 2015 WebKit)
var html = "<div style='display: flex;'>...</div>"; // Broken!
//IronPDF- full support (modern Chromium)
var html = @"
<div style='display: flex; justify-content: space-between;'>
<div>Left</div>
<div>Right</div>
</div>";
var pdf = renderer.RenderHtmlAsPdf(html); // Works!
//DinkToPdf- doesn't work (wkhtmltopdf uses 2015 WebKit)
var html = "<div style='display: flex;'>...</div>"; // Broken!
//IronPDF- full support (modern Chromium)
var html = @"
<div style='display: flex; justify-content: space-between;'>
<div>Left</div>
<div>Right</div>
</div>";
var pdf = renderer.RenderHtmlAsPdf(html); // Works!
' DinkToPdf- doesn't work (wkhtmltopdf uses 2015 WebKit)
Dim html As String = "<div style='display: flex;'>...</div>" ' Broken!
' IronPDF- full support (modern Chromium)
Dim html As String = "
<div style='display: flex; justify-content: space-between;'>
<div>Left</div>
<div>Right</div>
</div>"
Dim pdf = renderer.RenderHtmlAsPdf(html) ' Works!
Göç Sonrası Kontrol Listesi
Kod göçünü tamamladıktan sonra, aşağıdakileri doğrulayın:
- PDF üretiminin doğru çalıştığını doğrulamak için tüm birim testlerini çalıştırın
- Çoklu iş parçacıklı senaryoları test edin (bunlarDinkToPdfile çöktü)
- PDF çıktı kalitesini karşılaştırın (IronPDF'nin Chromium'u daha iyi işler)
- CSS işleme doğrulayın (Flexbox/Grid şimdi çalışır) -JavaScriptçalıştırmayı test edin (IronPDF ile güvenilir)
- wkhtmltopdf kurulumunu kaldırmak için CI/CD boru hatlarını güncelleyin
- Güvenlik taramasının geçtiğini doğrulayın (CVE-2022-35583 bayrakları artık yok)
- Docker/ dağıtım betiklerinden yerel ikili dağıtımını kaldırın
PDF Altyapınızı Geleceğe Hazırlama
.NET 10 ufukta ve C# 14 yeni dil özelliklerini tanıtırken, aktif olarak bakım yapılan bir PDF kütüphanesi seçmek uzun vadeli uyumluluğu sağlar. IronPDF'nin modern Chromium motoru düzenli güncellemeler alırken, DinkToPdf'in terk edilmiş wkhtmltopdf'u 2015 yeteneklerinde donmuş halde kalır - bu, web standartları 2025 ve 2026 boyunca evrilirken büyüyen bir fark olacaktır.
Ek Kaynaklar
DinkToPdf'den IronPDF'ye geçmek, kritik güvenlik açıklarını (CVE-2022-35583), iş parçacığı emniyeti hatalarını, yerel ikili dağıtım karmaşıklığını ve eski CSS işleme sorunlarını ortadan kaldırır. Modern bir Chromium motoruna geçiş, tamCSS3desteği, güvenilirJavaScriptçalıştırma ve aktif olarak bakım yapılan bir kütüphanenin sağladığı huzuru sunar.

