Altbilgi içeriğine atla
GEçIş KıLAVUZLARı

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ü
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" />
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
// ❌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
$vbLabelText   $csharpLabel

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
SHELL

IronPDF'i yükleyin:

# Install IronPDF
dotnet add package IronPdf
# 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;
// Before (TuesPechkin)
using TuesPechkin;
using TuesPechkin.Wkhtmltox.Win64;

// After (IronPDF)
using IronPdf;
' Before (TuesPechkin)
Imports TuesPechkin
Imports TuesPechkin.Wkhtmltox.Win64

' After (IronPDF)
Imports IronPdf
$vbLabelText   $csharpLabel

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"
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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!
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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}"
$vbLabelText   $csharpLabel

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!
$vbLabelText   $csharpLabel

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

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

Daha Fazla Oku

Iron Destek Ekibi

Haftada 5 gün, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara