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

NReco PDF Generator'dan IronPDF'e C# ile Nasıl Geçilir

NReco PDF Generator'dan IronPDF'e Geçiş Sebepleri

NReco PDF Generatorile Eleştirel Güvenlik Sorunları

NReco PDF Generator, terk edilmiş wkhtmltopdf ikili dosyasını sarar ve tüm güvenlik açıklarını devralır. Bu teorik bir endişe değildir—2020'de wkhtmltopdf terk edildiğinden beri yamaları bulunmayan 20+ belgelenmiş CVE vardır:

  • CVE-2020-21365: Sunucu tarafı istek sahtekarlığı (SSRF)
  • CVE-2022-35583: HTML enjeksiyonu yoluyla yerel dosya okuma
  • CVE-2022-35580: Uzaktan kod yürütme potansiyeli

Bu güvenlik açıkları yamalanamaz çünkü temel wkhtmltopdf projesi artık bakımda değildir.

EkNReco PDF GeneratorSınırlamaları

  1. Filigranlı Ücretsiz Versiyon: Üretim kullanımı, satışla iletişim kurmayı gerektiren opak fiyatlaması olan ücretli bir lisans gerektirir.

  2. Eskimiş İşlem Motoru: WebKit Qt (2012 civarı) modern web desteği kısıtlı sunar:

    • CSS Grid veya Flexbox yok
    • ModernJavaScript(ES6+) yok
    • Web yazı tipi desteği zayıf
    • CSS değişkenleri veya özel özellikler yok
  3. Harici İkili Bağlılık: Her platform için wkhtmltopdf ikililerini yönetmeyi gerektirir (wkhtmltopdf.exe, wkhtmltox.dll).

  4. Aktif Geliştirme Yok: Kaplama yalnızca bakım alır; temel motor güncellemeleri yoktur.

  5. Sınırlı Asenkron Destek: Eşzamanlılık web uygulamalarında iş parçacıklarını engeller.

NReco PDF Generator vsIronPDFKarşılaştırması

Bağlam NReco PDF Generator IronPDF
Render Motoru WebKit Qt (2012) Chromium (güncel)
Güvenlik 20+ CVE, yamalar yok Aktif güvenlik güncellemeleri
CSS Desteği CSS2.1, sınırlı CSS3 Tam CSS3, Grid, Flexbox
JavaScript Temel ES5 Tam ES6+, async/await
Bağımlılıklar Harici wkhtmltopdf ikili dosyası Kendisi yeterli
Async Destegi Yalnızca eşzamanlı Tam async/await
Web Yazı Tipleri Sınırlı Tam Google Yazı Tipleri, @font-face
Lisanslama Opak fiyatlandırma, satışla iletişim kurun Şeffaf fiyatlama
Ücretsiz Deneme Filigranlı Tam işlevsellik

IronPDF, 2025 ve 2026 yıllarına kadar .NET 10 ve C# 14 kabulleri yapmayı planlayan ekipler için aktif geliştirme ve modern oluşturma yetenekleri ile geleceğe yönelik bir temel sağlar.


Başlamadan Önce

Önkoşullar

  1. .NET Ortamı: .NET Framework 4.6.2+ veya .NET Core 3.1+ / .NET 5/6/7/8/9+
  2. NuGet Erişimi: NuGet paketlerini yükleme yeteneği
  3. IronPDF Lisansı: Lisans anahtarınızı ironpdf.com adresinden edinin

NuGet Paket Değişiklikleri

# Remove NReco.PdfGenerator
dotnet remove package NReco.PdfGenerator

# Install IronPDF
dotnet add package IronPdf
# Remove NReco.PdfGenerator
dotnet remove package NReco.PdfGenerator

# Install IronPDF
dotnet add package IronPdf
SHELL

Ayrıca wkhtmltopdf ikili dosyalarını dağıtımınızdan kaldırın:

  • Projeden wkhtmltopdf.exe, wkhtmltox.dll silin
  • Herhangi bir wkhtmltopdf kurulum senaryosunu kaldırın
  • Platforma özgü ikili dosya klasörlerini silin

