C#'ta TuesPechkin'den IronPDF'ye Nasıl Geçilir
TuesPechkin, .NET geliştiricilerinin HTML'yi PDF'ye dönüştürmesine yardımcı olan, wkhtmltopdf kitaplığına sarmalanmış bir iplik güvenli paketleyici olarak yıllarca hizmet etti. Ancak, altta yatan wkhtmltopdf teknolojisi en son 2015'te güncellendi ve Aralık 2022'de resmen terk edildi. Bu, geliştirme ekiplerinin artık göz ardı edemeyeceği kritik güvenlik, istikrar ve render sınırlamaları yaratır.
Bu kılavuz, bu geçişi değerlendiren profesyonel .NET geliştiricileri için adım adım talimatlar, kod karşılaştırmaları ve pratik örneklerle, TuesPechkin'den IronPDF'ye eksiksiz bir geçiş yolu sunar.
Neden TuesPechkin'den Şimdi Göç Etmelisiniz?
Güvenliğe duyarlı geliştirme ekipleri için TuesPechkin'den geçiş kararı artık isteğe bağlı değil. Altta yatan wkhtmltopdf kitaplığı, hiçbir zaman düzeltilemeyecek kritik yamalanmamış güvenlik açıkları taşır.
Kritik Güvenlik Açığı: CVE-2022-35583
| Özellik | Değer |
|---|---|
| CVE ID | CVE-2022-35583 |
| Şiddet | KRİTİK (9.8/10) |
| Saldırı Vektörü | Ağ |
| Durum | ASLA YAMALANMAYACAK |
| Etkilenen | TümTuesPechkinsürümleri |
Wkhtmltopdf koruyucuları, güvenlik açıklarını düzeltmeyeceklerini açıkça belirtti.TuesPechkinkullanan her uygulama kalıcı olarak Sunucu Tarafı Talep Kandırma (SSRF) saldırılarına maruz kalır.
Saldırı Nasıl Çalışır?
Kullanıcı tarafından sağlanan HTML işlenirken, saldırganlar zararlı içerik enjekte edebilir:
<iframe src="http://169.254.169.254/latest/meta-data/iam/security-credentials/"></iframe>
<img src="http://internal-admin-panel:8080/api/users?export=all" />
<iframe src="http://169.254.169.254/latest/meta-data/iam/security-credentials/"></iframe>
<img src="http://internal-admin-panel:8080/api/users?export=all" />
Bu, saldırganların AWS/Azure/GCP metadata uç noktalarına erişmesine, dahili API verilerini çalmasına, dahili ağları portları taramasına ve hassas yapılandırmaları dışa çıkarmasına olanak tanır.
Teknoloji Krizi
TuesPechkin, Chrome öncesi dönem teknolojisi olan Qt WebKit 4.8 kullanan wkhtmltopdf'yi sarar. Bu şu anlama gelir:
- Flexbox desteği yok
- CSS Grid desteği yok
- Kırık JavaScript yürütümü
- ES6+ desteği yok
İstikrar Krizi
Ilan edilen ThreadSafeConverter ile bile,TuesPechkinyuksek yuk altinda çöker:
// ❌TuesPechkin- "ThreadSafeConverter" still crashes
var converter = new TuesPechkin.ThreadSafeConverter(
new TuesPechkin.RemotingToolset<PechkinBindings>());
// Under high load, you'll see:
// System.AccessViolationException: Attempted to read or write protected memory
// Process terminated unexpectedly
// Converter hangs indefinitely
// ❌TuesPechkin- "ThreadSafeConverter" still crashes
var converter = new TuesPechkin.ThreadSafeConverter(
new TuesPechkin.RemotingToolset<PechkinBindings>());
// Under high load, you'll see:
// System.AccessViolationException: Attempted to read or write protected memory
// Process terminated unexpectedly
// Converter hangs indefinitely
' ❌TuesPechkin- "ThreadSafeConverter" still crashes
Dim converter = New TuesPechkin.ThreadSafeConverter(
New TuesPechkin.RemotingToolset(Of PechkinBindings)())
' Under high load, you'll see:
' System.AccessViolationException: Attempted to read or write protected memory
' Process terminated unexpectedly
' Converter hangs indefinitely
IronPDF ile TuesPechkin: Özellik Karşılaştırması
Mimari farklılıkları anlamak, teknik karar vericilerin geçiş yatırımını değerlendirmesine yardımcı olur:
| Özellik | TuesPechkin | IronPDF |
|---|---|---|
| Lisans | Ücretsiz (MIT Lisansı) | Ticari |
| İplik Güvenliği | Manuel Yönetim Gerektirir | Yerel Destek |
| Eşzamanlılık | Sınırlı, yük altında çökmeye yatkındır | Güçlü, yüksek eşzamanlılıkla başa çıkabilir |
| Gelisim | Aktif değil, en son 2015'te güncellendi | Aktif, sürekli iyileştirmeler |
| Kullanım Kolaylığı | Karmaşık kurulum | Kullanıcı dostu rehberlerle |
| Dokümantasyon | Temel | Örneklerle kapsamlı |
| Güvenlik | ❌ Kritik CVE'ler | ✅ Bilenen güvenlik açığı yok |
| HTML to PDF | ⚠️ Eski WebKit | ✅ Modern Chromium |
| CSS3 | ❌ Kısmen | ✅ Destekleniyor |
| Flexbox/Grid | ❌ Desteklenmiyor | ✅ Destekleniyor |
| JavaScript | ⚠️ Güvenilmez | ✅ Tam ES6+ |
| PDF Manipulasyonu | ❌ Mevcut değil | ✅ Tam |
| Dijital İmzalar | ❌ Mevcut değil | ✅ Tam |
| PDF/A Uyumluluğu | ❌ Mevcut değil | ✅ Tam |
| Form Doldurma | ❌ Mevcut değil | ✅ Tam |
| Filigranlar | ❌ Mevcut değil | ✅ Tam |
| Birleştir/Böl | ❌ Mevcut değil | ✅ Tam |
Hızlı Başlangıç: TuesPechkin'den IronPDF'ye Geçiş
Geçiş hemen bu temel adımlar ile başlatılabilir.
1. Adım: NuGet Paketlerini Değiştir
TümTuesPechkinpaketlerini kaldırın:
# RemoveTuesPechkinand all related packages
dotnet remove package TuesPechkin
dotnet remove package TuesPechkin.Wkhtmltox.Win64
dotnet remove package TuesPechkin.Wkhtmltox.Win32
# RemoveTuesPechkinand all related packages
dotnet remove package TuesPechkin
dotnet remove package TuesPechkin.Wkhtmltox.Win64
dotnet remove package TuesPechkin.Wkhtmltox.Win32
IronPDF'i yükleyin:
# Install IronPDF
dotnet add package IronPdf
# Install IronPDF
dotnet add package IronPdf
Adim 2: Yerel Ikilileri Kaldirin
Bu dosya ve klasörleri projenizden silin:
wkhtmltox.dllwkhtmltopdf.exe- Herhangi bir
wkhtmlto*dosyalari TuesPechkin.Wkhtmltoxklasoru
Adım 3: Adalanları Güncelleyin
TuesPechkin ad alanlarını IronPdf ad alanı ile değiştirin:
// Before (TuesPechkin)
using TuesPechkin;
using TuesPechkin.Wkhtmltox.Win64;
// After (IronPDF)
using IronPdf;
// Before (TuesPechkin)
using TuesPechkin;
using TuesPechkin.Wkhtmltox.Win64;
// After (IronPDF)
using IronPdf;
' Before (TuesPechkin)
Imports TuesPechkin
Imports TuesPechkin.Wkhtmltox.Win64
' After (IronPDF)
Imports IronPdf
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
HTML'i PDF'ye Dönüştürme
En yaygın kullanım senaryosu, bu .NET PDF kütüphaneleri arasındaki karmaşıklık farkını gösterir.
TuesPechkin Yaklaşımı:
// NuGet: Install-Package TuesPechkin
using TuesPechkin;
using System.IO;
class Program
{
static void Main()
{
var converter = new StandardConverter(
new RemotingToolset<PdfToolset>(
new Win64EmbeddedDeployment(
new TempFolderDeployment())));
string html = "<html><body><h1>Hello World</h1></body></html>";
byte[] pdfBytes = converter.Convert(new HtmlToPdfDocument
{
Objects = { new ObjectSettings { HtmlText = html } }
});
File.WriteAllBytes("output.pdf", pdfBytes);
}
}
// NuGet: Install-Package TuesPechkin
using TuesPechkin;
using System.IO;
class Program
{
static void Main()
{
var converter = new StandardConverter(
new RemotingToolset<PdfToolset>(
new Win64EmbeddedDeployment(
new TempFolderDeployment())));
string html = "<html><body><h1>Hello World</h1></body></html>";
byte[] pdfBytes = converter.Convert(new HtmlToPdfDocument
{
Objects = { new ObjectSettings { HtmlText = html } }
});
File.WriteAllBytes("output.pdf", pdfBytes);
}
}
Imports TuesPechkin
Imports System.IO
Class Program
Shared Sub Main()
Dim converter = New StandardConverter(
New RemotingToolset(Of PdfToolset)(
New Win64EmbeddedDeployment(
New TempFolderDeployment())))
Dim html As String = "<html><body><h1>Hello World</h1></body></html>"
Dim pdfBytes As Byte() = converter.Convert(New HtmlToPdfDocument With {
.Objects = {New ObjectSettings With {.HtmlText = html}}
})
File.WriteAllBytes("output.pdf", pdfBytes)
End Sub
End Class
IronPDF Yaklaşımı:
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string html = "<html><body><h1>Hello World</h1></body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string html = "<html><body><h1>Hello World</h1></body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim html As String = "<html><body><h1>Hello World</h1></body></html>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("output.pdf")
End Sub
End Class
TuesPechkin surumu, karmasik bir başlatma zinciriyle StandardConverter oluşturmayi gerektirir: RemotingToolset, Win64EmbeddedDeployment ve TempFolderDeployment. Ayrıca baytları manuel olarak dosyaya yazmanız gerekir.
IronPDF bu töreni tamamen ortadan kaldırır. ChromePdfRenderer oluşturun, HTML'i render edin ve kaydedin. Kod, kendi kendini belgelendirir ve dağıtım araç setlerini veya platforma özgü ikili yönetimi anlamayı gerektirmez.
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'e dönüştürme, benzer karmaşıklık farklılıklarını gösterir.
TuesPechkin Yaklaşımı:
// NuGet: Install-Package TuesPechkin
using TuesPechkin;
using System.IO;
class Program
{
static void Main()
{
var converter = new StandardConverter(
new RemotingToolset<PdfToolset>(
new Win64EmbeddedDeployment(
new TempFolderDeployment())));
byte[] pdfBytes = converter.Convert(new HtmlToPdfDocument
{
Objects = {
new ObjectSettings {
PageUrl = "https://www.example.com"
}
}
});
File.WriteAllBytes("webpage.pdf", pdfBytes);
}
}
// NuGet: Install-Package TuesPechkin
using TuesPechkin;
using System.IO;
class Program
{
static void Main()
{
var converter = new StandardConverter(
new RemotingToolset<PdfToolset>(
new Win64EmbeddedDeployment(
new TempFolderDeployment())));
byte[] pdfBytes = converter.Convert(new HtmlToPdfDocument
{
Objects = {
new ObjectSettings {
PageUrl = "https://www.example.com"
}
}
});
File.WriteAllBytes("webpage.pdf", pdfBytes);
}
}
Imports TuesPechkin
Imports System.IO
Class Program
Shared Sub Main()
Dim converter = New StandardConverter(
New RemotingToolset(Of PdfToolset)(
New Win64EmbeddedDeployment(
New TempFolderDeployment())))
Dim pdfBytes As Byte() = converter.Convert(New HtmlToPdfDocument With {
.Objects = {
New ObjectSettings With {
.PageUrl = "https://www.example.com"
}
}
})
File.WriteAllBytes("webpage.pdf", pdfBytes)
End Sub
End Class
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
TuesPechkin, bir ObjectSettings.PageUrl bir HtmlToPdfDocument icine gomulmus olarak kullanir. IronPDF, amaci acikca ifade eden ozel bir RenderUrlAsPdf metodu saglar.
Kimlik doğrulama ve ozellestirilmis baslik seçenekleri icin URL'den PDF'ye dokümantasyonu kesfedin.
Özel Rendering Ayarları
Sayfa yönlendirmesi, kağıt boyutu ve kenar boşlukları farklı yapılandırma yaklaşımları gerektirir.
TuesPechkin Yaklaşımı:
// NuGet: Install-Package TuesPechkin
using TuesPechkin;
using System.IO;
class Program
{
static void Main()
{
var converter = new StandardConverter(
new RemotingToolset<PdfToolset>(
new Win64EmbeddedDeployment(
new TempFolderDeployment())));
string html = "<html><body><h1>Custom PDF</h1></body></html>";
var document = new HtmlToPdfDocument
{
GlobalSettings = {
Orientation = GlobalSettings.PdfOrientation.Landscape,
PaperSize = GlobalSettings.PdfPaperSize.A4,
Margins = new MarginSettings { Unit = Unit.Millimeters, Top = 10, Bottom = 10 }
},
Objects = {
new ObjectSettings { HtmlText = html }
}
};
byte[] pdfBytes = converter.Convert(document);
File.WriteAllBytes("custom.pdf", pdfBytes);
}
}
// NuGet: Install-Package TuesPechkin
using TuesPechkin;
using System.IO;
class Program
{
static void Main()
{
var converter = new StandardConverter(
new RemotingToolset<PdfToolset>(
new Win64EmbeddedDeployment(
new TempFolderDeployment())));
string html = "<html><body><h1>Custom PDF</h1></body></html>";
var document = new HtmlToPdfDocument
{
GlobalSettings = {
Orientation = GlobalSettings.PdfOrientation.Landscape,
PaperSize = GlobalSettings.PdfPaperSize.A4,
Margins = new MarginSettings { Unit = Unit.Millimeters, Top = 10, Bottom = 10 }
},
Objects = {
new ObjectSettings { HtmlText = html }
}
};
byte[] pdfBytes = converter.Convert(document);
File.WriteAllBytes("custom.pdf", pdfBytes);
}
}
Imports TuesPechkin
Imports System.IO
Module Program
Sub Main()
Dim converter = New StandardConverter(
New RemotingToolset(Of PdfToolset)(
New Win64EmbeddedDeployment(
New TempFolderDeployment())))
Dim html As String = "<html><body><h1>Custom PDF</h1></body></html>"
Dim document = New HtmlToPdfDocument With {
.GlobalSettings = New GlobalSettings With {
.Orientation = GlobalSettings.PdfOrientation.Landscape,
.PaperSize = GlobalSettings.PdfPaperSize.A4,
.Margins = New MarginSettings With {.Unit = Unit.Millimeters, .Top = 10, .Bottom = 10}
},
.Objects = {
New ObjectSettings With {.HtmlText = html}
}
}
Dim pdfBytes As Byte() = converter.Convert(document)
File.WriteAllBytes("custom.pdf", pdfBytes)
End Sub
End Module
IronPDF Yaklaşımı:
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Engines.Chrome;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 10;
renderer.RenderingOptions.MarginBottom = 10;
string html = "<html><body><h1>Custom PDF</h1></body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("custom.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Engines.Chrome;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 10;
renderer.RenderingOptions.MarginBottom = 10;
string html = "<html><body><h1>Custom PDF</h1></body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("custom.pdf");
}
}
Imports IronPdf
Imports IronPdf.Engines.Chrome
Imports System
Module Program
Sub Main()
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
renderer.RenderingOptions.MarginTop = 10
renderer.RenderingOptions.MarginBottom = 10
Dim html As String = "<html><body><h1>Custom PDF</h1></body></html>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("custom.pdf")
End Sub
End Module
TuesPechkin ayarlari, belge geneli ayarlari icin GlobalSettings ve içerik icin ObjectSettings olarak ayirir.IronPDFher seyi acik ve kesfi kolay özellik adlariyla RenderingOptions icine toplar.
TuesPechkin API ileIronPDFHaritalama Referansı
Bu eşleme, doğrudan API eşdeğerlerini göstererek geçişi hızlandırır.
| TuesPechkin | IronPDF |
|---|---|
StandardConverter |
ChromePdfRenderer |
ThreadSafeConverter |
ChromePdfRenderer |
HtmlToPdfDocument |
Yöntem parametreleri |
GlobalSettings |
RenderingOptions |
ObjectSettings.HtmlText |
RenderHtmlAsPdf(html) |
ObjectSettings.PageUrl |
RenderUrlAsPdf(url) |
GlobalSettings.PaperSize |
RenderingOptions.PaperSize |
GlobalSettings.Orientation |
RenderingOptions.PaperOrientation |
MarginSettings |
MarginTop, MarginBottom, vb. |
[page] placeholder |
{page} placeholder |
[toPage] placeholder |
{total-pages} placeholder |
RemotingToolset |
Gerekli değil |
Win64EmbeddedDeployment |
Gerekli değil |
TempFolderDeployment |
Gerekli değil |
Yaygın Taşınma Sorunları ve Çözümleri
Sorun 1: Karmaşık Başlatma Kodu
Problem: TuesPechkin, dağıtım araç setleri ile karmaşık dönüştürücü kurulumu gerektirir.
Çözüm:IronPDFbasittir:
// Before (TuesPechkin)
var converter = new StandardConverter(
new RemotingToolset<PdfToolset>(
new Win64EmbeddedDeployment(
new TempFolderDeployment())));
// After (IronPDF)
var renderer = new ChromePdfRenderer();
// That's it!
// Before (TuesPechkin)
var converter = new StandardConverter(
new RemotingToolset<PdfToolset>(
new Win64EmbeddedDeployment(
new TempFolderDeployment())));
// After (IronPDF)
var renderer = new ChromePdfRenderer();
// That's it!
' Before (TuesPechkin)
Dim converter = New StandardConverter(
New RemotingToolset(Of PdfToolset)(
New Win64EmbeddedDeployment(
New TempFolderDeployment())))
' After (IronPDF)
Dim renderer = New ChromePdfRenderer()
' That's it!
Sorun 2: İş Parası Güvenliği Çöküşleri
Sorun: TuesPechkin'in ThreadSafeConverter, AccessViolationException ile yuksek yuk altinda hala çöker.
Çözüm:IronPDFyerel iş parçacığı güvenliğine sahiptir—özel bir yapılandırma gerektirmez:
//IronPDFis inherently thread-safe
var renderer = new ChromePdfRenderer();
// Use from any thread without crashes
//IronPDFis inherently thread-safe
var renderer = new ChromePdfRenderer();
// Use from any thread without crashes
'IronPDF is inherently thread-safe
Dim renderer As New ChromePdfRenderer()
' Use from any thread without crashes
Sorun 3: Sayfa Numarası Placeholder Söz Dizimi
Sorun:TuesPechkin[page] ve [toPage] placeholder'lari kullanir.
Çözüm: IronPDF'nin placeholder söz dizimine güncelleyin:
// Before (TuesPechkin)
"Page [page] of [toPage]"
// After (IronPDF)
"Page {page} of {total-pages}"
// Before (TuesPechkin)
"Page [page] of [toPage]"
// After (IronPDF)
"Page {page} of {total-pages}"
Sorun 4: CSS Yerleşimi Bozuk
Problem: Flexbox ve Grid yerleşimleri, wkhtmltopdf Qt WebKit 4.8 kullandığı için TuesPechkin'de çalışmıyor.
Çözüm:IronPDFile uygun modern CSS kullanın:
// Remove table-based workarounds, use modern CSS
var html = @"
<div style='display: flex; justify-content: space-between;'>
<div>Left</div>
<div>Right</div>
</div>";
var pdf = renderer.RenderHtmlAsPdf(html);
// Works correctly with Chromium!
// Remove table-based workarounds, use modern CSS
var html = @"
<div style='display: flex; justify-content: space-between;'>
<div>Left</div>
<div>Right</div>
</div>";
var pdf = renderer.RenderHtmlAsPdf(html);
// Works correctly with Chromium!
' Remove table-based workarounds, use modern CSS
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 correctly with Chromium!
Sorun 5: Yerel İkili Yönetimi
Problem: TuesPechkin, platforma özgü wkhtmltopdf ikilileri ve yol yapılandırması gerektirir.
Çözüm:IronPDFtüm bağımlılıkları NuGet ile halleder—yönetilecek yerel ikililere gerek yoktur:
# Just install the package
dotnet add package IronPdf
# No wkhtmltopdf binaries needed
# Just install the package
dotnet add package IronPdf
# No wkhtmltopdf binaries needed
TuesPechkin Geçiş Kontrol Listesi
Ön Taşınma Görevleri
TümTuesPechkinkullanımını tanımlamak için kod tabanınızı denetleyin:
grep -r "using TuesPechkin" --include="*.cs" .
grep -r "ThreadSafeConverter\|RemotingToolset" --include="*.cs" .
grep -r "using TuesPechkin" --include="*.cs" .
grep -r "ThreadSafeConverter\|RemotingToolset" --include="*.cs" .
Gecerli GlobalSettings konfigürasyonlarini belgeler (kagit boyutu, yonlendirme, kenar bosluklari). ObjectSettings konfigürasyonlarini belgeler (HTML icerigi, URL'ler). Dönüşüm için başlık/altbilgi uygulamalarını belirleyin. Kaldırma için tüm wkhtmltopdf ikililerini bulun.
Kod Güncelleme Görevleri
1.TuesPechkinNuGet paketlerini kaldırın
- Yerel wkhtmltopdf ikililerini kaldırın
- IronPdf NuGet paketini yükleyin
TuesPechkin'danIronPdf'a using ifadelerini güncelleyin- Başlangıçta lisans anahtarı başlatma ekleyin
- Dönüştürücüleri
ChromePdfRendererile değiştirin GlobalSettings'yiRenderingOptions'a dönüştürünObjectSettings'yi metot parametrelerine dönüştürün- Kenar boşluğu yapılandırmasını bireysel özelliklere güncelleyin
- Baslik/altbilgi sentaksini HTML-tabanli
HtmlHeaderFooterolarak güncelleyin - Sayfa placeholder sentaks hatasini düzeltin (
[page]→{page}) - Tüm dağıtım/araç seti kodunu kaldırın
Taşınım Sonrası Test
Geçiş sonrasında aşağıdaki yönleri doğrulayın:
- Tüm birim testlerini çalıştırın
- İş parası güvenlikli senaryolarını test edin (IronPDF çoklu iş parçacığını çökmeden işler)
- PDF cikis kalitesini karsilastirin (Chromium daha dogru render eder)
- CSS renderingini doğrulayın (Flexbox ve Grid artık çalışır)
- JavaScript yürütmesini test edin (ES6+ artık destekleniyor)
- Başlık/altbilgi renderını test edin
- Performans testi toplu işlemlerini
- Hiçbir wkhtmltopdf ikilisi kalmadığını doğrulamak için güvenlik taraması yapın
IronPDF'e Geçişin Temel Avantajları
TuesPechkin'den IronPDF'ye geçiş, bir dizi kritik avantaj sağlar:
Güvenlik:CVE-2022-35583ve diğer wkhtmltopdf zafiyetleri ortadan kaldırılmıştır. IronPDF'in Chromium motoru düzenli güvenlik güncellemeleri alır.
Yerel Thread Guvenligi: Artık daha karmaşık ThreadSafeConverter konfigürasyonları yok. Yuk altinda daha fazla AccessViolationException çökmesi yok.IronPDFeşzamanlılığı otomatik olarak işler.
Modern Rendering Motoru: Tam CSS3, Flexbox, Grid ve ES6+ JavaScript desteği. PDF'leriniz, modern tarayıcılarda içerik olarak göründüğü gibi render edilir.
Basitleştirilmiş Dağıtım: Yönetilecek platforma özgü ikililer yok. Daha fazla RemotingToolset, Win64EmbeddedDeployment veya TempFolderDeployment seremonisi yok. Sadece NuGet paketini yükleyin.
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.
Genişletilmiş Yetenekler:TuesPechkinyalnızca HTML'den PDF'e dönüştürür. IronPDF, PDF manipülasyonu, dijital imzalar, PDF/A uyumluluk, form doldurma, filigranlar ve birleştirme/bölme işlemleri ekler.

