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

.NET için ABCpdf'den IronPDF'e Nasıl Geçilir

ABCpdf for .NET'ten IronPDF'ye geçiş, lisanslamada sadelik, modern dokümantasyon ve yerel çapraz platform desteği arayan geliştirme ekipleri için stratejik bir yükseltmedir. Bu kapsamlı kılavuz, adım adım geçiş yolunu, API eşlemeleri ve gerçek dünya senaryolarından kod dönüştürme örnekleri ile birlikte sunar.

.NET Framework 4.6.2 ile çalışıyor veya 2026'ya ve sonrasına hedeflenen .NET 9 ve ötesini hedefliyorsanız, bu ABCpdf geçiş kılavuzu IronPDF'nin Chrome tabanlý oluşturma motoruna geçişi kolaylaştırır.

ABCpdf Gecisini Neden Dusunmelisiniz?

WebSupergoo'dan ABCpdf, yıllardır yetenekli bir .NET PDF kutuphanesidir. Ancak, 2025 ve 2026'ya yönelik projeler planlayan modern geliştirme ekipleri için IronPDF'yi cazip bir alternatif haline getiren çeşitli faktörler vardır.

Lisanslama Karmasikligi

ABCpdf, ele alınması zor olabilen bir kademeli lisanslama modeli kullanır. Fiyatlar $349'dan başlar ancak özellikler, sunucu dağıtımları ve kullanım durumlarına göre artar. Pek çok geliştirici bu lisanslama labirentini, projeler için bütçelendirme sırasında önemli bir idari yük olarak bildiriyor.

Windows-First Mimari

ABCpdf, çapraz platform desteği eklemiş olsa da, tarihsel olarak Windows merkezli tasarımı, iş akışlarında ara sıra ortaya çıkabilir. Linux konteynerleri, Docker ortamları veya macOS geliştirme ayarlarını hedefleyen geliştiriciler, proje planlama sırasında öngörülmeyen sürtünmelere rastlayabilir.

Dokümantasyon Tarzi

ABCpdf'nin dokümantasyonu titiz olsa da, modern API dokümantasyon standartlarına kıyasla tarihli bir tarz izler. Yeni kullanıcılar, özellikle yeni .NET sürümleriyle çalışırken ihtiyaç duyulan örnekleri bulmakta genellikle zorluk çeker.

Motor Konfigürasyon Aşırı Yükü

ABCpdf, açık bir motor seçimi (Gecko, Trident veya Chrome) ve Clear() çağrıları ile manuel kaynak yönetimi gerektirir. Bu, her PDF işlemine modern geliştiricilerin kaçınmak isteyeceği şablon kodu ekler.

IronPDF ve ABCpdf: Özellik Kiyaslamasi

Asağidaki kıyaslama tablosu iki .NET PDF kutuphanesi arasındaki ana farkları vurgular:

Özellik ABCpdf for .NET IronPDF
Render Motoru Gecko/Trident/Chrome (yapılandırılabilir) Tam Chromium (CSS3, JavaScript)
Çapraz Platform Sonradan eklendi, öncelikle Windows Yerel Windows, Linux, macOS, Docker
Lisans Modeli $349+ fiyatla karmaşık kademeli fiyatlandırma Basit, şeffaf fiyatlar
.NET Desteği .NET Framework odakli Framework 4.6.2'den .NET 9+'a
Kaynak Yönetimi Manuel doc.Clear() gereklidir IDisposable ile using ifadeleri
Lisans Ayarlari Genellikle kayıt defteri kullanır Basit kod tabanli lisans anahtari
Dokümantasyon Eski tarz Modern belgeler, kapsamlı örneklerle

Göç Etmeden Önce

Önkoşullar

Geliştirme ortamınızın şu gereksinimleri karşıladığından emin olun:

  • .NET Framework 4.6.2+ veya .NET Core 3.1+ / .NET 5-9
  • Visual Studio 2019+ veya JetBrains Rider
  • NuGet Paket Yöneticisi erişimi
  • IronPDF lisans anahtarı (ücretsiz deneme mevcut)

Tüm ABCpdf Referanslarını Bulun

ABCpdf for .NET kullanan tüm dosyaları bulmak için çözüm dizininizde bu komutları çalıştırın:

grep -r "using WebSupergoo" --include="*.cs" .
grep -r "ABCpdf" --include="*.csproj" .
grep -r "using WebSupergoo" --include="*.cs" .
grep -r "ABCpdf" --include="*.csproj" .
SHELL

Bu denetim, tüm dosyaları tespit eder, tam göç kapsama sağlar.

Beklenen Büyük Değişiklikler

ABCpdf for .NET veIronPDFarasındaki mimari farklılıkları anlamak, göç sırasında sürprizleri önler:

Kategori ABCpdf Davranışı IronPDF Davranışı Göç İşlemi
Nesne Modeli Doc sınıfı merkezi ChromePdfRenderer + PdfDocument Belgeden ayrık render
Kaynak Temizleme Manuel doc.Clear() IDisposable deseni using ifadelerini kullanın
Motor Seçimi doc.HtmlOptions.Engine = EngineType.Chrome Dahili Chrome Motor yapılandırmasını kaldırın
Sayfa Dizineleme 1 tabanlı (doc.Page = 1) 0 tabanlı (pdf.Pages[0]) Dizin referanslarını ayarlayın
Koordinatlar doc.Rect ile noktaya dayalı CSS bazlı kenar boşlukları CSS veya RenderingOptions kullanın

Hızlı Başlangıç: 5 Dakikalık Göç

Adım 1: NuGet Paketlerini Güncelleyin

# Remove ABCpdf
dotnet remove package ABCpdf

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

# Install IronPDF
dotnet add package IronPdf
SHELL

Adım 2: Lisans Anahtarınızı Ayarlayın

Herhangi birIronPDFişlemi öncesi, uygulama başlangıcında bunu ekleyin:

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

Adım 3: Genel Bul ve Değiştir

Kod tabanınızdaki tüm ad alanı referanslarını güncelleyin:

Bul Şununla Değiştir
using WebSupergoo.ABCpdf13; using IronPdf;
using WebSupergoo.ABCpdf13.Objects; using IronPdf;
using WebSupergoo.ABCpdf12; using IronPdf;
using WebSupergoo.ABCpdf11; using IronPdf;

API Referansının Tamamı

Belge Oluşturma Yöntemleri

Aşağıdaki tablo,ABCpdf for .NETyöntemleriniIronPDFeşdeğerlerine eşlemektedir:

ABCpdf Yöntemi IronPDF Yöntemi
new Doc() new ChromePdfRenderer()
doc.AddImageUrl(url) renderer.RenderUrlAsPdf(url)
doc.AddImageHtml(html) renderer.RenderHtmlAsPdf(html)
doc.AddImageFile(path) renderer.RenderHtmlFileAsPdf(path)
doc.Read(path) PdfDocument.FromFile(path)
doc.Save(path) pdf.SaveAs(path)
doc.GetData() pdf.BinaryData
doc.Clear() using ifadesini kullanın

Sayfa Manipülasyon Yöntemleri

ABCpdf Yöntemi IronPDF Yöntemi
doc.PageCount pdf.PageCount
doc.Page = n pdf.Pages[n-1]
doc.Delete(pageId) pdf.RemovePages(index)
doc.Append(otherDoc) PdfDocument.Merge(pdf1, pdf2)
doc.Rect.Inset(x, y) RenderingOptions.MarginTop/Bottom/Left/Right

Güvenlik ve Şifreleme Yöntemleri

ABCpdf Yöntemi IronPDF Yöntemi
doc.Encryption.Password pdf.SecuritySettings.OwnerPassword
doc.Encryption.CanPrint pdf.SecuritySettings.AllowUserPrinting
doc.Encryption.CanCopy pdf.SecuritySettings.AllowUserCopyPasteContent
doc.SetInfo("Title", value) pdf.MetaData.Title

Kod Geçiş Örnekleri

Örnek 1: URL'den PDF'ye HTML

Bu örnek, en yaygın PDF oluşturma görevlerinden biri olan bir web sayfasını PDF'ye dönüştürmeyi gösterir.

ABCpdf for .NET Uygulaması:

// NuGet: Install-Package ABCpdf
using System;
using WebSupergoo.ABCpdf13;
using WebSupergoo.ABCpdf13.Objects;

