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

Haukcode.DinkToPdf'ten IronPDF'e Geçiş

Haukcode.DinkToPdf, bir zamanlar popüler olan DinkToPdf kütüphanesinin bir devamıdır ve .NET uygulamaları için HTML'yi PDF'e dönüştürmek için wkhtmltopdf çözümünü kullanır. Her ne kadar Haukcode.DinkToPdf, orijinal proje duraksadıktan sonra .NET Core ile uyum sağladıysa da, yukarı akış bağımlılığından kaynaklanan önemli güvenlik sorunlarını taşır. Wkhtmltopdf projesi Ocak 2023'te arşivlendi, bu nedenle bu sorunlar hiçbir zaman çözülemeyecek.

Bu kılavuz, profesyonel .NET geliştiricilerin PDF oluşturma iş akışlarındaki güvenlik risklerini kaldırmayı amaçlayan Haukcode.DinkToPdf'den IronPDF'e kapsamlı bir geçiş yolu sunar, adım adım talimatlar, kod karşılaştırmaları ve pratik örnekler içerir.

Kritik Güvenlik Uyarısı: CVE-2022-35583

Haukcode.DinkToPdf, wkhtmltopdf'den adreslenemeyen büyük bir güvenlik açığını devralır.

CVE-2022-35583 - Kritik SSRF Açığı (CVSS 9.8)

Wkhtmltopdf kütüphanesi (ve Haukcode.DinkToPdf dahil tüm sarmalayıcılar), Sunucu Tarafı İstek Sahtekarlığı (SSRF) saldırılarına açıktır.

Saldırı Vektörü: Kötü amaçlı HTML içeriği, sunucunun dahili kaynakları almasını sağlayabilir

  • AWS Metadata Attack: AWS kimlik bilgilerini çalmak için http://169.254.169.254'a erişebilir Dahili Ağ Erişimi: Dahili hizmetleri tarayabilir ve erişebilir
  • Local File Inclusion: file:// protokolü aracılığıyla yerel dosyaları okuyabilir Etkisi: Tüm altyapının ele geçirilmesi mümkün

Bu açığın bir düzeltmesi yoktur çünkü wkhtmltopdf 2023'te terk edildi ve arşivlendi. Son sürüm 2020'de 0.12.6 versiyonuydu.

IronPDF vs Haukcode.DinkToPdf: Özellik Karşılaştırması

Mimari farklılıkları anlamak, teknik karar vericilerin geçiş yatırımını değerlendirmesine yardımcı olur:

Bağlam Haukcode.DinkToPdf IronPDF
Temel Motor wkhtmltopdf (Qt WebKit ~2015) Chromium (düzenli olarak güncelleniyor)
Güvenlik Durumu CVE-2022-35583 (KRİTİK, düzeltilemez) Aktif olarak yamalanıyor
Proje Durumu Terk edilmiş projenin çatallanması Aktif olarak geliştiriliyor
HTML5/CSS3 Sınırlı Desteklenir
JavaScript Sınırlı, güvensiz Tam V8 motor
Yerel İkili Dosyalar Gerekli (platforma özgü) Kendisi yeterli
İplik Güvenliği Tekillik deseni gerekir Tasarımı itibarıyla iplik güvenli
Destek Sadece topluluk Profesyonel destek
Güncellemeler Beklenen yok Düzenli sürümler
Lisans MIT (Ücretsiz) Ücretsiz deneme ile ticari

Hızlı Başlangıç: Haukcode.DinkToPdf'den IronPDF'e Geçiş

Geçiş hemen bu temel adımlar ile başlatılabilir.

Adım 1: DinkToPdf ve Yerel Çözümlemeleri Kaldırma

Haukcode.DinkToPdf NuGet paketlerini kaldirin:

# Remove NuGet packages
dotnet remove package DinkToPdf
dotnet remove package Haukcode.DinkToPdf
dotnet remove package Haukcode.WkHtmlToPdf-DotNet
# Remove NuGet packages
dotnet remove package DinkToPdf
dotnet remove package Haukcode.DinkToPdf
dotnet remove package Haukcode.WkHtmlToPdf-DotNet
SHELL

Projenizden yerel ikili dosyalari silin:

  • libwkhtmltox.dll (Windows)
  • libwkhtmltox.so (Linux)
  • libwkhtmltox.dylib (macOS)

Adım 2: IronPDF'i Kurun