Lisans Yapılandırması

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

NReco PDF GeneratorKullanımını Belirleme

# Find all NReco.PdfGenerator references
grep -r "NReco.PdfGenerator\|HtmlToPdfConverter\|GeneratePdf" --include="*.cs" .
# Find all NReco.PdfGenerator references
grep -r "NReco.PdfGenerator\|HtmlToPdfConverter\|GeneratePdf" --include="*.cs" .
SHELL

API Referansının Tamamı

Temel Sınıf Eşlemeleri

NReco PDF Generator IronPDF
HtmlToPdfConverter ChromePdfRenderer
PageMargins Ayrı kenar boşluğu özellikleri
PageOrientation PdfPaperOrientation
PageSize PdfPaperSize

Yapılandırma Yöntem Eşlemesi

NReco PDF Generator IronPDF
GeneratePdf(html) RenderHtmlAsPdf(html)
GeneratePdfFromFile(url, output) RenderUrlAsPdf(url)
GeneratePdfFromFile(htmlPath, output) RenderHtmlFileAsPdf(path)
(asenkron desteklenmiyor) RenderHtmlAsPdfAsync(html)
(asenkron desteklenmiyor) RenderUrlAsPdfAsync(url)

Sayfa Yapılandırma Eşlemeleri

NReco PDF Generator IronPDF
PageWidth = 210 RenderingOptions.PaperSize = PdfPaperSize.A4
PageHeight = 297 RenderingOptions.SetCustomPaperSizeinMilimeters(w, h)
Orientation = PageOrientation.Landscape RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape
Size = PageSize.A4 RenderingOptions.PaperSize = PdfPaperSize.A4

Kenar Boşluğu Eşlemeleri

NReco PDF Generator IronPDF
Margins.Top = 10 RenderingOptions.MarginTop = 10
Margins.Bottom = 10 RenderingOptions.MarginBottom = 10
Margins.Left = 10 RenderingOptions.MarginLeft = 10
Margins.Right = 10 RenderingOptions.MarginRight = 10
`new PageMargins { ... } Bireysel özellikler

Başlık/Altbilgi Yer Tutucu Eşlemeleri

NReco PDF Generator (wkhtmltopdf) IronPDF
[page] `{page}
[topage] `{total-pages}
[date] `{date}
[time] `{time}
[title] `{html-title}

Çıktı İşleme Eşlemeleri

NReco PDF Generator IronPDF
byte[] pdfBytes = GeneratePdf(html) PdfDocument pdf = RenderHtmlAsPdf(html)
File.WriteAllBytes(path, bytes) pdf.SaveAs(path)
return pdfBytes return pdf.BinaryData
new MemoryStream(pdfBytes) pdf.Stream

Kod Geçiş Örnekleri

Örnek 1: Temel HTML'den PDF'ye

Önce (NReco PDF Generator):

// NuGet: Install-Package NReco.PdfGenerator
using NReco.PdfGenerator;
using System.IO;

class Program
{
    static void Main()
    {
        var htmlToPdf = new HtmlToPdfConverter();
        var htmlContent = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>";
        var pdfBytes = htmlToPdf.GeneratePdf(htmlContent);
        File.WriteAllBytes("output.pdf", pdfBytes);
    }
}
// NuGet: Install-Package NReco.PdfGenerator
using NReco.PdfGenerator;
using System.IO;

class Program
{
    static void Main()
    {
        var htmlToPdf = new HtmlToPdfConverter();
        var htmlContent = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>";
        var pdfBytes = htmlToPdf.GeneratePdf(htmlContent);
        File.WriteAllBytes("output.pdf", pdfBytes);
    }
}
Imports NReco.PdfGenerator
Imports System.IO

Class Program
    Shared Sub Main()
        Dim htmlToPdf = New HtmlToPdfConverter()
        Dim htmlContent = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>"
        Dim pdfBytes = htmlToPdf.GeneratePdf(htmlContent)
        File.WriteAllBytes("output.pdf", pdfBytes)
    End Sub
