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

DinkToPdf'ten IronPDF'e C# ile Nasıl Geçilir

DinkToPdf, wkhtmltopdf'yi sardığında, tüm güvenlik açıkları ve teknik sınırlamalarını miras alır. Bu sorunları anlamak, geçiş aciliyetini değerlendirmek için kritiktir.

Kritik Güvenlik Sorunları

DinkToPdf, wkhtmltopdf'den yamalanmamış güvenlik danışmanlıklarını devralır:

  1. CVE-2022-35583 (SSRF): wkhtmltopdf 0.12.6'ya karşı bir Sunucu Tarafı İstek Sahteciliği tavsiyesi (NVD'de CVSS 9.8; ana proje tarafından bir kütüphane hatası yerine bir uygulama tarafı girdi temizleme sorunu olarak tartışılmaktadır). Her ne olursa olsun, yamalanmayacaktır.
  2. Arşivlenmiş Proje: wkhtmltopdf/wkhtmltopdf deposu 2 Ocak 2023 tarihinde arşivlendi ve tüm wkhtmltopdf GitHub organizasyonu 10 Temmuz 2024 tarihinde arşivlendi.
  3. Gelecek Güvenlik Yamaları Yok: Bilinen veya gelecekteki güvenlik açıkları yukarı akışta düzeltilmeyecektir.

Teknik Sorunlar

Issue Etki
İş Parçacığı Güvenliği BasicConverter sadece tek iş parçacıklı; SynchronizedConverter çağrıları sıraya koyar ve yük altında hala yerel tarafta çökebilir
Yerel İkili Dosyalar Platforma özel libwkhtmltox ikili dosyaları ile karmaşık dağıtım
CSS Sınırlamaları Eski QtWebKit dalı — modernFlexbox/Gridlayout desteği yok
JavaScript Tutarsız yürütme, süre aşımları
İşleme Eskimiş QtWebKit tabanlı motor (wkhtmltopdf 0.12.6, son sürüm Haziran 2020)
Bakım DinkToPdf 1.0.8 son olarak 18 Nisan 2017'de NuGet'te yayımlandı

Mimari̇ Karşılaştırma

Aspekt DinkToPdf IronPDF
Güvenlik CVE-2022-35583 (SSRF), yamanmamış / üst kaynakta tartışılan Bilinen kritik CVE yoktur
Render Motoru Eski QtWebKit dalı (wkhtmltopdf 0.12.6) Modern Krom
İş Parçacığı Güvenliği SynchronizedConverter çağrıları sıraya koyar; native-side crashes reported under load Tasarımı gereği iş parçacığı güvenli
Yerel Bağımlılıklar Platforma özel libwkhtmltox ikili dosyaları Yönetilen NuGet paketi
CSS Desteği ModernFlexbox/Gridyok Tam CSS3
JavaScript Sınırlı, tutarsız Desteklenen
Bakım DinkToPdf son sürüm Nisan 2017; wkhtmltopdf org Temmuz 2024'te arşivlendi Aktif olarak sürdürülüyor

Özellik Karşılaştırması

Özellik DinkToPdf IronPDF
HTML'den PDF'ye ✅ (güncel olmayan motor) ✅ (Chromium)
URL'yi PDF'ye çevir
Özel kenar boşlukları
Başlıklar/Altbilgiler ✅ (sınırlı) ✅ (tam HTML)
CSS3 ❌ Sınırlı Tam ✅
Flexbox/Grid
JavaScript ⚠ Sınırlı Tam ✅
PDF işleme
Form doldurma
Dijital imzalar
Şifreleme
Filigranlar
Birleştirme/Bölme

Migration'a Ön Hazırlık

Ön Koşullar

Ortamınızın bu gereksinimleri karşıladığından emin olun:

  • .NET Framework 4.6.2+, .NET Core 3.1+, or .NET 5/6/7/8/9/10
  • Visual Studio 2019+ veya C# eklentisi ile VS Code
  • NuGet Package Manager erişimi -IronPDF lisans anahtarı (ücretsiz deneme sürümü ironpdf.com adresinde mevcut)

