C#'ta TuesPechkin'den IronPDF'ye Nasıl Geçilir
TuesPechkin, wkhtmltopdf yerel ikilisinin etrafında iş parçacığı-güvenli bir sarmalayıcı olarak hizmet etti, yıllardır .NET geliştiricilerine HTML'yi PDF'ye dönüştürme konusunda yardımcı oldu. Bununla birlikte, altta yatan wkhtmltopdf projesi Ocak 2023'te GitHub'da arşivlendi ve dayandığı WebKit çatalı 2015 civarından kalmadır. Bu, gelişim takımlarının artık göz ardı edemediği güvenlik, istikrar ve işleme sınırlamaları yaratıyor.
Bu kılavuz, TuesPechkin'den IronPDF'ye tam bir geçiş yolu sunar, adım adım talimatlar, kod karşılaştırmaları ve bu geçişi değerlendiren profesyonel .NET geliştiriciler için pratik örneklerle.
TuesPechkin'den Neden Şimdi Geçin
TuesPechkin'den geçiş kararı, artık güvenlik bilincine sahip geliştirme ekipleri için isteğe bağlı değildir. Alttaki wkhtmltopdf kütüphanesi, asla düzeltilemeyecek olan kritik yamalanmamış güvenlik açıkları taşır.
Kritik Güvenlik Açığı: CVE-2022-35583
| Nitelik | Değer |
|---|---|
| CVE ID | CVE-2022-35583 |
| Ciddiyet | KRİTİK (9.8/10) |
| Saldırı Vektörü | Ağ |
| Durum | ASLA YAMALANMAYACAK |
| Etkilenen | TümTuesPechkinsürümleri |
Wkhtmltopdf'nin bakımcıları, güvenlik açıklarını DÜZELTMEMEYE karar verdiklerini açıkça belirttiler.TuesPechkinkullanan her uygulama, sunucu tarafı istek sahteciliği (SSRF) saldırılarına kalıcı olarak maruz kalır.
Saldırının Çalışma Şekli
Kullanıcıdan 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 meta veri uç noktalarına erişmesini, dahili API verilerini çalmalarını, dahili ağları port taramasını yapmasını ve hassas yapılandırmaları ele geçirmesini sağlar.
Teknoloji Krizi
TuesPechkin, Qt WebKit 4.8 kullanan wkhtmltopdf'yi sarmalıyor—eskimiş, Chrome öncesi dönem teknolojisi. Bu şu anlama gelir:
- Flexbox desteği yok
- CSS Grid desteği yok
- Kırık JavaScript çalışması
- ES6+ desteği yok
Kararlılık Krizi
Reklamı yapılan ThreadSafeConverter olmasına rağmen,TuesPechkinyüksek yük altında çöküyor:
// ❌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 vs 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, açık kaynak | Ticari |
| İş Parçacığı Güvenliği | Manuel Yönetim Gerektirir | Yerel Destek |
| Eşzamanlılık | Sınırlı, yük altında çökebilir | Sağlam, yüksek eşzamanlılığı işler |
| Geliştirme | Aktifsiz, en son güncellemeler 2015 | 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 | ✅ Bilinen güvenlik açığı yok |
| HTML'den PDF'ye | ⚠ Güncel olmayan WebKit | ✅ Modern Chromium |
| CSS3 | ❌ Kısmi | ✅ Desteklenir |
| Flexbox/Grid | ❌ Desteklenmiyor | ✅ Desteklenir |
| JavaScript | ⚠ Güvenilmez | ✅ Tam ES6+ |
| PDF Manipülasyonu | ❌ Mevcut değil | Tam ✅ |
| Dijital İmzalar | ❌ Mevcut değil | Tam ✅ |
| PDF/A Uyumlu | ❌ Mevcut değil | Tam ✅ |
| Form Doldurma | ❌ Mevcut değil | Tam ✅ |
| Filigranlar | ❌ Mevcut değil | Tam ✅ |
| Birleştirme/Bölme | ❌ Mevcut değil | Tam ✅ |
Hızlı Başlangıç: TuesPechkin'den IronPDF'ye Geçiş
Geçiş bu öncü adımlarla hemen başlayabilir.
Adım 1: NuGet Paketlerini Değiştirin
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
Adım 2: Yerel İkili Dosyaları Kaldırın
Projeden bu dosya ve klasörleri silin:
wkhtmltox.dllwkhtmltopdf.exe- Herhangi bir
wkhtmlto*dosyaları TuesPechkin.Wkhtmltoxklasörü
3. Adım: Namespace'leri Güncelleme
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
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
HTML'yi PDF'ye Dönüştürme
En yaygın kullanım durumu, 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 versiyonu, karmaşık bir başlatma zinciri ile bir StandardConverter oluşturulmasını gerektirir: RemotingToolset, Win64EmbeddedDeployment, ve TempFolderDeployment. Bunu da manuel olarak bir dosyaya bayt yazarak yapmalısınız.
IronPDF bu seremoniyi tamamen ortadan kaldırır. Bir ChromePdfRenderer oluşturun, HTML'i render edin ve kaydedin. Kod öz-belgelendiricidir ve dağıtım araç setleri ya da platforma özel ikili yönetimleri anlama gerektirmez.
İ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üşüm benzer karmaşıklık farkları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'i bir HtmlToPdfDocument içinde iç içe kullanır. IronPDF, niyeti açıkça ifade eden özel bir RenderUrlAsPdf yöntemi sağlar.
Kimlik doğrulama ve özel başlık seçenekleri için URL'den PDF'ye dokümantasyonu inceleyin.
Özel Renderlama Ayarları
Sayfa yönlendirmesi, kağıt boyutu ve marjlar gibi farklı yapılandırma yaklaşımları gerektirir.
TuesPechkin Yaklaşımı:
// NuGet: Install-Package TuesPechkin
// NuGet: Install-Package TuesPechkin.Wkhtmltox.Win64
using TuesPechkin;
using System.Drawing.Printing;
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.PaperOrientation.Landscape,
PaperSize = PaperKind.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
// NuGet: Install-Package TuesPechkin.Wkhtmltox.Win64
using TuesPechkin;
using System.Drawing.Printing;
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.PaperOrientation.Landscape,
PaperSize = PaperKind.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.Drawing.Printing
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.PaperOrientation.Landscape,
.PaperSize = PaperKind.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 ayarları, belge genelindeki seçenekler için GlobalSettings ve içerik için ObjectSettings olarak ayırır.IronPDF her şeyi, açık ve keşfedilebilir özellik adlarıyla RenderingOptions içinde birleştirir.
TuesPechkin API to IronPDF Haritalama Referansı
Bu eşleştirme, doğrudan API eşdeğerlerini göstererek geçişi hızlandırır:
| TuesPechkin | IronPDF |
|---|---|
StandardConverter |
ChromePdfRenderer |
ThreadSafeConverter |
ChromePdfRenderer |
HtmlToPdfDocument |
Metot parametreleri |
GlobalSettings |
RenderingOptions |
ObjectSettings.HtmlText |
RenderHtmlAsPdf(html) |
ObjectSettings.PageUrl |
RenderUrlAsPdf(url) |
GlobalSettings.PaperSize |
RenderingOptions.PaperSize |
GlobalSettings.Orientation |
RenderingOptions.PaperOrientation |
MarginSettings |
MarginTop, MarginBottom, vb. |
[page] yer tutucu |
{page} yer tutucu |
[topage] yer tutucu |
{total-pages} yer tutucu |
RemotingToolset |
Gerekli değil |
Win64EmbeddedDeployment |
Gerekli değil |
TempFolderDeployment |
Gerekli değil |
Yaygın Göç Sorunları ve Çözümleri
Sorun 1: Karmaşık Başlatma Kodu
Sorun: TuesPechkin, dağıtım araç setleri ile karmaşık dönüştürücü kurulumu gerektirir.
Çözüm:IronPDF basittir:
// 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: İş Parçacığı Güvenliği Çökmeleri
Problem: TuesPechkin'in ThreadSafeConverter, AccessViolationException ile yüksek yük altında hala çöküyor.
Çözüm: IronPDF'nin yerel iş parçacığı güvenliği vardır—özel yapılandırma gerekmez:
//IronPDF is inherently thread-safe
var renderer = new ChromePdfRenderer();
// Use from any thread without crashes
//IronPDF is 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ı Yer Tutucu Sözdizimi
Problem: TuesPechkin, [page] ve [topage] yer tutucuları kullanıyor.
Çözüm: IronPDF'nin yer tutucu sözdizimine 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}"
' Before (TuesPechkin)
"Page [page] of [topage]"
' After (IronPDF)
"Page {page} of {total-pages}"
Sorun 4: CSS Düzeni Bozulmuş
Sorun: wkhtmltopdf'nin Qt WebKit 4.8 kullandığı için Flexbox ve Grid düzenleri TuesPechkin'de çalışmıyor.
Çözüm: Uygun modern CSS'i IronPDF ile 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 Binary Yönetimi
Problem: TuesPechkin, platforma özgü wkhtmltopdf binary'leri ve yol ayarlarını gerektirir.
Çözüm:IronPDF tüm bağımlılıkları NuGet aracılığıyla yönetir—yönetilecek yerel binary yok:
# 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
Geçiş Öncesi Görevler
TuesPechkin kullanı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" .
Mevcut GlobalSettings yapılandırmalarını belgeleyin (kağıt boyutu, yön, kenar boşlukları). ObjectSettings yapılandırmalarını belgeleyin (HTML içeriği, URL'ler). Dönüşüm için başlık/altbilgi uygulamalarını tanımlayın. Kaldırılacak tüm wkhtmltopdf binary'lerini bulun.
Kod Güncelleme Görevleri
1.TuesPechkinNuGet paketlerini çıkarın
- Yerel wkhtmltopdf binary'lerini çıkarın 3.IronPDF NuGet paketini yükleyin
TuesPechkin'denIronPdf'e kadar 'using' ifadelerini güncelleyin- Başlangıçta lisans anahtarı başlatma ekleyin
- Dönüştürücüleri
ChromePdfRendererile değiştirin GlobalSettings'iRenderingOptions'e dönüştürünObjectSettings'ı yöntem parametrelerine dönüştürün- Kenar boşluğu yapılandırmasını bireysel özelliklere güncelleyin
- Üst bilgi/alt bilgi sözdizimini HTML tabanlı
HtmlHeaderFooterolarak güncelleyin - Sayfa yer tutucu sözdizimini düzeltin (
[page]→{page}) - Tüm dağıtım/araç seti kodunu çıkarın
Geçiş Sonrası Testler
Geçiş sonrasında bu yönleri doğrulayın:
- Tüm birim testlerini çalıştırın
- İplik güvenli senaryoları test edin (IronPDF, çoklu iş parçacıklı çalışmayı çarpışmasız olarak yönetir)
- PDF çıktı kalitesini karşılaştırın (Chromium daha doğru şekilde işler)
- CSS görüntülemeyi doğrulayın (Flexbox ve Grid şimdi çalışıyor)
- JavaScript yürütmeyi test edin (ES6+ şimdi destekleniyor)
- Başlık/altbilgi görüntülemeyi test edin
- Yığın işlemlerinin performansını test edin
- Hiçbir wkhtmltopdf binary'si kalmadığını doğrulamak için güvenlik taraması yapın
IronPDF'e Geçmenin Temel Faydaları
TuesPechkin'den IronPDF'e geçiş, birkaç önemli avantaj sağlar:
Güvenlik:CVE-2022-35583ve diğer wkhtmltopdf açıkları ortadan kaldırılır. IronPDF'in Chromium motoru düzenli güvenlik güncellemeleri alır.
Yerel İplik Güvenliği: Artık karmaşık ThreadSafeConverter yapılandırmaları yok. Artık yük altında AccessViolationException çökmesi yok. IronPDF, eşzamanlılığı otomatik olarak yönetir.
Modern Render Motoru: Tam CSS3, Flexbox, Grid ve ES6+ JavaScript desteği. PDF'leriniz modern tarayıcılarda içerik nasıl görünüyorsa o şekilde görüntülenir.
Basitleştirilmiş Dağıtım: Yönetilecek platforma özgü binary yok. Artık RemotingToolset, Win64EmbeddedDeployment veya TempFolderDeployment töreni yok. Sadece NuGet paketini yükleyin.
Aktif Geliştirme: IronPDF'nin düzenli güncellemeleri, mevcut ve yaklaşan .NET sürümleriyle uyumluluk sağlar.
Genişletilmiş Yetenekler:TuesPechkinsadece HTML'yi PDF'e dönüştürür. IronPDF, PDF manipülasyonu, dijital imzalar, PDF/A uyumluluğu, form doldurma, filigranlar ve birleştirme/bölme işlemleri ekler.