End Class
$vbLabelText   $csharpLabel

Sonra (IronPDF):

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

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

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

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

Temel fark, döndürme türü ve kayıt düzenindedir. NReco PDF Generator'un HtmlToPdfConverter.GeneratePdf() döndürüyor; bunu diske manuel olarak yazmalısınız File.WriteAllBytes() kullanarak. IronPDF'un ChromePdfRenderer.RenderHtmlAsPdf() yerleşik bir SaveAs() yöntemi olan bir PdfDocument nesnesi döndürür.

Bu nesne yonelimli yöntem ek faydalar sunar: kaydetmeden once PDF'yi (filigran ekleme, belgeleri birlestirme, guvenlik ekleme) manipule edebilirsiniz. Mevcut kodla uyumluluk için ham bayt ihtiyaçınız varsa, pdf.BinaryData kullanın. Daha fazla işleme seçeneği için HTML'den PDF'ye dokümantasyonuna bakın.

Örnek 2: Kenar Bosluklari ile Ozel Sayfa Boyutu

Önce (NReco PDF Generator):

// NuGet: Install-Package NReco.PdfGenerator
using NReco.PdfGenerator;
using System.IO;

class Program
{
    static void Main()
    {
        var htmlToPdf = new HtmlToPdfConverter();
        htmlToPdf.PageWidth = 210;
        htmlToPdf.PageHeight = 297;
        htmlToPdf.Margins = new PageMargins { Top = 10, Bottom = 10, Left = 10, Right = 10 };
        var htmlContent = "<html><body><h1>Custom Page Size</h1><p>A4 size document with margins.</p></body></html>";
        var pdfBytes = htmlToPdf.GeneratePdf(htmlContent);
        File.WriteAllBytes("custom-size.pdf", pdfBytes);
    }
}
// NuGet: Install-Package NReco.PdfGenerator
using NReco.PdfGenerator;
using System.IO;

class Program
{
    static void Main()
    {
        var htmlToPdf = new HtmlToPdfConverter();
        htmlToPdf.PageWidth = 210;
        htmlToPdf.PageHeight = 297;
        htmlToPdf.Margins = new PageMargins { Top = 10, Bottom = 10, Left = 10, Right = 10 };
        var htmlContent = "<html><body><h1>Custom Page Size</h1><p>A4 size document with margins.</p></body></html>";
        var pdfBytes = htmlToPdf.GeneratePdf(htmlContent);
        File.WriteAllBytes("custom-size.pdf", pdfBytes);
    }
}
Imports NReco.PdfGenerator
Imports System.IO

Class Program
    Shared Sub Main()
        Dim htmlToPdf = New HtmlToPdfConverter()
        htmlToPdf.PageWidth = 210
        htmlToPdf.PageHeight = 297
        htmlToPdf.Margins = New PageMargins With {.Top = 10, .Bottom = 10, .Left = 10, .Right = 10}
        Dim htmlContent = "<html><body><h1>Custom Page Size</h1><p>A4 size document with margins.</p></body></html>"
        Dim pdfBytes = htmlToPdf.GeneratePdf(htmlContent)
        File.WriteAllBytes("custom-size.pdf", pdfBytes)
    End Sub
End Class
$vbLabelText   $csharpLabel

Sonra (IronPDF):

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
        renderer.RenderingOptions.MarginTop = 10;
        renderer.RenderingOptions.MarginBottom = 10;
        renderer.RenderingOptions.MarginLeft = 10;
        renderer.RenderingOptions.MarginRight = 10;
        var htmlContent = "<html><body><h1>Custom Page Size</h1><p>A4 size document with margins.</p></body></html>";
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        pdf.SaveAs("custom-size.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
        renderer.RenderingOptions.MarginTop = 10;
        renderer.RenderingOptions.MarginBottom = 10;
        renderer.RenderingOptions.MarginLeft = 10;
        renderer.RenderingOptions.MarginRight = 10;
        var htmlContent = "<html><body><h1>Custom Page Size</h1><p>A4 size document with margins.</p></body></html>";
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        pdf.SaveAs("custom-size.pdf");
    }
}
Imports IronPdf
Imports IronPdf.Rendering