DinkToPdfKullanımını Denetle

TümDinkToPdfreferanslarını belirlemek için bu komutları çözüm dizininde çalıştırın:

# Find allDinkToPdfusages in your codebase
grep -r "using DinkToPdf" --include="*.cs" .
grep -r "SynchronizedConverter\|HtmlToPdfDocument\|ObjectSettings" --include="*.cs" .

# Find NuGet package references
grep -r "DinkToPdf" --include="*.csproj" .

# Find wkhtmltopdf binaries
find . -name "libwkhtmltox*"
# Find allDinkToPdfusages in your codebase
grep -r "using DinkToPdf" --include="*.cs" .
grep -r "SynchronizedConverter\|HtmlToPdfDocument\|ObjectSettings" --include="*.cs" .

# Find NuGet package references
grep -r "DinkToPdf" --include="*.csproj" .

# Find wkhtmltopdf binaries
find . -name "libwkhtmltox*"
SHELL

Beklenebilecek Kırıcı Değişiklikler

Değişim DinkToPdf IronPDF Etki
Dönüştürücü SynchronizedConverter(new PdfTools()) ChromePdfRenderer Daha basit başlatma
Belge HtmlToPdfDocument Doğrudan metod çağrısı Belge nesnesi yok
Ayarlar GlobalSettings + ObjectSettings RenderingOptions Tek seçenekler nesnesi
Dönüş tipi byte[] PdfDocument Daha güçlü nesne
İkili libwkhtmltox.dll/so Yok (yönetilen) Yerel dosyaları kaldırın
Thread güvenliği BasicConverter tek iş parçacıklı; SynchronizedConverter çağrıları sıraya koyar Varsayılan olarak parlak iplik Daha basit kod
DI Singleton gerekli Herhangi bir yaşam süresi Esnek

Adım Adım Geçiş Süreci

1. Adım: NuGet Paketlerini Güncelleyin

DinkToPdf kaldırın ve IronPDF'i yükleyin:

# Remove DinkToPdf
dotnet remove package DinkToPdf

# Install IronPDF
dotnet add package IronPdf
# Remove DinkToPdf
dotnet remove package DinkToPdf

# Install IronPDF
dotnet add package IronPdf
SHELL

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

Projenizden bu platforma özel dosyaları silin:

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

IronPDF'in yerel bağımlıkları yoktur—her şey yönetilen koddur.

3. Adım: Ad Alanı Referanslarını Güncelle

DinkToPdf ad alanlarınıIronPDF ile değiştirin:

// Remove these
using DinkToPdf;
using DinkToPdf.Contracts;

// Add this
using IronPdf;
// Remove these
using DinkToPdf;
using DinkToPdf.Contracts;

// Add this
using IronPdf;
Imports IronPdf
$vbLabelText   $csharpLabel

Adım 4: Lisansı Yapılandırın

// Add at application startup (Program.cs or Global.asax)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Add at application startup (Program.cs or Global.asax)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
' Add at application startup (Program.vb or Global.asax)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
$vbLabelText   $csharpLabel

Tam API Geçiş Referansı

Temel Sınıf Eşlemeleri

DinkToPdf IronPDF
SynchronizedConverter ChromePdfRenderer
BasicConverter ChromePdfRenderer
PdfTools Gerekli değil
HtmlToPdfDocument Gerekli değil
GlobalSettings RenderingOptions
ObjectSettings RenderingOptions
MarginSettings Bireysel kenar boşluğu özellikleri

Genel Ayarlar Eşlemesi

DinkToPdfGenel Ayarları IronPDF Eşdeğeri
ColorMode = ColorMode.Color Varsayılan (her zaman renkli)
Orientation = Orientation.Portrait PaperOrientation = PdfPaperOrientation.Portrait
Orientation = Orientation.Landscape PaperOrientation = PdfPaperOrientation.Landscape
PaperSize = PaperKind.A4 PaperSize = PdfPaperSize.A4
Margins = new MarginSettings() Bireysel kenar boşluğu özellikleri