class Program
{
    static void Main()
    {
        Doc doc = new Doc();
        doc.HtmlOptions.Engine = EngineType.Chrome;
        doc.AddImageUrl("https://www.example.com");
        doc.Save("output.pdf");
        doc.Clear();
    }
}
// NuGet: Install-Package ABCpdf
using System;
using WebSupergoo.ABCpdf13;
using WebSupergoo.ABCpdf13.Objects;

class Program
{
    static void Main()
    {
        Doc doc = new Doc();
        doc.HtmlOptions.Engine = EngineType.Chrome;
        doc.AddImageUrl("https://www.example.com");
        doc.Save("output.pdf");
        doc.Clear();
    }
}
Imports System
Imports WebSupergoo.ABCpdf13
Imports WebSupergoo.ABCpdf13.Objects

Class Program
    Shared Sub Main()
        Dim doc As New Doc()
        doc.HtmlOptions.Engine = EngineType.Chrome
        doc.AddImageUrl("https://www.example.com")
        doc.Save("output.pdf")
        doc.Clear()
    End Sub
End Class
$vbLabelText   $csharpLabel

IronPDF Uygulaması:

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using System;
using IronPdf;

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

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

IronPDF'ün yaklaşımı, açık motor yapılandırması ve manuel temizlemeye olan ihtiyaçı ortadan kaldırarak kod karmaşıklığını azaltırken tam Chrome render yeteneklerini korur.

Örnek 2: HTML Dizesinden PDF

HTML dizelerini PDF'ye dönüştürmek, dinamik raporlar ve belgeler oluşturmak için gereklidir.

ABCpdf for .NET Uygulaması:

// NuGet: Install-Package ABCpdf
using System;
using WebSupergoo.ABCpdf13;
using WebSupergoo.ABCpdf13.Objects;

class Program
{
    static void Main()
    {
        string html = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>";
        Doc doc = new Doc();
        doc.HtmlOptions.Engine = EngineType.Chrome;
        doc.AddImageHtml(html);
        doc.Save("output.pdf");
        doc.Clear();
    }
}
// NuGet: Install-Package ABCpdf
using System;
using WebSupergoo.ABCpdf13;
using WebSupergoo.ABCpdf13.Objects;

class Program
{
    static void Main()
    {
        string html = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>";
        Doc doc = new Doc();
        doc.HtmlOptions.Engine = EngineType.Chrome;
        doc.AddImageHtml(html);
        doc.Save("output.pdf");
        doc.Clear();
    }
}
Imports System
Imports WebSupergoo.ABCpdf13
Imports WebSupergoo.ABCpdf13.Objects

Class Program
    Shared Sub Main()
        Dim html As String = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>"
        Dim doc As New Doc()
        doc.HtmlOptions.Engine = EngineType.Chrome
        doc.AddImageHtml(html)
        doc.Save("output.pdf")
        doc.Clear()
    End Sub
End Class
$vbLabelText   $csharpLabel

IronPDF Uygulaması:

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

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

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

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

IronPDF sürümü, daha az satır kod gerektirir ve varsayılan olarak Chrome render kullanır, tüm platformlarda tutarlı çıktı sağlar.

Örnek 3: Birden Fazla PDF'yi Birleştirme

Çok sayıda PDF belgesini birleştirmek, belge işleme iş akışlarında sık karşılaşılan bir gerekliliktir.

ABCpdf for .NET Uygulaması:

// NuGet: Install-Package ABCpdf
using System;
using WebSupergoo.ABCpdf13;
using WebSupergoo.ABCpdf13.Objects;

class Program
{
    static void Main()
    {
        Doc doc1 = new Doc();
        doc1.Read("document1.pdf");

        Doc doc2 = new Doc();
        doc2.Read("document2.pdf");

        doc1.Append(doc2);
        doc1.Save("merged.pdf");

        doc1.Clear();
        doc2.Clear();
    }
}
// NuGet: Install-Package ABCpdf
using System;
using WebSupergoo.ABCpdf13;
using WebSupergoo.ABCpdf13.Objects;

