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

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

Haukcode.DinkToPdf, .NET uygulamaları için HTML'yi PDF'ye dönüştürmek amacıyla wkhtmltopdf ikili dosyasını saran ve bir zamanlar popüler olan DinkToPdf kütüphanesinin topluluk çatallamasıdır. Fork daha sonra Haukcode.WkHtmlToPdfDotNet olarak yeniden adlandırıldı ve en son yayın olan 1.5.95, 22 Ekim 2024'te LGPL-3.0-veya-daha-sonrası altında yayımlandı. Fork, orijinal DinkToPdf (1.0.8, 18 Nisan 2017) terk edildikten sonra NuGet üzerinde paketi canlı tutsa da, yine de ebeveyni ile aynı arşivlenmiş wkhtmltopdf ikili dosyasına bağlıdır. wkhtmltopdf/wkhtmltopdf deposu 2 Ocak 2023'te arşivlendi ve tüm wkhtmltopdf GitHub organizasyonu 10 Temmuz 2024'te arşivlendi, bu yüzden upstream sorunlar yamalanmayacak.

Bu kılavuz, .NET geliştiricileri için arşivlenmiş wkhtmltopdf ikili dosyasını kullanmayı bırakmayı düşünenler için Haukcode.DinkToPdf / Haukcode.WkHtmlToPdfDotNet'den IronPDF'e geçiş yolunu, adım adım talimatlar, kod karşılaştırmaları ve pratik örnekler içerir.

Güvenlik Danışmanlığı: CVE-2022-35583

Haukcode.DinkToPdf, üst akar wkhtmltopdf ikili dosyasına karşı yükseltilmiş bir güvenlik danışmanlığını devralır:

CVE-2022-35583 — wkhtmltopdf 0.12.6'ya karşı SSRF danışmanlığı

wkhtmltopdf 0.12.6'ya karşı bir Sunucu Tarafı İstek Köleliği danışmanlığı yayımlandı (NVD'de CVSS 9.8; üzerinde dikkat çeken wkhtmltopdf proje upstream'i bunu bir kütüphane hatası yerine uygulama tarafı giriş temizleme sorunu olarak görüyor). Her halükarda, yamalanacak — upstream arşivlendi. Halk tartışmasında işaret edilen tipik maruz kalma desenleri şunları içerir:

  • Saldırı Vektörü: Güvenilmeyen HTML içeriği, dönüştürme sırasında iç kaynakları almak için işleyicinin zorlandığı hususlara neden olabilir
  • AWS Metadata: http://169.254.169.254 istekleri, eğer renderer EC2 üzerinde çalışıyorsa örnek metadata döndürebilir
  • İç Ağ Erişimi: İç hizmetler, işleme sunucusundan erişilebilir olabilir
  • Local File Inclusion: file:// protokolü ile yerel dosyalar okunabilir olabilir

Yukarı akış yaması beklenmiyor — wkhtmltopdf deposu 2 Ocak 2023'te arşivlendi ve son sürüm (0.12.6) Haziran 2020'deydi.

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:

Aspekt Haukcode.DinkToPdf IronPDF
Motor Tabanı wkhtmltopdf (QtWebKit çatallaması, yaklaşık 2015) Modern Krom
Güvenlik Durumu CVE-2022-35583 danışmanlığı (yamalanmamış / tartışmalı upstream) Bilinen kritik CVE yoktur
Proje Durumu Topluluk forku; üst düzey wkhtmltopdf arşivlendi Aktif olarak sürdürülüyor
HTML5/CSS3 Modern Flexbox/Grid yok Tam CSS3
JavaScript Sınırlı, tutarsız Tam destek
Yerel İkili Dosyalar libwkhtmltox.dll/.so/.dylib platform başına Yönetilen NuGet paketi
İş Parçacığı Güvenliği SynchronizedConverter çağrıları serileştirir Tasarımı gereği iş parçacığı güvenli
Destek Topluluk Profesyonel destek
Güncellemeler Son sürüm çatalı 1.5.95 (22 Ekim 2024); üst düzey wkhtmltopdf 0.12.6 (Haziran 2020) Düzenli sürümler
Lisans LGPL-3.0-veya-daha sonra (çatal) / MIT (orijinal DinkToPdf) Ücretli deneme ile ticari

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