Class Program
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()
        renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
        renderer.RenderingOptions.MarginTop = 10
        renderer.RenderingOptions.MarginBottom = 10
        renderer.RenderingOptions.MarginLeft = 10
        renderer.RenderingOptions.MarginRight = 10
        Dim htmlContent = "<html><body><h1>Custom Page Size</h1><p>A4 size document with margins.</p></body></html>"
        Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)
        pdf.SaveAs("custom-size.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

NReco PDF Generator, sayısal boyutlar (PageWidth = 210, PageHeight = 297) ve bir PageMargins nesnesi kullanır.IronPDFPdfPaperSize enum'unu (A4, Mektup, Legal gibi standart boyutları içerir) ve RenderingOptions nesnesi üzerinde bireysel marj özelliklerini kullanır.

Temel gecis değişiklikleri:

  • PageHeightRenderingOptions.PaperSize = PdfPaperSize.A4
  • new PageMargins { Top = 10, ... }→ Individual properties:RenderingOptions.MarginTop = 10`

Enum tarafından kapsanmayan özel kağıt boyutları için RenderingOptions.SetCustomPaperSizeinMilimeters(width, height) kullanın. sayfa konfigurasiyon seçenekleri hakkinda daha fazla bilgi edinin.

Örnek 3: URL'den PDF'ye Donusum

Önce (NReco PDF Generator):

// NuGet: Install-Package NReco.PdfGenerator
using NReco.PdfGenerator;
using System.IO;

class Program
{
    static void Main()
    {
        var htmlToPdf = new HtmlToPdfConverter();
        var pdfBytes = htmlToPdf.GeneratePdfFromFile("https://www.example.com", null);
        File.WriteAllBytes("webpage.pdf", pdfBytes);
    }
}
// NuGet: Install-Package NReco.PdfGenerator
using NReco.PdfGenerator;
using System.IO;

class Program
{
    static void Main()
    {
        var htmlToPdf = new HtmlToPdfConverter();
        var pdfBytes = htmlToPdf.GeneratePdfFromFile("https://www.example.com", null);
        File.WriteAllBytes("webpage.pdf", pdfBytes);
    }
}
Imports NReco.PdfGenerator
Imports System.IO

Class Program
    Shared Sub Main()
        Dim htmlToPdf As New HtmlToPdfConverter()
        Dim pdfBytes As Byte() = htmlToPdf.GeneratePdfFromFile("https://www.example.com", Nothing)
        File.WriteAllBytes("webpage.pdf", pdfBytes)
    End Sub
End Class
$vbLabelText   $csharpLabel

Sonra (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;

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;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
        pdf.SaveAs("webpage.pdf");
    }
}
Imports IronPdf

Class Program
    Shared Sub Main()
        Dim renderer As New ChromePdfRenderer()
        Dim pdf = renderer.RenderUrlAsPdf("https://www.example.com")
        pdf.SaveAs("webpage.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

NReco PDF Generator karışıklığa neden olan GeneratePdfFromFile() metodunu hem yerel dosyalar hem de URL'ler için kullanır, nullable bir ikinci parametre ile.IronPDFözel metotlar sağlar: URL'ler için RenderUrlAsPdf() ve yerel HTML dosyaları için RenderHtmlFileAsPdf().

IronPDF yaklaşımı daha temiz ve daha sezgiseldir. Asenkron web uygulamaları için, NReco PDF Generator'un basitçe yapamayacağı bir şey olan, iş parçacıklarını engellemekten kaçınmak için await renderer.RenderUrlAsPdfAsync(url) kullanın.


Kritik Geçiş Notları

Zoom Degeri Donusumu

NReco PDF Generator float degerleri (0.0-2.0) kullanirken,IronPDFyuzdelik tamsayilar kullanir:

// NReco PDF Generator: Zoom = 0.9f (90%)
// IronPDF: Zoom = 90

// Conversion formula:
int ironPdfZoom = (int)(nrecoZoom * 100);
// NReco PDF Generator: Zoom = 0.9f (90%)
// IronPDF: Zoom = 90

// Conversion formula:
int ironPdfZoom = (int)(nrecoZoom * 100);
' NReco PDF Generator: Zoom = 0.9F (90%)
' IronPDF: Zoom = 90

' Conversion formula:
Dim ironPdfZoom As Integer = CInt(nrecoZoom * 100)
$vbLabelText   $csharpLabel

Yer Tutucu S

tüm baslik/altbilgi yer tutuculari güncellenmelidir:

NReco PDF Generator IronPDF
[page] `{page}
[topage] `{total-pages}
[date] `{date}
[title] `{html-title}
// NReco PDF Generator:
converter.PageFooterHtml = "<div>Page [page] of [topage]</div>";

// IronPDF:
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
    HtmlFragment = "<div>Page {page} of {total-pages}</div>",
    MaxHeight = 20
};
// NReco PDF Generator:
converter.PageFooterHtml = "<div>Page [page] of [topage]</div>";

// IronPDF:
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
    HtmlFragment = "<div>Page {page} of {total-pages}</div>",
    MaxHeight = 20
};
Imports NReco.PdfGenerator
Imports IronPdf

' NReco PDF Generator:
converter.PageFooterHtml = "<div>Page [page] of [topage]</div>"

' IronPDF:
renderer.RenderingOptions.HtmlFooter = New HtmlHeaderFooter With {
    .HtmlFragment = "<div>Page {page} of {total-pages}</div>",
    .MaxHeight = 20
}
$vbLabelText   $csharpLabel

Dondurul Typi Değişikligi

NReco PDF Generator doğrudan byte[] döndürüyor;IronPDFPdfDocument döndürüyor:

//NReco PDF Generatorpattern:
byte[] pdfBytes = converter.GeneratePdf(html);
File.WriteAllBytes("output.pdf", pdfBytes);

//IronPDFpattern:
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");

// Or if you need bytes:
byte[] pdfBytes = renderer.RenderHtmlAsPdf(html).BinaryData;
//NReco PDF Generatorpattern:
byte[] pdfBytes = converter.GeneratePdf(html);
File.WriteAllBytes("output.pdf", pdfBytes);

//IronPDFpattern:
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");

// Or if you need bytes:
byte[] pdfBytes = renderer.RenderHtmlAsPdf(html).BinaryData;
' NReco PDF Generator pattern:
Dim pdfBytes As Byte() = converter.GeneratePdf(html)
File.WriteAllBytes("output.pdf", pdfBytes)

' IronPDF pattern:
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("output.pdf")

' Or if you need bytes:
Dim pdfBytes As Byte() = renderer.RenderHtmlAsPdf(html).BinaryData
$vbLabelText   $csharpLabel

Thread Guvenligi ve Yeniden Kullanilabilirlik

NReco PDF Generator genellikle her arama icin yeni bir cevirici oluşturur. IronPDF'un ChromePdfRenderer iş parçacığı güvenlidir ve tekrar kullanılabilir:

//NReco PDF Generatorpattern (creates new each time):
public byte[] Generate(string html)
{
    var converter = new HtmlToPdfConverter();
    return converter.GeneratePdf(html);
}

//IronPDFpattern (reuse renderer, thread-safe):
private readonly ChromePdfRenderer _renderer = new ChromePdfRenderer();

public byte[] Generate(string html)
{
    return _renderer.RenderHtmlAsPdf(html).BinaryData;
}
//NReco PDF Generatorpattern (creates new each time):
public byte[] Generate(string html)
{
    var converter = new HtmlToPdfConverter();
    return converter.GeneratePdf(html);
}

//IronPDFpattern (reuse renderer, thread-safe):
private readonly ChromePdfRenderer _renderer = new ChromePdfRenderer();

public byte[] Generate(string html)
{
    return _renderer.RenderHtmlAsPdf(html).BinaryData;
}
Imports NReco.PdfGenerator
Imports IronPdf

' NReco PDF Generator pattern (creates new each time):
Public Function Generate(html As String) As Byte()
    Dim converter As New HtmlToPdfConverter()
    Return converter.GeneratePdf(html)
End Function

' IronPDF pattern (reuse renderer, thread-safe):
Private ReadOnly _renderer As New ChromePdfRenderer()

Public Function Generate(html As String) As Byte()
    Return _renderer.RenderHtmlAsPdf(html).BinaryData
End Function
$vbLabelText   $csharpLabel

Async Destegi (Yeni Yetenek)

IronPDF, NReco PDF Generator'un sunamayacagi async/await desenlerini destekler:

// NReco PDF Generator: No async support available

// IronPDF: Full async support
public async Task<byte[]> GenerateAsync(string html)
{
    var pdf = await _renderer.RenderHtmlAsPdfAsync(html);
    return pdf.BinaryData;
}
// NReco PDF Generator: No async support available

// IronPDF: Full async support
public async Task<byte[]> GenerateAsync(string html)
{
    var pdf = await _renderer.RenderHtmlAsPdfAsync(html);
    return pdf.BinaryData;
}
Imports System.Threading.Tasks

' NReco PDF Generator: No async support available

' IronPDF: Full async support
Public Async Function GenerateAsync(html As String) As Task(Of Byte())
    Dim pdf = Await _renderer.RenderHtmlAsPdfAsync(html)
    Return pdf.BinaryData
End Function
$vbLabelText   $csharpLabel

Ariza Giderme

Problem 1: HtmlToPdfConverter Bulunamadı

Sorun: IronPDF'de HtmlToPdfConverter sınıfı yok.

Çözüm: ChromePdfRenderer kullanın:

// NReco PDF Generator
var converter = new HtmlToPdfConverter();

// IronPDF
var renderer = new ChromePdfRenderer();
// NReco PDF Generator
var converter = new HtmlToPdfConverter();

// IronPDF
var renderer = new ChromePdfRenderer();
' NReco PDF Generator
Dim converter As New HtmlToPdfConverter()

' IronPDF
Dim renderer As New ChromePdfRenderer()
$vbLabelText   $csharpLabel

Issue 2: GeneratePdf Yanlis Tur Donduruyor

Sorun: Kod byte[] bekliyor ama PdfDocument alıyor.

Çözüm: .BinaryData özelliğine erişin:

// NReco PDF Generator
byte[] pdfBytes = converter.GeneratePdf(html);

// IronPDF
byte[] pdfBytes = renderer.RenderHtmlAsPdf(html).BinaryData;
// NReco PDF Generator
byte[] pdfBytes = converter.GeneratePdf(html);

// IronPDF
byte[] pdfBytes = renderer.RenderHtmlAsPdf(html).BinaryData;
' NReco PDF Generator
Dim pdfBytes As Byte() = converter.GeneratePdf(html)

' IronPDF
Dim pdfBytes As Byte() = renderer.RenderHtmlAsPdf(html).BinaryData
$vbLabelText   $csharpLabel

Issue 3: PageMargins Nesnesi Bulunamadi

Sorun: IronPDF'de PageMargins sınıfı yok.

Cozum: Bireysel kenar boslugu özelliklerini kullanin:

// NReco PDF Generator
converter.Margins = new PageMargins { Top = 10, Bottom = 10, Left = 10, Right = 10 };

// IronPDF
renderer.RenderingOptions.MarginTop = 10;
renderer.RenderingOptions.MarginBottom = 10;
renderer.RenderingOptions.MarginLeft = 10;
renderer.RenderingOptions.MarginRight = 10;
// NReco PDF Generator
converter.Margins = new PageMargins { Top = 10, Bottom = 10, Left = 10, Right = 10 };

// IronPDF
renderer.RenderingOptions.MarginTop = 10;
renderer.RenderingOptions.MarginBottom = 10;
renderer.RenderingOptions.MarginLeft = 10;
renderer.RenderingOptions.MarginRight = 10;
' NReco PDF Generator
converter.Margins = New PageMargins With {.Top = 10, .Bottom = 10, .Left = 10, .Right = 10}

' IronPDF
renderer.RenderingOptions.MarginTop = 10
renderer.RenderingOptions.MarginBottom = 10
renderer.RenderingOptions.MarginLeft = 10
renderer.RenderingOptions.MarginRight = 10
$vbLabelText   $csharpLabel

Issue 4: Sayfa Numaralari Gorunmuyor

Sorun: [page] ve [topage] placeholder'ları çalışmıyor.

Çözüm:IronPDFyer tutucu sözdizimine güncelleyin:

// NReco PDF Generator
converter.PageFooterHtml = "<div>Page [page] of [topage]</div>";

// IronPDF
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
    HtmlFragment = "<div>Page {page} of {total-pages}</div>",
    MaxHeight = 20
};
// NReco PDF Generator
converter.PageFooterHtml = "<div>Page [page] of [topage]</div>";

// IronPDF
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
    HtmlFragment = "<div>Page {page} of {total-pages}</div>",
    MaxHeight = 20
};
Imports NReco.PdfGenerator
Imports IronPdf

converter.PageFooterHtml = "<div>Page [page] of [topage]</div>"

renderer.RenderingOptions.HtmlFooter = New HtmlHeaderFooter With {
    .HtmlFragment = "<div>Page {page} of {total-pages}</div>",
    .MaxHeight = 20
}
$vbLabelText   $csharpLabel

Goc Kontrol Listesi

Geçiş Öncesi

  • Kod tabanındaki tüm NReco.PdfGenerator kullanımlarını envanter yapın
  • Tüm CustomWkHtmlArgs ve CustomWkHtmlPageArgs değerlerini belgeleyin
  • Yer tutucu içerikli tüm baslik/altbilgi HTML kaliplari listeleyin
  • Async gereksinimlerini (web kontrolleri, servisler) belirleyin
  • Zoom ve kenar boslugu ayarlarini gozden gecirin
  • Karsilastirma icin mevcut PDF ciktilarinin yedegini alin -IronPDFlisans anahtarını edinin

Paket Değişiklikleri

  • NReco.PdfGenerator NuGet paketini kaldırın
  • IronPdf NuGet paketini kurun: dotnet add package IronPdf
  • Namespace alımlarını using NReco.PdfGenerator;'den using IronPdf;'e güncelleyin

Kod Değişiklikleri

  • Başlangıçta lisans anahtarı yapılandırması ekleyin
  • HtmlToPdfConverter'yi ChromePdfRenderer ile değiştirin
  • GeneratePdf(html)'yi RenderHtmlAsPdf(html) ile değiştirin
  • GeneratePdfFromFile(url, null)'yi RenderUrlAsPdf(url) ile değiştirin
  • PageMargins nesnesini bireysel marjin özelliklerine dönüştürün
  • Zoom degerlerini float'tan yuzdeliğe güncelleyin
  • Placeholder söz dizimini güncelleyin: [page]{page}, [topage]{total-pages}
  • File.WriteAllBytes()'yi pdf.SaveAs() ile değiştirin
  • Faydali oldugu yerlerde senkron aramalari asenkrona dönüştürun

Geçişten Sonra

  • Yeni projedir/deployment'den wkhtmltopdf ikilisini kaldirin
  • Docker dosyalarini wkhtmltopdf yuklemesini kaldıracak sekilde güncelleyin
  • PDF ciktilarini karsilastiran regresyon testleri yapin
  • Baslik/altbilgi yer tutucularinin dogru sekilde gösterildigini dogrulayin
  • Tüm hedef platformlarda test edin (Windows, Linux, macOS)
  • wkhtmltopdf adimlarini kaldırmak icin CI/CD boru hattini güncelleyin
  • CVE'lerin kaldirildigini dogrulayan guvenlik taramalarini güncelleyin

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