Kenar Ayarları Eşlemesi

DinkToPdfKenarlar IronPDF Eşdeğeri
Margins.Top = 10 MarginTop = 10
Margins.Bottom = 10 MarginBottom = 10
Margins.Left = 15 MarginLeft = 15
Margins.Right = 15 MarginRight = 15

Kod Göç Örnekleri

Temel HTML'den PDF'ye

Temel dönüşüm DinkToPdf'ün ayrıntılı yapılandırmasından IronPDF'ün sadeleştirilmiş API'sine dramatik bir basitleştirme gösterir.

DinkToPdf Uygulaması:

// 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 = "<h1>Hello World</h1><p>This is a PDF from HTML.</p>",
                    WebSettings = { DefaultEncoding = "utf-8" }
                }
            }
        };
        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 = "<h1>Hello World</h1><p>This is a PDF from HTML.</p>",
                    WebSettings = { DefaultEncoding = "utf-8" }
                }
            }
        };
        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 ObjectSettings() With {
                    .HtmlContent = "<h1>Hello World</h1><p>This is a PDF from HTML.</p>",
                    .WebSettings = New WebSettings() With {
                        .DefaultEncoding = "utf-8"
                    }
                }
            }
        }
        Dim pdf As Byte() = converter.Convert(doc)
        File.WriteAllBytes("output.pdf", pdf)
    End Sub
End Module
$vbLabelText   $csharpLabel

IronPDF Uygulaması:

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>This is a PDF from HTML.</p>");
        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>This is a PDF from HTML.</p>");
        pdf.SaveAs("output.pdf");
    }
}
Imports IronPdf
Imports System

Class Program
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()
        Dim pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>This is a PDF from HTML.</p>")
        pdf.SaveAs("output.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

IronPDF, 20 satırlıkDinkToPdfyapılandırmasını 4 satıra indirir. Hiçbir SynchronizedConverter yok, hiçbir PdfTools yok, hiçbir HtmlToPdfDocument yok, hiçbir ObjectSettings yok—sadece render et ve kaydet. Daha fazla seçenek için, HTML'den PDF'e dokümantasyona bakın.

URL'den PDF'ye Dönüşüm

DinkToPdf Uygulaması:

// 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 Uygulaması:

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

IronPDF'nin RenderUrlAsPdf, iç içe geçmiş ObjectSettings.Page yapılandırmasını doğrudan bir yöntem çağrısı ile değiştirir. Daha fazla seçenek için, URL'den PDF'e dokümantas bakın.

Manzara ve Kenarlarla Özel Ayarlar

DinkToPdf Uygulaması:

// 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.A4,
                Margins = new MarginSettings { Top = 10, Bottom = 10, Left = 15, Right = 15 }
            },
            Objects = {
                new ObjectSettings() {
                    HtmlContent = "<h1>Custom PDF</h1><p>Landscape orientation with custom margins.</p>",
                    WebSettings = { DefaultEncoding = "utf-8" }
                }
            }
        };
        byte[] pdf = converter.Convert(doc);
        File.WriteAllBytes("custom.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.A4,
                Margins = new MarginSettings { Top = 10, Bottom = 10, Left = 15, Right = 15 }
            },
            Objects = {
                new ObjectSettings() {
                    HtmlContent = "<h1>Custom PDF</h1><p>Landscape orientation with custom margins.</p>",
                    WebSettings = { DefaultEncoding = "utf-8" }
                }
            }
        };
        byte[] pdf = converter.Convert(doc);
        File.WriteAllBytes("custom.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.A4,
                .Margins = New MarginSettings() With {
                    .Top = 10,
                    .Bottom = 10,
                    .Left = 15,
                    .Right = 15
                }
            },
            .Objects = {
                New ObjectSettings() With {
                    .HtmlContent = "<h1>Custom PDF</h1><p>Landscape orientation with custom margins.</p>",
                    .WebSettings = New WebSettings() With {
                        .DefaultEncoding = "utf-8"
                    }
                }
            }
        }
        Dim pdf As Byte() = converter.Convert(doc)
        File.WriteAllBytes("custom.pdf", pdf)
    End Sub
