IRONSOFTWAREHOME
VIDEOLAR

PDF Bütünlüğünü Nasıl Değiştiririz | IronPDF

Curtis Chau
Curtis Chau
Updated: 19 Temmuz 2026

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

NitelikDeğer
CVE IDCVE-2022-35583
CiddiyetKRİTİK (9.8/10)
Saldırı Vektörü
DurumASLA YAMALANMAYACAK
EtkilenenTü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:

<!-- Attacker submits this HTML to your PDF generator -->
<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" />
HTML

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

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:

ÖzellikTuesPechkinIronPDF
LisansÜcretsiz, açık kaynakTicari
İş Parçacığı GüvenliğiManuel Yönetim GerektirirYerel Destek
EşzamanlılıkSınırlı, yük altında çökebilirSağlam, yüksek eşzamanlılığı işler
GeliştirmeAktifsiz, en son güncellemeler 2015Aktif, sürekli iyileştirmeler
Kullanım KolaylığıKarmaşık kurulumKullanıcı dostu rehberlerle
DokümantasyonTemelÖ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ğilTam ✅
Dijital İmzalar❌ Mevcut değilTam ✅
PDF/A Uyumlu❌ Mevcut değilTam ✅
Form Doldurma❌ Mevcut değilTam ✅
Filigranlar❌ Mevcut değilTam ✅
Birleştirme/Bölme❌ Mevcut değilTam ✅

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
SHELL

IronPDF'i yükleyin:

# Install IronPDF
dotnet add package IronPdf
SHELL

Adım 2: Yerel İkili Dosyaları Kaldırın

Projeden bu dosya ve klasörleri silin:

  • wkhtmltox.dll
  • wkhtmltopdf.exe
  • Herhangi bir wkhtmlto* dosyaları
  • TuesPechkin.Wkhtmltox klasö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;

Adım 4: Lisansı Başlat

Uygulama başlangıcında lisans başlatmayı ekleyin:

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);
    }
}

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");
    }
}

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);
    }
}

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");
    }
}

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);
    }
}
C#

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");
    }
}

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:

TuesPechkinIronPDF
StandardConverterChromePdfRenderer
ThreadSafeConverterChromePdfRenderer
HtmlToPdfDocumentMetot parametreleri
GlobalSettingsRenderingOptions
ObjectSettings.HtmlTextRenderHtmlAsPdf(html)
ObjectSettings.PageUrlRenderUrlAsPdf(url)
GlobalSettings.PaperSizeRenderingOptions.PaperSize
GlobalSettings.OrientationRenderingOptions.PaperOrientation
MarginSettingsMarginTop, MarginBottom, vb.
[page] yer tutucu{page} yer tutucu
[topage] yer tutucu{total-pages} yer tutucu
RemotingToolsetGerekli değil
Win64EmbeddedDeploymentGerekli değil
TempFolderDeploymentGerekli 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!

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
C#

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}"

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!

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
SHELL

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" .
SHELL

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 2. Yerel wkhtmltopdf binary'lerini çıkarın 3.IronPDF NuGet paketini yükleyin 4. TuesPechkin'den IronPdf'e kadar 'using' ifadelerini güncelleyin 5. Başlangıçta lisans anahtarı başlatma ekleyin 6. Dönüştürücüleri ChromePdfRenderer ile değiştirin 7. GlobalSettings'i RenderingOptions'e dönüştürün 8. ObjectSettings'ı yöntem parametrelerine dönüştürün 9. Kenar boşluğu yapılandırmasını bireysel özelliklere güncelleyin 10. Üst bilgi/alt bilgi sözdizimini HTML tabanlı HtmlHeaderFooter olarak güncelleyin 11. Sayfa yer tutucu sözdizimini düzeltin ([page]{page}) 12. 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.

Lütfen dikkate alın: TuesPechkin ve wkhtmltopdf, ilgili sahiplerinin tescilli markalarıdır. Bu siteTuesPechkinveya wkhtmltopdf ile ilişkili, onaylanmış veya desteklenmiş değildir. Tüm ürün adları, logolar ve markalar kendi sahiplerine aittir. Karşılaştırmalar, yalnızca bilgilendirme amaçlıdır ve yazı sırasında halka açık bilgilerle alakalı olarak yansıtılmaktadır.
Curtis Chau
Teknik Yazar

Curtis Chau, Bilgisayar Bilimleri alanında Lisans Derecesine (Carleton Üniversitesi) sahip ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirmeyle ilgileniyor. Sezgisel ve estetik açıdan hoş kullanıcı arayüzleri oluşturma tutkunu, Curtis modern çerçevelerle çalışmayı ve iyi yapılandırılmış, görsel olarak çekici kılavuzlar oluşturmayı seviyor.

...
Daha Fazla Oku

İlgili Makaleler

Key in blue circle

Ücretsiz 30 günlük Deneme Anahtarınızı anında edinin.

Your trial license will be sent to your email address

Herhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.

bullet_checkedKredi kartı veya hesap oluşturma gerektirmezHerhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Ücretsiz Canlı Demo rezervasyonu yapın
Booking Badge

Dünya Çapında Milyonlarca Mühendisin Güvendiği

Iron Software müşteri logoları
Bağımsız Danışmanlık Alın
Aşağıdaki formu doldurun veya sales@ironsoftware.com adresine e-posta gönderin
Bilgileriniz daima gizli kalacaktır.
Dünya Çapında Milyonlarca Mühendisin Güvendiği
Iron Software müşteri logoları
Ücretsiz 30 Günlük Deneme Anahtarınızı anında alın.
Kredi kartı veya hesap oluşturma gerektirmez