Geçiş bu öncü adımlarla hemen başlayabilir.

Adım 1: DinkToPdf ve Yerel Dosyaları Kaldır

Haukcode.DinkToPdf NuGet paketlerini kaldırın:

# 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 dosyaları silin:

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

Adım 2:IronPDF Yükleme

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

3. Adım: Namespace'leri Güncelleme

DinkToPdf ad alanlarını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

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

Temel HTML'den PDF'ye Dönüştürme

En temel işlem, bu .NET PDF kütüphaneleri arasındaki karmaşıklık farkını ortaya koymaktadır.

Haukcode.DinkToPdf Yaklaşımı:

// 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 GlobalSettings ve Objects ile bir HtmlToPdfDocument oluşturmayı, HtmlContent ile bir ObjectSettings eklemeyi, ham byte almak için converter.Convert() çağrısı yapmayı ve elle bir dosyaya File.WriteAllBytes() ile yazmayı gerektirir.

IronPDF bunu üç satıra indirger: bir ChromePdfRenderer oluştur, RenderHtmlAsPdf() çağrısı yap ve yerleşik SaveAs() metodunu kullan.

İ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üştürme, benzer model farklılıkları gösterir.

Haukcode.DinkToPdf Yaklaşımı:

// 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 oluşturma desenini kullanır. IronPDF, niyeti net bir şekilde ifade eden özel bir RenderUrlAsPdf() metodu sağlar.

Kimlik doğrulama ve özel başlık seçenekleri için URL'den PDF'ye dokümantasyonu inceleyin.

Özel Sayfa Ayarları

Yönlendirme, kağıt boyutu ve kenar boşluklarını yapılandırmak farklı yaklaşımlar gerektirir.

Haukcode.DinkToPdf Yaklaşımı:

// 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 nesnesi ile GlobalSettings içinde iç içe yerleştirir. IronPDF, PaperSize, PaperOrientation ve bireysel kenar boşluğu özellikleri gibi net isimlere sahip doğrudan RenderingOptions özellikleri sunar.

Haukcode.DinkToPdf API'den IronPDF'e Eşleme Referansı

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

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

Haukcode.DinkToPdf IronPDF
SynchronizedConverter ChromePdfRenderer
BasicConverter ChromePdfRenderer
PdfTools Yok
IConverter Yok

Belge Yapılandırma Eşleme

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

GlobalSettings Özellik Eşleme

GlobalSettings Özellik 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şleme

ObjectSettings Özellik IronPDF Eşdeğeri
HtmlContent İlk parametre RenderHtmlAsPdf()
Page (URL) renderer.RenderUrlAsPdf(url)
HeaderSettings.Right = "[page]" {page} HtmlHeader.HtmlFragment içinde

Yer Tutucu Sözdizimi Geçişi

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

Yaygın Göç Sorunları ve Çözümleri

Sorun 1: Singleton Gereksinimi

Haukcode.DinkToPdf: Yerel wkhtmltopdf ikili dosyası ile iplik güvenliği sorunları nedeniyle tek başına bir SynchronizedConverter gerektirir.

Çözüm: IronPDF'in ChromePdfRenderer'i tasarım gereği iplik güvenlidir—tek başına bir nesne gerektirmez:

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

Sorun 2: Yerel Dosya Bağımlılıkları

Haukcode.DinkToPdf: Platforma özgü yerel kütüphaneleri (libwkhtmltox.dll/so/dylib) gerektirir.

Çözüm: IronPDF, yerel dosya bağımlılıkları olmadan kendi kendine yeten bir yapıdır. Geçiş sonrası bu dosyaları silin:

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

Sorun 3: Dönüş Türü Farklılıkları

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

Çözüm: IronPDF, birden fazla çıktı seçeneği sunan 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

Sorun 4: Başlık/Altbilgi Yer Tutucu Sözdizimi

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

Çözüm: IronPDF'in süslü parantez yer tutucularına güncelleyin:

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

// After (IronPDF)
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
    HtmlFragment = "<span style='float:right'>Page {page} of {total-pages}</span>"
};
// Before (DinkToPdf)
HeaderSettings = { Right = "Page [page] of [toPage]" }