End Module
$vbLabelText   $csharpLabel

IronPDF Uygulaması:

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
        renderer.RenderingOptions.MarginTop = 10;
        renderer.RenderingOptions.MarginBottom = 10;
        renderer.RenderingOptions.MarginLeft = 15;
        renderer.RenderingOptions.MarginRight = 15;

        var pdf = renderer.RenderHtmlAsPdf("<h1>Custom PDF</h1><p>Landscape orientation with custom margins.</p>");
        pdf.SaveAs("custom.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
        renderer.RenderingOptions.MarginTop = 10;
        renderer.RenderingOptions.MarginBottom = 10;
        renderer.RenderingOptions.MarginLeft = 15;
        renderer.RenderingOptions.MarginRight = 15;

        var pdf = renderer.RenderHtmlAsPdf("<h1>Custom PDF</h1><p>Landscape orientation with custom margins.</p>");
        pdf.SaveAs("custom.pdf");
    }
}
Imports IronPdf
Imports IronPdf.Rendering
Imports System

Module Program
    Sub Main()
        Dim renderer As New ChromePdfRenderer()
        renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape
        renderer.RenderingOptions.MarginTop = 10
        renderer.RenderingOptions.MarginBottom = 10
        renderer.RenderingOptions.MarginLeft = 15
        renderer.RenderingOptions.MarginRight = 15

        Dim pdf = renderer.RenderHtmlAsPdf("<h1>Custom PDF</h1><p>Landscape orientation with custom margins.</p>")
        pdf.SaveAs("custom.pdf")
    End Sub
End Module
$vbLabelText   $csharpLabel

IronPDF'nin RenderingOptions, hem GlobalSettings hem de MarginSettings birleştirilmiş, akıcı bir API ile değiştirir. Daha fazla yapılandırma seçeneği için, işleme seçenekleri dokümantasyonuna bakın.

Kritik Taşıma Notları

Yerel İkili Dosyaları Kaldırın

Temizliğin en önemli adımı wkhtmltopdf yerel ikili dosyalarını kaldırmaktır. IronPDF'in yerel bağımlılıkları yoktur:

# Delete native binaries
rm libwkhtmltox.* 2>/dev/null
# Delete native binaries
rm libwkhtmltox.* 2>/dev/null
SHELL

Singleton Gerekli Değil

DinkToPdf'ın belgelenmiş kılavuzu SynchronizedConverter'i singleton olarak kaydetmeyi önerir. IronPDF'nin ChromePdfRenderer'i herhangi bir DI ömrü ile iş parçacığı güvenlidir:

//DinkToPdf- typically registered as singleton
services.AddSingleton(typeof(IConverter), new SynchronizedConverter(new PdfTools()));

//IronPDF- any lifetime works
services.AddScoped<ChromePdfRenderer>();
// Or just create inline:
var renderer = new ChromePdfRenderer();
//DinkToPdf- typically registered as singleton
services.AddSingleton(typeof(IConverter), new SynchronizedConverter(new PdfTools()));

//IronPDF- any lifetime works
services.AddScoped<ChromePdfRenderer>();
// Or just create inline:
var renderer = new ChromePdfRenderer();
' DinkToPdf - typically registered as singleton
services.AddSingleton(GetType(IConverter), New SynchronizedConverter(New PdfTools()))

' IronPDF - any lifetime works
services.AddScoped(Of ChromePdfRenderer)()
' Or just create inline:
Dim renderer As New ChromePdfRenderer()
$vbLabelText   $csharpLabel

Daha Zengin Dönüş Tipi

DinkToPdf, byte[] döner. IronPDF, manipülasyon yetenekleriyle birlikte PdfDocument döner:

//DinkToPdfreturns byte[]
byte[] pdf = converter.Convert(doc);
File.WriteAllBytes("output.pdf", pdf);
return File(pdf, "application/pdf");

//IronPDF returns PdfDocument
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
return File(pdf.BinaryData, "application/pdf");
//DinkToPdfreturns byte[]
byte[] pdf = converter.Convert(doc);
File.WriteAllBytes("output.pdf", pdf);
return File(pdf, "application/pdf");

//IronPDF returns PdfDocument
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
return File(pdf.BinaryData, "application/pdf");
' DinkToPdf returns byte()
Dim pdf As Byte() = converter.Convert(doc)
File.WriteAllBytes("output.pdf", pdf)
Return File(pdf, "application/pdf")

' IronPDF returns PdfDocument
Dim pdfDoc = renderer.RenderHtmlAsPdf(html)
pdfDoc.SaveAs("output.pdf")
Return File(pdfDoc.BinaryData, "application/pdf")
$vbLabelText   $csharpLabel

TamCSS3Desteği

DinkToPdf'de başarısız olan modern düzenlemeler IronPDF içinde mükemmel şekilde çalışır:

//DinkToPdf- doesn't work (wkhtmltopdf uses 2015 WebKit)
var html = "<div style='display: flex;'>...</div>";  // Broken!

//IronPDF- full support (modern Chromium)
var html = @"
    <div style='display: flex; justify-content: space-between;'>
        <div>Left</div>
        <div>Right</div>
    </div>";
var pdf = renderer.RenderHtmlAsPdf(html);  // Works!
//DinkToPdf- doesn't work (wkhtmltopdf uses 2015 WebKit)
var html = "<div style='display: flex;'>...</div>";  // Broken!

//IronPDF- full support (modern Chromium)
var html = @"
    <div style='display: flex; justify-content: space-between;'>
        <div>Left</div>
        <div>Right</div>
    </div>";
var pdf = renderer.RenderHtmlAsPdf(html);  // Works!
' DinkToPdf- doesn't work (wkhtmltopdf uses 2015 WebKit)
Dim html As String = "<div style='display: flex;'>...</div>"  ' Broken!

' IronPDF- full support (modern Chromium)
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!
$vbLabelText   $csharpLabel

Taşınma Sonrası Kontrollistesi

Kod taşımasını tamamladıktan sonra, aşağıdakileri doğrulayın:

  • Tüm birim testlerini çalıştırarak PDF oluşturmanın doğru çalıştığını doğrulayın
  • Çok iş parçacıklı senaryoları test edin (SynchronizedConverter yolu çağrıları sıraya koyar ve yük altında yerel tarafta çökme eğilimindeydi)
  • PDF çıktı kalitesini karşılaştırın (IronPDF'nin Chromium motoru daha iyi işler)
  • CSS işleme doğrulayin (Flexbox/Grid artık çalışıyor) -JavaScriptyürütme test edin (IronPDF ile güvenilir)
  • CI/CD borularını wkhtmltopdf kurulumunu kaldırmak için güncelleyin
  • Güvenlik taramasının geçtiğini doğrulayın (artık CVE-2022-35583 bayrakları yok)
  • Docker/dağıtım betiklerinden yerel ikili dosya dağıtımını kaldırın

Ek Kaynaklar


DinkToPdf'dan IronPDF'ye geçiş, düzeltilmemiş wkhtmltopdf saldırı yüzeyini (CVE-2022-35583), serileştirilmiş SynchronizedConverter eşzamanlılık modelini, yerel ikili dağıtımı ve eski QtWebKit render yolunu emekliye ayırır. Modern bir Chromium motoruna geçiş, tamCSS3desteği, güvenilirJavaScriptyürütme ve aktif olarak bakımı yapılan bir kütüphane sunar.

Lütfen dikkate alınDinkToPdf ve wkhtmltopdf, ilgili sahiplerinin tescilli markalarıdır. Bu site,DinkToPdfveya wkhtmltopdf ile ilişkili, onaylanmış veya sponsorlu 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