# Install IronPDF
dotnet add package IronPdf
# Install IronPDF
dotnet add package IronPdf
SHELL

Adım 3: Adalanları Güncelleyin

DinkToPdf ad alanlarini IronPdf ile değiştirin:

// Before (Haukcode.DinkToPdf)
using DinkToPdf;
using DinkToPdf.Contracts;

// After (IronPDF)
using IronPdf;
using IronPdf.Rendering;  // For RenderingOptions
// Before (Haukcode.DinkToPdf)
using DinkToPdf;
using DinkToPdf.Contracts;

// After (IronPDF)
using IronPdf;
using IronPdf.Rendering;  // For RenderingOptions
Imports IronPdf
Imports IronPdf.Rendering
$vbLabelText   $csharpLabel

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

Kod Geçiş Örnekleri

Temel HTML'den PDF'ye Dönüşüm

En temel işlem, bu .NET PDF kutuphaneleri arasindaki karmasiklik farkini ortaya koyar.

Haukcode.DinkToPdf Yaklasimi:

// 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 = "<html><body><h1>Hello World</h1></body></html>",
                }
            }
        };

        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 = "<html><body><h1>Hello World</h1></body></html>",
                }
            }
        };

        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 List(Of ObjectSettings) From {
                New ObjectSettings() With {
                    .HtmlContent = "<html><body><h1>Hello World</h1></body></html>"
                }
            }
        }

        Dim pdf As Byte() = converter.Convert(doc)
        File.WriteAllBytes("output.pdf", pdf)
    End Sub
End Module
$vbLabelText   $csharpLabel

IronPDF Yaklaşımı:

// NuGet: Install-Package IronPdf
using IronPdf;
using System.IO;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

        var pdf = renderer.RenderHtmlAsPdf("<html><body><h1>Hello World</h1></body></html>");

        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System.IO;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

        var pdf = renderer.RenderHtmlAsPdf("<html><body><h1>Hello World</h1></body></html>");

        pdf.SaveAs("output.pdf");
    }
}
Imports IronPdf
Imports System.IO

Class Program
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()

        Dim pdf = renderer.RenderHtmlAsPdf("<html><body><h1>Hello World</h1></body></html>")

        pdf.SaveAs("output.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

Haukcode.DinkToPdf, PdfTools ile bir SynchronizedConverter oluşturmayı, iç içe geçmiş GlobalSettings ve Objects ile bir HtmlToPdfDocument oluşturmayı, HtmlContent ile bir ObjectSettings eklemeyi, ham baytları almak için converter.Convert()'ı çağırmayı ve File.WriteAllBytes() ile dosyaya manuel olarak yazmayı gerektirir.

IronPDF, bunu üç satıra basitleştirir: bir ChromePdfRenderer oluşturun, RenderHtmlAsPdf()'ı çağırın ve yerleşik SaveAs() metodunu kullanın.

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'ye donusumde benzer kalip farklari gorunur.

Haukcode.DinkToPdf Yaklasimi:

// 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
$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

Haukcode.DinkToPdf, URL'ler için ObjectSettings.Page ile aynı belge yapım modelini kullanır. IronPDF, niyeti açıkça ifade eden özel bir RenderUrlAsPdf() yöntemi sağlar.

Kimlik doğrulama ve ozellestirilmis baslik seçenekleri icin URL'den PDF'ye dokümantasyonu kesfedin.

Ozellestirilmis Sayfa Ayarlari

Yonlendirme, kagit boyutu ve kenar boşluklarini ayarlamak baska yaklasimlar gerektirir.

Haukcode.DinkToPdf Yaklasimi:

// 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.Letter,
                Margins = new MarginSettings() { Top = 10, Bottom = 10, Left = 10, Right = 10 }
            },
            Objects = {
                new ObjectSettings() {
                    HtmlContent = "<html><body><h1>Landscape Document</h1><p>Custom page settings</p></body></html>",
                }
            }
        };

        byte[] pdf = converter.Convert(doc);
        File.WriteAllBytes("landscape.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.Letter,
                Margins = new MarginSettings() { Top = 10, Bottom = 10, Left = 10, Right = 10 }
            },
            Objects = {
                new ObjectSettings() {
                    HtmlContent = "<html><body><h1>Landscape Document</h1><p>Custom page settings</p></body></html>",
                }
            }
        };

        byte[] pdf = converter.Convert(doc);
        File.WriteAllBytes("landscape.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.Letter,
                .Margins = New MarginSettings() With {.Top = 10, .Bottom = 10, .Left = 10, .Right = 10}
            },
            .Objects = {
                New ObjectSettings() With {
                    .HtmlContent = "<html><body><h1>Landscape Document</h1><p>Custom page settings</p></body></html>"
                }
            }
        }

        Dim pdf As Byte() = converter.Convert(doc)
        File.WriteAllBytes("landscape.pdf", pdf)
    End Sub
