IRONSOFTWAREHOME
VIDEOLAR

IronPDF 2021: Chrome Rendering Engine EAP – PDF Oluşturma İçin Bir Oyun Değiştirici!

Curtis Chau
Curtis Chau
Updated: 19 Temmuz 2026

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

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

Mimari̇ Karşılaştırma

AspektDinkToPdfIronPDF
GüvenlikCVE-2022-35583 (SSRF), yamanmamış / üst kaynakta tartışılanBilinen kritik CVE yoktur
Render MotoruEski QtWebKit dalı (wkhtmltopdf 0.12.6)Modern Krom
İş Parçacığı GüvenliğiSynchronizedConverter çağrıları sıraya koyar; native-side crashes reported under loadTasarımı gereği iş parçacığı güvenli
Yerel BağımlılıklarPlatforma özel libwkhtmltox ikili dosyalarıYönetilen NuGet paketi
CSS DesteğiModernFlexbox/GridyokTam CSS3
JavaScriptSınırlı, tutarsızDesteklenen
BakımDinkToPdf son sürüm Nisan 2017; wkhtmltopdf org Temmuz 2024'te arşivlendiAktif olarak sürdürülüyor

Özellik Karşılaştırması

ÖzellikDinkToPdfIronPDF
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*"
SHELL

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

DeğişimDinkToPdfIronPDFEtki
DönüştürücüSynchronizedConverter(new PdfTools())ChromePdfRendererDaha basit başlatma
BelgeHtmlToPdfDocumentDoğrudan metod çağrısıBelge nesnesi yok
AyarlarGlobalSettings + ObjectSettingsRenderingOptionsTek seçenekler nesnesi
Dönüş tipibyte[]PdfDocumentDaha güçlü nesne
İkililibwkhtmltox.dll/soYok (yönetilen)Yerel dosyaları kaldırın
Thread güvenliğiBasicConverter tek iş parçacıklı; SynchronizedConverter çağrıları sıraya koyarVarsayılan olarak parlak iplikDaha basit kod
DISingleton gerekliHerhangi bir yaşam süresiEsnek

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

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

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

Tam API Geçiş Referansı

Temel Sınıf Eşlemeleri

DinkToPdfIronPDF
SynchronizedConverterChromePdfRenderer
BasicConverterChromePdfRenderer
PdfToolsGerekli değil
HtmlToPdfDocumentGerekli değil
GlobalSettingsRenderingOptions
ObjectSettingsRenderingOptions
MarginSettingsBireysel kenar boşluğu özellikleri

Genel Ayarlar Eşlemesi

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

Kenar Ayarları Eşlemesi

DinkToPdfKenarlarIronPDF Eşdeğeri
Margins.Top = 10MarginTop = 10
Margins.Bottom = 10MarginBottom = 10
Margins.Left = 15MarginLeft = 15
Margins.Right = 15MarginRight = 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);
    }
}

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

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

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

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

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

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

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

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!

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ın: DinkToPdf 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ılandırılmış, görsel olarak çekici kılavuzlar oluşturmayı seviyor.

...
Daha Fazla Oku

İlgili Makaleler

Key in blue circle

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

Your trial license will be sent to your email address

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

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

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

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