class Program
{
    static void Main()
    {
        Doc doc1 = new Doc();
        doc1.Read("document1.pdf");

        Doc doc2 = new Doc();
        doc2.Read("document2.pdf");

        doc1.Append(doc2);
        doc1.Save("merged.pdf");

        doc1.Clear();
        doc2.Clear();
    }
}
Imports System
Imports WebSupergoo.ABCpdf13
Imports WebSupergoo.ABCpdf13.Objects

Class Program
    Shared Sub Main()
        Dim doc1 As New Doc()
        doc1.Read("document1.pdf")

        Dim doc2 As New Doc()
        doc2.Read("document2.pdf")

        doc1.Append(doc2)
        doc1.Save("merged.pdf")

        doc1.Clear()
        doc2.Clear()
    End Sub
End Class
$vbLabelText   $csharpLabel

IronPDF Uygulaması:

// NuGet: Install-Package IronPdf
using System;
using System.Collections.Generic;
using IronPdf;

class Program
{
    static void Main()
    {
        var pdf1 = PdfDocument.FromFile("document1.pdf");
        var pdf2 = PdfDocument.FromFile("document2.pdf");

        var merged = PdfDocument.Merge(pdf1, pdf2);
        merged.SaveAs("merged.pdf");
    }
}
// NuGet: Install-Package IronPdf
using System;
using System.Collections.Generic;
using IronPdf;

class Program
{
    static void Main()
    {
        var pdf1 = PdfDocument.FromFile("document1.pdf");
        var pdf2 = PdfDocument.FromFile("document2.pdf");

        var merged = PdfDocument.Merge(pdf1, pdf2);
        merged.SaveAs("merged.pdf");
    }
}
Imports System
Imports System.Collections.Generic
Imports IronPdf