End Module
$vbLabelText   $csharpLabel

IronPDF Yaklaşımı:

// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

        renderer.RenderingOptions.PaperSize = PdfPaperSize.Letter;
        renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
        renderer.RenderingOptions.MarginTop = 10;
        renderer.RenderingOptions.MarginBottom = 10;
        renderer.RenderingOptions.MarginLeft = 10;
        renderer.RenderingOptions.MarginRight = 10;

        var pdf = renderer.RenderHtmlAsPdf("<html><body><h1>Landscape Document</h1><p>Custom page settings</p></body></html>");

        pdf.SaveAs("landscape.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

        renderer.RenderingOptions.PaperSize = PdfPaperSize.Letter;
        renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
        renderer.RenderingOptions.MarginTop = 10;
        renderer.RenderingOptions.MarginBottom = 10;
        renderer.RenderingOptions.MarginLeft = 10;
        renderer.RenderingOptions.MarginRight = 10;

        var pdf = renderer.RenderHtmlAsPdf("<html><body><h1>Landscape Document</h1><p>Custom page settings</p></body></html>");

        pdf.SaveAs("landscape.pdf");
    }
}
Imports IronPdf
Imports IronPdf.Rendering

Class Program
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()

        renderer.RenderingOptions.PaperSize = PdfPaperSize.Letter
        renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape
        renderer.RenderingOptions.MarginTop = 10
        renderer.RenderingOptions.MarginBottom = 10
        renderer.RenderingOptions.MarginLeft = 10
        renderer.RenderingOptions.MarginRight = 10

        Dim pdf = renderer.RenderHtmlAsPdf("<html><body><h1>Landscape Document</h1><p>Custom page settings</p></body></html>")

        pdf.SaveAs("landscape.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

Haukcode.DinkToPdf, ayarları ayrı bir MarginSettings nesnesiyle GlobalSettings içine yerleştirir. IronPDF, PaperSize, PaperOrientation ve bireysel kenar boşlukları gibi açık adlara sahip doğrudan RenderingOptions özellikleri sağlar.

Haukcode.DinkToPdf API'siniIronPDFile Eslestirme Referansi

Bu eşleme, doğrudan API eşdeğerlerini göstererek geçişi hızlandırır.

Dönüştürücü Sınıf Eşlemesi

Haukcode.DinkToPdf IronPDF
SynchronizedConverter ChromePdfRenderer
BasicConverter ChromePdfRenderer
PdfTools N/A
IConverter N/A

Belge Yapılandırma Eşlemesi

Haukcode.DinkToPdf IronPDF
HtmlToPdfDocument Yöntem çağrısı
GlobalSettings RenderingOptions
ObjectSettings RenderingOptions
converter.Convert(doc) renderer.RenderHtmlAsPdf(html)

GlobalSettings Özellik Eşlemesi

GlobalSettings Özelliği IronPDF Özelliği
ColorMode RenderingOptions.GrayScale
Orientation RenderingOptions.PaperOrientation
PaperSize RenderingOptions.PaperSize
Margins.Top RenderingOptions.MarginTop
Margins.Bottom RenderingOptions.MarginBottom
Margins.Left RenderingOptions.MarginLeft
Margins.Right RenderingOptions.MarginRight

ObjectSettings Özellik Eşlemesi

ObjectSettings Özelliği IronPDF Eşdeğeri
HtmlContent İlk parametre RenderHtmlAsPdf()'e
Page (URL) renderer.RenderUrlAsPdf(url)
HeaderSettings.Right = "[page]" TextHeader.RightText = "{page}"

Yer Tutucu Söz Dizimi Goc Yolu

Haukcode.DinkToPdf IronPDF
[page] {page}
[toPage] {total-pages}
[date] {date}

Yaygın Taşınma Sorunları ve Çözümleri

Durum 1: Singleton Gereksinimi

Haukcode.DinkToPdf: Yerel wkhtmltopdf binary'siyle ilgili iş parçacığı güvenliği sorunları nedeniyle tekil bir SynchronizedConverter gerektirir.

Çözüm: IronPDF'nin ChromePdfRenderer tasarım olarak iş parçacığı güvenliğindedir—tekil bir yapı gerekmez:

// Before (DinkToPdf) - MUST be singleton
services.AddSingleton(typeof(IConverter), new SynchronizedConverter(new PdfTools()));

// After (IronPDF) - Can be singleton or transient (both work)
services.AddSingleton<IPdfService, IronPdfService>();
// Or services.AddTransient<IPdfService, IronPdfService>() - both are safe!
// Before (DinkToPdf) - MUST be singleton
services.AddSingleton(typeof(IConverter), new SynchronizedConverter(new PdfTools()));

// After (IronPDF) - Can be singleton or transient (both work)
services.AddSingleton<IPdfService, IronPdfService>();
// Or services.AddTransient<IPdfService, IronPdfService>() - both are safe!
' Before (DinkToPdf) - MUST be singleton
services.AddSingleton(GetType(IConverter), New SynchronizedConverter(New PdfTools()))

' After (IronPDF) - Can be singleton or transient (both work)
services.AddSingleton(Of IPdfService, IronPdfService)()
' Or services.AddTransient(Of IPdfService, IronPdfService)() - both are safe!
$vbLabelText   $csharpLabel

Durum 2: Yerel Ikili Bagimliliklari

Haukcode.DinkToPdf: Platforma ozel doğal kutuphaneler (libwkhtmltox.dll/so/dylib) gerektirir.

Cozum: IronPDF, yerel ikili bagimliliklarla sınırlı olmayan kendi basina yeterli bir pakettir. Gectikten sonra bu dosyalari silin:

  • libwkhtmltox.dll (Windows)
  • libwkhtmltox.so (Linux)
  • libwkhtmltox.dylib (macOS)

Durum 3: Geri Donus Tipi Farklari

Haukcode.DinkToPdf: converter.Convert() doğrudan byte[] döndürür.

Çözüm: IronPDF, birden fazla çıkış seçeneğiyle birlikte bir PdfDocument nesnesi döndürür:

var pdf = renderer.RenderHtmlAsPdf(html);
byte[] bytes = pdf.BinaryData;  // Get bytes
pdf.SaveAs("output.pdf");       // Or save directly
var pdf = renderer.RenderHtmlAsPdf(html);
byte[] bytes = pdf.BinaryData;  // Get bytes
pdf.SaveAs("output.pdf");       // Or save directly
Dim pdf = renderer.RenderHtmlAsPdf(html)
Dim bytes As Byte() = pdf.BinaryData  ' Get bytes
pdf.SaveAs("output.pdf")  ' Or save directly
$vbLabelText   $csharpLabel

Durum 4: Baslik/Ayah Yeri Tutucu Soz Dizimi

Haukcode.DinkToPdf: [page] ve [toPage] gibi köşeli parantez söz dizimini kullanır.

Cozum: IronPDF'nin suslü parantez yeri tutucularina güncelleyin:

// Before (DinkToPdf)
HeaderSettings = { Right = "Page [page] of [toPage]" }

// After (IronPDF)
renderer.RenderingOptions.TextHeader = new TextHeaderFooter
{
    RightText = "Page {page} of {total-pages}"
};
// Before (DinkToPdf)
HeaderSettings = { Right = "Page [page] of [toPage]" }

// After (IronPDF)
renderer.RenderingOptions.TextHeader = new TextHeaderFooter
{
    RightText = "Page {page} of {total-pages}"
};
' Before (DinkToPdf)
HeaderSettings = New With {.Right = "Page [page] of [toPage]"}

' After (IronPDF)
renderer.RenderingOptions.TextHeader = New TextHeaderFooter With {
    .RightText = "Page {page} of {total-pages}"
}
$vbLabelText   $csharpLabel

Haukcode.DinkToPdf Goc Kontrol Listesi

Ön Taşınma Görevleri

Kod tabaninizi DinkToPdf kullanimini tespit etmek icin kontrol edin:

# Find DinkToPdf namespace usage
grep -r "using DinkToPdf\|using Haukcode" --include="*.cs" .

# Find converter usage
grep -r "SynchronizedConverter\|BasicConverter\|HtmlToPdfDocument" --include="*.cs" .

# Find native library loading
grep -r "wkhtmltopdf\|libwkhtmltox" --include="*.cs" --include="*.csproj" .

# Find GlobalSettings/ObjectSettings usage
grep -r "GlobalSettings\|ObjectSettings\|MarginSettings" --include="*.cs" .
# Find DinkToPdf namespace usage
grep -r "using DinkToPdf\|using Haukcode" --include="*.cs" .

# Find converter usage
grep -r "SynchronizedConverter\|BasicConverter\|HtmlToPdfDocument" --include="*.cs" .

# Find native library loading
grep -r "wkhtmltopdf\|libwkhtmltox" --include="*.cs" --include="*.csproj" .

# Find GlobalSettings/ObjectSettings usage
grep -r "GlobalSettings\|ObjectSettings\|MarginSettings" --include="*.cs" .
SHELL

Geçerli GlobalSettings ve ObjectSettings yapılandırmalarını belgeleyin. Silinebilecek herhangi bir yerel kutuphane yukleme kodunu tanimlayin.

Kod Güncelleme Görevleri

  1. DinkToPdf NuGet paketlerini kaldirin
  2. IronPdf NuGet paketini kurun
  3. DinkToPdf'dan IronPdf'ya ad alanı içe aktarmalarını güncelleyin
  4. SynchronizedConverter'i ChromePdfRenderer ile değiştirin
  5. HtmlToPdfDocument kalıplarını doğrudan yöntem çağrılarına dönüştürün
  6. GlobalSettingsRenderingOptions'a dönüştürün
  7. ObjectSettings'yı RenderingOptions'e dönüştürün
  8. Yer tutucu söz dizimini güncelleyin ([page]{page}, [toPage]{total-pages})
  9. BaşlangictaIronPDFlisans başlatmasi ekleyin

Altyapi Temizleme Gorevleri

  1. Yerel ikili dosyalari silin (libwkhtmltox.*)
  2. Yerel kutuphane yukleme kodunu kaldirin
  3. Var ise CustomAssemblyLoadContext'i kaldırin
  4. Bagimlilik Enjeksiyonunu güncelleyin (singleton artik gerekmez)
  5. Yerel ikili dosyalar icin platform algilama kodunu kaldirin

Taşınım Sonrası Test

Geçiş sonrasında aşağıdaki yönleri doğrulayın:

  • HTML'den PDF'ye donusumu test edin
  • URL'den PDF'ye donusumu test edin
  • Sayfa ayarlarini dogrulayin (boyut, yonlendirme, kenar boşluklari)
  • Yeri tutucular ile baslik ve alt bilgileri dogrulayin
  • Gerçek HTML şablonlari ile test edin
  • Yuk altinda performans testi yapin

IronPDF'e Geçişin Temel Avantajları

Haukcode.DinkToPdf'den IronPDF'ye gecis birkaç kritik avantaj saglar:

Guvenlik: Asla yamalanmayacak SSRF (CVE-2022-35583) ve diğer wkhtmltopdf güvenlik açiklarini giderir.

Modern Yorumlama Motoru: 2015'ten beri terkedilmis Qt WebKit yerine aktif olarak güncellenen Chromium kullanir. Tam HTML5, CSS3 ve JavaScript destegi.

Yerel Ikili Dosya Yok: Yönetilecek platforma özgü DLL'ler olmadan kendi basina yetkin kutuphane. Windows, Linux ve macOS'ta dağıtimi basitlestirir.

İş Parçacığı Güvenliği: Tekil gerekliliği yok—ChromePdfRenderer'ı herhangi bir desen içinde özgürce kullanın, talepler gereğince anında örnekleme dahil.

Daha Basit API: Karmaşık belge nesnesi yapımı yerine doğrudan yöntem çağrıları (RenderHtmlAsPdf(), RenderUrlAsPdf()).

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.

Curtis Chau
Teknik Yazar

Curtis Chau, Bilgisayar Bilimleri alanında lisans derecesine sahiptir (Carleton Üniversitesi) ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirme üzerine uzmanlaşmıştır. Kullanıcı dostu ve estetik açıdan hoş arayüzler tasarlamaya tutkuyla bağlı olan Curtis, modern çerç...

Daha Fazlasını Oku

Iron Destek Ekibi

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