// After (IronPDF)
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
    HtmlFragment = "<span style='float:right'>Page {page} of {total-pages}</span>"
};
' Before (DinkToPdf)
HeaderSettings = New With {.Right = "Page [page] of [toPage]"}

' After (IronPDF)
renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter With {
    .HtmlFragment = "<span style='float:right'>Page {page} of {total-pages}</span>"
}
$vbLabelText   $csharpLabel

Haukcode.DinkToPdf Geçiş Kontrol Listesi

Geçiş Öncesi Görevler

Kod tabanınızı DinkToPdf kullanımını belirlemek için denetleyin:

# 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

Mevcut GlobalSettings ve ObjectSettings yapılandırmalarını belgeleyin. Kaldırılabilecek herhangi bir yerel kütüphane yükleme kodunu tespit edin.

Kod Güncelleme Görevleri

  1. DinkToPdf NuGet paketlerini kaldırın 2.IronPDF NuGet paketini yükleyin
  2. Namespace eklemelerini DinkToPdf'dan IronPdf'ya güncelle
  3. SynchronizedConverter'yi ChromePdfRenderer ile değiştirin
  4. HtmlToPdfDocument desenlerini doğrudan metod çağrılarına dönüştürün
  5. GlobalSettings'yi RenderingOptions'ya dönüştürün
  6. ObjectSettings'yi RenderingOptions'ya dönüştürün
  7. Yer tutucu sözdizimini güncelle ([page]{page}, [toPage]{total-pages}) 9.IronPDF lisans başlatmasını başlatma sırasında ekleyin

Altyapı Temizlik Görevleri

  1. Yerel dosyaları silin (libwkhtmltox.*)
  2. Yerel kütüphane yükleme kodunu kaldırın
  3. ÖzelleştirilmişAssemblyLoadContext'i kaldırın, eğer mevcutsa
  4. Bağımlılık Enjeksiyonunu güncelleyin (tekil artık gerekmez)
  5. Yerel dosyalar için platform algılama kodunu kaldırın

Geçiş Sonrası Testler

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

  • HTML'den PDF'e dönüştürmeyi test edin
  • URL'den PDF'e dönüştürmeyi test edin
  • Sayfa ayarlarını doğrulayın (boyut, yönlendirme, kenar boşlukları)
  • Yer tutucularla birlikte başlıkları ve altbilgileri doğrulayın
  • Gerçek HTML şablonlarıyla test yapın
  • Yük altında performans testi yapın

IronPDF'e Geçmenin Temel Faydaları

Haukcode.DinkToPdf'den IronPDF'e geçiş, birkaç kritik avantaj sağlar:

Güvenlik: Asla yamalanmayacak CVE-2022-35583 (SSRF) ve diğer wkhtmltopdf güvenlik açıklarını ortadan kaldırır.

Modern Rendering Motoru: 2015'ten kalma bırakılmış Qt WebKit yerine aktif olarak güncellenen Chromium'u kullanır. Tam HTML5, CSS3 ve JavaScript desteği.

Yerel Dosya Yok: Yönetilecek platforma özgü DLL'ler olmadan kendi kendine yeten bir kütüphane. Windows, Linux ve macOS genelinde dağıtımı kolaylaştırır.

İplik Güvenliği: Tek başına nesne gereksinimi yok—herhangi bir modelde, istek başına örneklenmeyi de içeren, ChromePdfRenderer'u özgürce kullanın.

Basit API: Karmaşık belge nesnesi oluşturma yerine doğrudan metod çağrıları (RenderHtmlAsPdf(), RenderUrlAsPdf()).

Aktif Geliştirme: IronPDF'nin düzenli sürüm sıklığı, .NET Framework 4.6.2+, .NET Core 3.1+ ve .NET 5/6/7/8/9/10 dahil olmak üzere mevcut .NET sürümleriyle uyumlu tutar.

Lütfen dikkate alınDinkToPdf, Haukcode.DinkToPdf, Haukcode.WkHtmlToPdfDotNet ve wkhtmltopdf kendi sahiplerinin ticari markaları veya ürün adlarıdır. Bu site, bu projelerden herhangi biri ile ilişkili değildir, onaylanmamıştır veya sponsoru 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