Class Program
    Shared Sub Main()
        Dim pdf1 = PdfDocument.FromFile("document1.pdf")
        Dim pdf2 = PdfDocument.FromFile("document2.pdf")

        Dim merged = PdfDocument.Merge(pdf1, pdf2)
        merged.SaveAs("merged.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

IronPDF'nin statik Merge metodu, birden fazla belge kabul eden daha temiz bir API sağlar ve bireysel Doc örneklerini takip etme ve temizleme ihtiyaçını ortadan kaldırır.

Örnek 4: Kenar Boşlukları ile Tam Göç Deseni

Bu örnek, özel kenar boşlukları ile PDF oluşturma için öncesi/sonrası tam göçü gösterir.

Önce (ABCpdf for .NET):

using WebSupergoo.ABCpdf13;
using WebSupergoo.ABCpdf13.Objects;

public byte[] GeneratePdf(string html)
{
    Doc doc = new Doc();
    doc.HtmlOptions.Engine = EngineType.Chrome;
    doc.Rect.Inset(20, 20);
    doc.AddImageHtml(html);
    byte[] data = doc.GetData();
    doc.Clear();  // Manual cleanup required
    return data;
}
using WebSupergoo.ABCpdf13;
using WebSupergoo.ABCpdf13.Objects;

public byte[] GeneratePdf(string html)
{
    Doc doc = new Doc();
    doc.HtmlOptions.Engine = EngineType.Chrome;
    doc.Rect.Inset(20, 20);
    doc.AddImageHtml(html);
    byte[] data = doc.GetData();
    doc.Clear();  // Manual cleanup required
    return data;
}
Imports WebSupergoo.ABCpdf13
Imports WebSupergoo.ABCpdf13.Objects

Public Function GeneratePdf(html As String) As Byte()
    Dim doc As New Doc()
    doc.HtmlOptions.Engine = EngineType.Chrome
    doc.Rect.Inset(20, 20)
    doc.AddImageHtml(html)
    Dim data As Byte() = doc.GetData()
    doc.Clear()  ' Manual cleanup required
    Return data
End Function
$vbLabelText   $csharpLabel

Sonra (IronPDF):

using IronPdf;

public byte[] GeneratePdf(string html)
{
    var renderer = new ChromePdfRenderer();
    renderer.RenderingOptions.MarginTop = 20;
    renderer.RenderingOptions.MarginBottom = 20;
    renderer.RenderingOptions.MarginLeft = 20;
    renderer.RenderingOptions.MarginRight = 20;

    using var pdf = renderer.RenderHtmlAsPdf(html);
    return pdf.BinaryData;  // Automatic cleanup with 'using'
}
using IronPdf;

public byte[] GeneratePdf(string html)
{
    var renderer = new ChromePdfRenderer();
    renderer.RenderingOptions.MarginTop = 20;
    renderer.RenderingOptions.MarginBottom = 20;
    renderer.RenderingOptions.MarginLeft = 20;
    renderer.RenderingOptions.MarginRight = 20;

    using var pdf = renderer.RenderHtmlAsPdf(html);
    return pdf.BinaryData;  // Automatic cleanup with 'using'
}
Imports IronPdf

Public Function GeneratePdf(html As String) As Byte()
    Dim renderer As New ChromePdfRenderer()
    renderer.RenderingOptions.MarginTop = 20
    renderer.RenderingOptions.MarginBottom = 20
    renderer.RenderingOptions.MarginLeft = 20
    renderer.RenderingOptions.MarginRight = 20

    Using pdf = renderer.RenderHtmlAsPdf(html)
        Return pdf.BinaryData  ' Automatic cleanup with 'Using'
    End Using
End Function
$vbLabelText   $csharpLabel

Gelişmiş Göç Senaryoları

ASP.NET Core Web Uygulaması

.NET 6+ ile web uygulamaları geliştiren veya 2025-2026'daki .NET 10 sürümleri için plan yapan ekipler için önerilen desen:

ABCpdf Deseni:

[HttpPost]
public IActionResult GeneratePdf([FromBody] ReportRequest request)
{
    Doc doc = new Doc();
    doc.HtmlOptions.Engine = EngineType.Chrome;
    doc.AddImageHtml(request.Html);
    byte[] pdfBytes = doc.GetData();
    doc.Clear();

    return File(pdfBytes, "application/pdf", "report.pdf");
}
[HttpPost]
public IActionResult GeneratePdf([FromBody] ReportRequest request)
{
    Doc doc = new Doc();
    doc.HtmlOptions.Engine = EngineType.Chrome;
    doc.AddImageHtml(request.Html);
    byte[] pdfBytes = doc.GetData();
    doc.Clear();

    return File(pdfBytes, "application/pdf", "report.pdf");
}
<HttpPost>
Public Function GeneratePdf(<FromBody> request As ReportRequest) As IActionResult
    Dim doc As New Doc()
    doc.HtmlOptions.Engine = EngineType.Chrome
    doc.AddImageHtml(request.Html)
    Dim pdfBytes As Byte() = doc.GetData()
    doc.Clear()

    Return File(pdfBytes, "application/pdf", "report.pdf")
End Function
$vbLabelText   $csharpLabel

IronPDF Deseni:

[HttpPost]
public IActionResult GeneratePdf([FromBody] ReportRequest request)
{
    var renderer = new ChromePdfRenderer();
    using var pdf = renderer.RenderHtmlAsPdf(request.Html);

    return File(pdf.BinaryData, "application/pdf", "report.pdf");
}
[HttpPost]
public IActionResult GeneratePdf([FromBody] ReportRequest request)
{
    var renderer = new ChromePdfRenderer();
    using var pdf = renderer.RenderHtmlAsPdf(request.Html);

    return File(pdf.BinaryData, "application/pdf", "report.pdf");
}
<HttpPost>
Public Function GeneratePdf(<FromBody> request As ReportRequest) As IActionResult
    Dim renderer As New ChromePdfRenderer()
    Using pdf = renderer.RenderHtmlAsPdf(request.Html)
        Return File(pdf.BinaryData, "application/pdf", "report.pdf")
    End Using
End Function
$vbLabelText   $csharpLabel

Asenkron PDF Oluşturma

ABCpdf'da yerel asenkron destek yok. IronPDF, daha iyi web uygulama performansı için asenkron yöntemler sunar:

using IronPdf;

public async Task<byte[]> GeneratePdfAsync(string html)
{
    var renderer = new ChromePdfRenderer();
    using var pdf = await renderer.RenderHtmlAsPdfAsync(html);
    return pdf.BinaryData;
}
using IronPdf;

public async Task<byte[]> GeneratePdfAsync(string html)
{
    var renderer = new ChromePdfRenderer();
    using var pdf = await renderer.RenderHtmlAsPdfAsync(html);
    return pdf.BinaryData;
}
Imports IronPdf

Public Async Function GeneratePdfAsync(html As String) As Task(Of Byte())
    Dim renderer As New ChromePdfRenderer()
    Using pdf = Await renderer.RenderHtmlAsPdfAsync(html)
        Return pdf.BinaryData
    End Using
End Function
$vbLabelText   $csharpLabel

Bağımlılık Enjeksiyon Kurulumu

IronPDF'ü, gelecekteki C# 14 sürümleri ile uyumlu C# 12+ desenlerini kullanan modern .NET uygulamalarına kaydedin:

// Program.cs (.NET 6+)
builder.Services.AddSingleton<ChromePdfRenderer>();

// Or create a service wrapper
public interface IPdfService
{
    Task<byte[]> GeneratePdfAsync(string html);
}

public class IronPdfService : IPdfService
{
    private readonly ChromePdfRenderer _renderer;

    public IronPdfService()
    {
        _renderer = new ChromePdfRenderer();
        _renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
    }

    public async Task<byte[]> GeneratePdfAsync(string html)
    {
        using var pdf = await _renderer.RenderHtmlAsPdfAsync(html);
        return pdf.BinaryData;
    }
}

// Register: builder.Services.AddSingleton<IPdfService, IronPdfService>();
// Program.cs (.NET 6+)
builder.Services.AddSingleton<ChromePdfRenderer>();

// Or create a service wrapper
public interface IPdfService
{
    Task<byte[]> GeneratePdfAsync(string html);
}

public class IronPdfService : IPdfService
{
    private readonly ChromePdfRenderer _renderer;

    public IronPdfService()
    {
        _renderer = new ChromePdfRenderer();
        _renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
    }

    public async Task<byte[]> GeneratePdfAsync(string html)
    {
        using var pdf = await _renderer.RenderHtmlAsPdfAsync(html);
        return pdf.BinaryData;
    }
}

// Register: builder.Services.AddSingleton<IPdfService, IronPdfService>();
Imports Microsoft.Extensions.DependencyInjection
Imports System.Threading.Tasks

' Program.vb (.NET 6+)
builder.Services.AddSingleton(Of ChromePdfRenderer)()

' Or create a service wrapper
Public Interface IPdfService
    Function GeneratePdfAsync(html As String) As Task(Of Byte())
End Interface

Public Class IronPdfService
    Implements IPdfService

    Private ReadOnly _renderer As ChromePdfRenderer

    Public Sub New()
        _renderer = New ChromePdfRenderer()
        _renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
    End Sub

    Public Async Function GeneratePdfAsync(html As String) As Task(Of Byte()) Implements IPdfService.GeneratePdfAsync
        Using pdf = Await _renderer.RenderHtmlAsPdfAsync(html)
            Return pdf.BinaryData
        End Using
    End Function
End Class

' Register: builder.Services.AddSingleton(Of IPdfService, IronPdfService)()
$vbLabelText   $csharpLabel

Performans Optimizasyon İpuçları

Toplu İşlemler İçin Renderer'ı Yeniden Kullanın

// Good: Single renderer instance
var renderer = new ChromePdfRenderer();
foreach (var html in htmlList)
{
    using var pdf = renderer.RenderHtmlAsPdf(html);
    pdf.SaveAs($"output_{i}.pdf");
}

// Bad: New renderer each time (slower startup)
foreach (var html in htmlList)
{
    var renderer = new ChromePdfRenderer(); // Overhead!
    using var pdf = renderer.RenderHtmlAsPdf(html);
    pdf.SaveAs($"output_{i}.pdf");
}
// Good: Single renderer instance
var renderer = new ChromePdfRenderer();
foreach (var html in htmlList)
{
    using var pdf = renderer.RenderHtmlAsPdf(html);
    pdf.SaveAs($"output_{i}.pdf");
}

// Bad: New renderer each time (slower startup)
foreach (var html in htmlList)
{
    var renderer = new ChromePdfRenderer(); // Overhead!
    using var pdf = renderer.RenderHtmlAsPdf(html);
    pdf.SaveAs($"output_{i}.pdf");
}
Imports System

' Good: Single renderer instance
Dim renderer As New ChromePdfRenderer()
For Each html In htmlList
    Using pdf = renderer.RenderHtmlAsPdf(html)
        pdf.SaveAs($"output_{i}.pdf")
    End Using
Next

' Bad: New renderer each time (slower startup)
For Each html In htmlList
    Dim renderer As New ChromePdfRenderer() ' Overhead!
    Using pdf = renderer.RenderHtmlAsPdf(html)
        pdf.SaveAs($"output_{i}.pdf")
    End Using
Next
$vbLabelText   $csharpLabel

Hafıza Kullanımı Karşılaştırması

Senaryo ABCpdf for .NET IronPDF
Tek 10 sayfalık PDF ~80 MB ~50 MB
Toplu 100 PDF Yüksek (manuel temizlik) ~100 MB
Büyük HTML (5MB+) Değişken ~150 MB

Genel Göç Sorunlarını Giderme

PDF Boş Gerçekleşiyor

Belirti: Göçten sonra çıktı PDF boş sayfalar içeriyor.

Çözüm: JavaScript içeriği render öncesi tamamen yüklenmemiş olabilir:

var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.WaitFor.RenderDelay(2000); // Wait 2 seconds
// Or wait for specific element:
renderer.RenderingOptions.WaitFor.HtmlElementById("content-loaded");
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.WaitFor.RenderDelay(2000); // Wait 2 seconds
// Or wait for specific element:
renderer.RenderingOptions.WaitFor.HtmlElementById("content-loaded");
Dim renderer = New ChromePdfRenderer()
renderer.RenderingOptions.WaitFor.RenderDelay(2000) ' Wait 2 seconds
' Or wait for specific element:
renderer.RenderingOptions.WaitFor.HtmlElementById("content-loaded")
$vbLabelText   $csharpLabel

Başlıklar/Altbilgiler Görünmüyor

Belirti: TextHeader/TextFooter çıktı da görünür değil.

Çözüm: Kenar boşluklarının başlık/altbilgi içeriği için alan bıraktığını kontrol edin:

var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.MarginTop = 40; // mm - leave room for header
renderer.RenderingOptions.MarginBottom = 40; // mm - leave room for footer

renderer.RenderingOptions.TextHeader = new TextHeaderFooter
{
    CenterText = "Header Text",
    FontSize = 12
};
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.MarginTop = 40; // mm - leave room for header
renderer.RenderingOptions.MarginBottom = 40; // mm - leave room for footer

renderer.RenderingOptions.TextHeader = new TextHeaderFooter
{
    CenterText = "Header Text",
    FontSize = 12
};
Dim renderer = New ChromePdfRenderer()
renderer.RenderingOptions.MarginTop = 40 ' mm - leave room for header
renderer.RenderingOptions.MarginBottom = 40 ' mm - leave room for footer

renderer.RenderingOptions.TextHeader = New TextHeaderFooter With {
    .CenterText = "Header Text",
    .FontSize = 12
}
$vbLabelText   $csharpLabel

Goc Kontrol Listesi

Geçiş Öncesi

  • grep -r "WebSupergoo" --include="*.cs" . ile tüm ABCpdf kullanımını denetleyin
  • Mevcut PDF çıktısı gereksinimlerini belgeleyin
  • Karşılaştırma için örnek PDF çıktıları ile test vakaları oluşturun
  • IronPDF lisans anahtarını edinin
  • Kod tabanını yedekleyin

Göç Sırasında

  • ABCpdf NuGet paketini kaldırın
  • IronPdf NuGet paketini yükleyin
  • Uygulama başlangıcına lisans anahtarını ekleyin
  • Tüm using ifadelerini güncelleyin
  • Doc oluşturulmasını ChromePdfRenderer'ye dönüştürün
  • doc.Clear()'yi using ifadeleri ile değiştirin
  • API eşleme göre yöntem çağrılarını güncelleyin
  • Koordinat tabanlı düzenleri CSS kenar boşluklarına dönüştürün

Geçişten Sonra

  • Mevcut tüm PDF testlerini çalıştırın
  • PDF çıktılarının görsel karşılaştırması (ABCpdf ile IronPDF)
  • Tüm PDF iş akışlarını kademeli ortamda test edin
  • Performans kıyaslama karşılaştırması
  • ABCpdf lisans yapılandırmasını kaldırın
  • CI/CD boru hattı bağımlılıklarını 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