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

PeachPDF'den IronPDF'e C# ile Nasıl Geçilir

PeachPDF'ten IronPDF'ye geçiş yapmak, kapsamlı özellikler, aktif geliştirme ve profesyonel destekle kurumsal düzeyde PDF oluşturma erişimi sağlar. Bu kılavuz, PeachPDF'in 1.0 öncesi senkronize HTML'den PDF'ye iş akışından, bütünüyle gelişmiş PDF çözümüne Chromium işleme, güvenlik ayarları ve belge manipülasyon API'leri ile geçmenizi sağlayacak adım adım geçiş yolunu şekillendirmektedir.

Neden PeachPDF'ten IronPDF'ye Geçmeli

PeachPDF'yi Anlamak

PeachPDF, HTML'yi PDF'ye dönüştürmesi gereken geliştiriciler için tasarlanmış .NET ekosistemine nispeten yeni bir girişimdir. PeachPDF, kütüphane olarak, harici süreçlere dayanmadan yerel bir .NET uygulaması vaat eder ve bu da .NET'in desteklendiği platformlarda sorunsuz bir şekilde entegre edilebileceğini garanti eder. Bu özellik PeachPDF'yi, hafif, yönetilen bir kütüphane çözümü arayan projeler için cazip bir seçenek haline getirir.

Potansiyeline rağmen,PeachPDFhala geliştirilme aşamasında olup heyecan verici olasılıkları ve belirgin sınırlamaları vurgular. PeachPDF, çeşitli ortamlarda kolay dağıtım vaat eden tamamen .NET çekirdeği nedeniyle cazibesini korur. Bununla birlikte, daha küçük kullanıcı tabanı ve topluluk destekli olması, sınırlı benimsenmeye dönüşür.

PeachPDF'nin Sınırlamaları

PeachPDF, BSD-3-Madde lisansı altında yayımlanan ve tek bir geliştirici tarafından bakımı yapılan (en son 0.7.26, Ekim 2025) bir ön-1.0 .NET kütüphanesidir. Yerleşik çözümlerin olgunluğu, özellikleri ve desteğine sahip değildir. Geçiş için ana sebepler:

  1. 1.0 Öncesi Özellik Seti: PeachPDF'de dijital imzalar,PDF/Auyumluluğu, OCR, form doldurma veya sayfa tabanlı başlık/alt bilgi API'si yerleşik değildir.

  2. JavaScript motoru yok: PeachPDF, PeachPDF.PdfSharpCore üzerine kurulmuş bir düzen motorudur, tarayıcı değildir; Betikler ve karmaşık Grid/Flexbox yerleşimleri çalışmaz.

  3. Sadece net8.0: paket net8.0 hedef almaktadır; eski .NET Framework / .NET 6 projeleri yükseltmeli veya farklı bir kütüphane seçmelidir.

  4. Küçük Topluluk: yalnız bir GitHub bakımcısı, sınırlı belgeler, sınırlı örnekler.

  5. Kurumsal Destek Yok: ticari destek veya SLA seçenekleri yoktur.

PeachPDFvs IronPDF Karşılaştırması

Özellik/Özellik PeachPDF IronPDF
Uygulama Saf yönetilen .NET (PeachPDF.PdfSharpCore + SixLabors üzerinde) Yönetilen ve gömülü Chromium çalıştırma ile
Lisans BSD-3-Madde Ticari
Hedef Çerçeve Sadece net8.0 .NET Framework 4.6.2+, .NET 6/7/8
Kullanıcı Tabanı Küçük (ön-1.0, Ekim 2025 yayımlanan 0.7.26) Büyük
Destek Topluluk odaklı (tek bir geliştirici, jhaygood86) Profesyonel ve özel destekli
HTML İşleme PdfSharpCore üzerinde HTML+CSS düzen motoru Tam Chromium
CSS Desteği HTML+CSS alt kümesi, web yazı tipleri, @font-face Tam CSS3
JavaScript Yürütülmez Tam ES2024
Dijital İmzalar Hayır Evet
PDF/A Uyumlu Hayır Evet
Dokümantasyon Sınırlı (tek README) Kapsamlı
Geliştirme Durumu Ön-1.0 (0.7.26, Ekim 2025) Olgun, istikrarlı sürüm

IronPDF, daha geniş işlevselliğiyle öne çıkar, sadece HTML'den PDF'ye dönüşüm sağlamakla kalmaz, aynı zamanda OCR, filigranlama ve diğer gelişmiş özellikler de destekler. Profesyonel destek yapısı geliştiricilerin karşılaştığı sorunlar için hızlı çözüm yolları sunar.

Modern .NET'i benimseyen ekipler için, IronPDF, güncel .NET sürümleri arasında uzun vadeli kararlılığı destekleyen kapsamlı özellikler ve aktif bakım sunar.


Başlamadan Önce

Ön Koş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ükleyebilme
  3. IronPDF Lisansı: Lisans anahtarınızı ironpdf.com adresinden edinin

NuGet Paket Değişiklikleri

# Remove PeachPDF
dotnet remove package PeachPDF

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

# Install IronPDF
dotnet add package IronPdf
SHELL

Lisans Yapılandırması

// Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
' Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
$vbLabelText   $csharpLabel

PeachPDFKullanımını Tanıma

# AuditPeachPDFusage in codebase
grep -r "using PeachPDF" --include="*.cs" .
grep -r "PdfGenerator\|PdfGenerateConfig\|GeneratePdf" --include="*.cs" .
# AuditPeachPDFusage in codebase
grep -r "using PeachPDF" --include="*.cs" .
grep -r "PdfGenerator\|PdfGenerateConfig\|GeneratePdf" --include="*.cs" .
SHELL

Tam API Referansı

Ad Alanı Değişiklikleri

// Before: PeachPDF
using PeachPDF;
using PeachPDF.PdfSharpCore;
using System.IO;
using System.Threading.Tasks;

// After: IronPDF
using IronPdf;
using IronPdf.Rendering;
// Before: PeachPDF
using PeachPDF;
using PeachPDF.PdfSharpCore;
using System.IO;
using System.Threading.Tasks;

// After: IronPDF
using IronPdf;
using IronPdf.Rendering;
Imports IronPdf
Imports IronPdf.Rendering
Imports System.IO
Imports System.Threading.Tasks
$vbLabelText   $csharpLabel

Temel API Eşlemeleri

PeachPDF IronPDF
new PdfGenerator() new ChromePdfRenderer()
await generator.GeneratePdf(html, config) renderer.RenderHtmlAsPdf(html)
document.Save(stream) pdf.SaveAs(path)
document.Save(memStream) ardından memStream.ToArray() pdf.BinaryData
new PdfGenerateConfig { NetworkAdapter = new HttpClientNetworkAdapter(...) } renderer.RenderUrlAsPdf(url)
config.PageSize, config.PageOrientation renderer.RenderingOptions.PaperSize, .PaperOrientation
Kaynak HTML'e gömme (CSS position: fixed) RenderingOptions.HtmlHeader / HtmlFooter
Desteklenmiyor PdfDocument.FromFile(path)
Desteklenmiyor PdfDocument.Merge(pdfs) / pdf.AppendPdf(...)

Kod Göç Örnekleri

Örnek 1: HTML Metin Dizesi'ni PDF'e Dönüşüm

Önce (PeachPDF):

using PeachPDF;
using PeachPDF.PdfSharpCore;
using System.IO;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        var html = "<html><body><h1>Hello World</h1></body></html>";

        var config = new PdfGenerateConfig
        {
            PageSize = PageSize.Letter,
            PageOrientation = PageOrientation.Portrait
        };

        var generator = new PdfGenerator();
        var document = await generator.GeneratePdf(html, config);

        using var stream = File.Create("output.pdf");
        document.Save(stream);
    }
}
using PeachPDF;
using PeachPDF.PdfSharpCore;
using System.IO;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        var html = "<html><body><h1>Hello World</h1></body></html>";

        var config = new PdfGenerateConfig
        {
            PageSize = PageSize.Letter,
            PageOrientation = PageOrientation.Portrait
        };

        var generator = new PdfGenerator();
        var document = await generator.GeneratePdf(html, config);

        using var stream = File.Create("output.pdf");
        document.Save(stream);
    }
}
Imports PeachPDF
Imports PeachPDF.PdfSharpCore
Imports System.IO
Imports System.Threading.Tasks

Module Program
    Async Function Main() As Task
        Dim html As String = "<html><body><h1>Hello World</h1></body></html>"

        Dim config As New PdfGenerateConfig With {
            .PageSize = PageSize.Letter,
            .PageOrientation = PageOrientation.Portrait
        }

        Dim generator As New PdfGenerator()
        Dim document = Await generator.GeneratePdf(html, config)

        Using stream As FileStream = File.Create("output.pdf")
            document.Save(stream)
        End Using
    End Function
End Module
$vbLabelText   $csharpLabel

Sonrası (IronPDF):

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

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

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

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

Bu örnek, iki kütüphane arasındaki temel farkı gösteriyor. PeachPDF, PdfGenerator (motor) ile PdfGenerateConfig (ayarlar) arasında ayrım yapar, bir asenkron GeneratePdf yöntemi sunar ve Save yöntemi bir Stream yazan bir belge döndürür.IronPDFChromePdfRenderer ile RenderHtmlAsPdf() kullanır ve içinde yerleşik bir SaveAs() yöntemi olan bir PdfDocument nesnesi döndürür.

IronPDF'nin yaklaşımının pratik bir avantajı: PdfDocument nesnesi kaydedilmeden önce (filigran ekleme, birleştirme, güvenlik ayarları) daha da işlenebilir ve SaveAs bir ara FileStream olmadan doğrudan bir dosya yolunu alır. HTML'den PDF'e belgeler için daha fazla örneğe bakın.

Örnek 2: URL'den PDF'ye Dönüştürme

Önce (PeachPDF):

//PeachPDFhas no ConvertUrl-style helper; URL fetching is wired via
// HttpClientNetworkAdapter and passing null HTML so the engine fetches the page.
using PeachPDF;
using PeachPDF.Network;
using PeachPDF.PdfSharpCore;
using System;
using System.IO;
using System.Net.Http;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        var http = new HttpClient();

        var config = new PdfGenerateConfig
        {
            PageSize = PageSize.Letter,
            NetworkAdapter = new HttpClientNetworkAdapter(http, new Uri("https://www.example.com"))
        };

        var generator = new PdfGenerator();
        var document = await generator.GeneratePdf(null, config);

        using var stream = File.Create("webpage.pdf");
        document.Save(stream);
    }
}
//PeachPDFhas no ConvertUrl-style helper; URL fetching is wired via
// HttpClientNetworkAdapter and passing null HTML so the engine fetches the page.
using PeachPDF;
using PeachPDF.Network;
using PeachPDF.PdfSharpCore;
using System;
using System.IO;
using System.Net.Http;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        var http = new HttpClient();

        var config = new PdfGenerateConfig
        {
            PageSize = PageSize.Letter,
            NetworkAdapter = new HttpClientNetworkAdapter(http, new Uri("https://www.example.com"))
        };

        var generator = new PdfGenerator();
        var document = await generator.GeneratePdf(null, config);

        using var stream = File.Create("webpage.pdf");
        document.Save(stream);
    }
}
Imports PeachPDF
Imports PeachPDF.Network
Imports PeachPDF.PdfSharpCore
Imports System
Imports System.IO
Imports System.Net.Http
Imports System.Threading.Tasks

Module Program
    Async Function Main() As Task
        Dim http As New HttpClient()

        Dim config As New PdfGenerateConfig With {
            .PageSize = PageSize.Letter,
            .NetworkAdapter = New HttpClientNetworkAdapter(http, New Uri("https://www.example.com"))
        }

        Dim generator As New PdfGenerator()
        Dim document = Await generator.GeneratePdf(Nothing, config)

        Using stream As FileStream = File.Create("webpage.pdf")
            document.Save(stream)
        End Using
    End Function
End Module
$vbLabelText   $csharpLabel

Sonrası (IronPDF):

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

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

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

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

PeachPDF'in birinci sınıf URL'den PDF'e yardımcı işlevi yok; Motor sayfayı getirmesi için yapılandırmada NetworkAdapter bir HttpClientNetworkAdapter ve null HTML atıyorsunuz.IronPDF doğrudan RenderUrlAsPdf(url) sağlar. PeachPDFJavaScriptçalıştırmadığı için, tek sayfalık uygulamalar ve dinamik içerikler tipik olarak ağ adaptörü yoluyla doğru bir şekilde render edilmez; IronPDF'ın Chromium motoru modern CSS ve JavaScript'i işler. Daha fazla bilgiyi kılavuzlarımızda öğrenin.

Örnek 3: Başlık ve Alt Bilgi Ekleme

Önce (PeachPDF):

//PeachPDFv0.7.x has no header/footer API. The closest approach is
// to embed the header/footer markup directly inside the source HTML
// using CSS positioning.
using PeachPDF;
using PeachPDF.PdfSharpCore;
using System.IO;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        var html = @"
            <html><head><style>
              .header { position: fixed; top: 0; left: 0; right: 0; text-align:center; }
              .footer { position: fixed; bottom: 0; left: 0; right: 0; text-align:center; }
            </style></head>
            <body>
              <div class='header'>My Header</div>
              <h1>Document Content</h1>
              <div class='footer'>Footer text</div>
            </body></html>";

        var config = new PdfGenerateConfig { PageSize = PageSize.Letter };
        var generator = new PdfGenerator();
        var document = await generator.GeneratePdf(html, config);

        using var stream = File.Create("document.pdf");
        document.Save(stream);
    }
}
//PeachPDFv0.7.x has no header/footer API. The closest approach is
// to embed the header/footer markup directly inside the source HTML
// using CSS positioning.
using PeachPDF;
using PeachPDF.PdfSharpCore;
using System.IO;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        var html = @"
            <html><head><style>
              .header { position: fixed; top: 0; left: 0; right: 0; text-align:center; }
              .footer { position: fixed; bottom: 0; left: 0; right: 0; text-align:center; }
            </style></head>
            <body>
              <div class='header'>My Header</div>
              <h1>Document Content</h1>
              <div class='footer'>Footer text</div>
            </body></html>";

        var config = new PdfGenerateConfig { PageSize = PageSize.Letter };
        var generator = new PdfGenerator();
        var document = await generator.GeneratePdf(html, config);

        using var stream = File.Create("document.pdf");
        document.Save(stream);
    }
}
Imports PeachPDF
Imports PeachPDF.PdfSharpCore
Imports System.IO
Imports System.Threading.Tasks

Module Program
    Async Function Main() As Task
        Dim html As String = "
            <html><head><style>
              .header { position: fixed; top: 0; left: 0; right: 0; text-align:center; }
              .footer { position: fixed; bottom: 0; left: 0; right: 0; text-align:center; }
            </style></head>
            <body>
              <div class='header'>My Header</div>
              <h1>Document Content</h1>
              <div class='footer'>Footer text</div>
            </body></html>"

        Dim config As New PdfGenerateConfig With {.PageSize = PageSize.Letter}
        Dim generator As New PdfGenerator()
        Dim document = Await generator.GeneratePdf(html, config)

        Using stream As FileStream = File.Create("document.pdf")
            document.Save(stream)
        End Using
    End Function
End Module
$vbLabelText   $csharpLabel

Sonrası (IronPDF):

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter() { HtmlFragment = "<div style='text-align:center'>My Header</div>" };
        renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter() { HtmlFragment = "<div style='text-align:center'>Page {page}</div>" };
        var html = "<html><body><h1>Document Content</h1></body></html>";
        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("document.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter() { HtmlFragment = "<div style='text-align:center'>My Header</div>" };
        renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter() { HtmlFragment = "<div style='text-align:center'>Page {page}</div>" };
        var html = "<html><body><h1>Document Content</h1></body></html>";
        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("document.pdf");
    }
}
Imports IronPdf
Imports IronPdf.Rendering
Imports System

Module Program
    Sub Main()
        Dim renderer As New ChromePdfRenderer()
        renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter() With {.HtmlFragment = "<div style='text-align:center'>My Header</div>"}
        renderer.RenderingOptions.HtmlFooter = New HtmlHeaderFooter() With {.HtmlFragment = "<div style='text-align:center'>Page {page}</div>"}
        Dim html As String = "<html><body><h1>Document Content</h1></body></html>"
        Dim pdf = renderer.RenderHtmlAsPdf(html)
        pdf.SaveAs("document.pdf")
    End Sub
End Module
$vbLabelText   $csharpLabel

Bu örnek, önemli bir mimari farkı gösterir.PeachPDFPdfGenerator ve PdfGenerateConfig üzerinde bir başlık/altbilgi API'si sağlamaz, bu yüzden sayfa marginleri kaynak HTML içinde CSS konumlandırması kullanılarak yerleştirilmelidir.IronPDFRenderingOptions.HtmlHeader ve RenderingOptions.HtmlFooter atanan HtmlHeaderFooter nesnelerini kullanır, sayfa marginlerini belge içeriğinden ayırır.

IronPDF yaklaşımı ayrıca başlık/altbilgi boyutunu kontrol etmek için MaxHeight gibi özellikleri de sunar ve sayfa numaralandırması için {page} ve {total-pages} yer tutucularını destekler.

IronPDF için gereken ek ad alanını not edin: using IronPdf.Rendering; sınıf için gereklidir.


Kritik Taşıma Notları

Generator/Renderer Sınıf Değişikliği

PeachPDF bir PdfGenerator + PdfGenerateConfig çifti kullanır;IronPDF tek bir ChromePdfRenderer kullanır:

// PeachPDF
var config = new PdfGenerateConfig { PageSize = PageSize.Letter };
var generator = new PdfGenerator();

// IronPDF
var renderer = new ChromePdfRenderer();
// PeachPDF
var config = new PdfGenerateConfig { PageSize = PageSize.Letter };
var generator = new PdfGenerator();

// IronPDF
var renderer = new ChromePdfRenderer();
' PeachPDF
Dim config As New PdfGenerateConfig With {.PageSize = PageSize.Letter}
Dim generator As New PdfGenerator()

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

Async ve Sync, ve Dönüş Türü

PeachPDF'nin GeneratePdf yalnızca asenkron ve Save yöntemi bir Stream alan bir belge döndürür. IronPDF'nin RenderHtmlAsPdf senkronize (bir asenkron varyantı RenderHtmlAsPdfAsync da mevcuttur) ve bir PdfDocument döndürür:

// PeachPDF: async, save to a Stream
var document = await generator.GeneratePdf(html, config);
using var fs = File.Create("output.pdf");
document.Save(fs);

// IronPDF: synchronous PdfDocument object
PdfDocument pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
// Or get bytes: byte[] bytes = pdf.BinaryData;
// PeachPDF: async, save to a Stream
var document = await generator.GeneratePdf(html, config);
using var fs = File.Create("output.pdf");
document.Save(fs);

// IronPDF: synchronous PdfDocument object
PdfDocument pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
// Or get bytes: byte[] bytes = pdf.BinaryData;
Imports System.IO

' PeachPDF: async, save to a Stream
Dim document = Await generator.GeneratePdf(html, config)
Using fs As FileStream = File.Create("output.pdf")
    document.Save(fs)
End Using

' IronPDF: synchronous PdfDocument object
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("output.pdf")
' Or get bytes: Dim bytes As Byte() = pdf.BinaryData
$vbLabelText   $csharpLabel

Başlık/Alt Bilgi Özellik Değişikliği

// PeachPDF: no header/footer API -- embed in source HTML
// (e.g. via CSS position:fixed)

// IronPDF: HtmlHeaderFooter objects
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
{
    HtmlFragment = "<div>Header</div>"
};
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter()
{
    HtmlFragment = "<div>Footer</div>"
};
// PeachPDF: no header/footer API -- embed in source HTML
// (e.g. via CSS position:fixed)

// IronPDF: HtmlHeaderFooter objects
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
{
    HtmlFragment = "<div>Header</div>"
};
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter()
{
    HtmlFragment = "<div>Footer</div>"
};
' PeachPDF: no header/footer API -- embed in source HTML
' (e.g. via CSS position:fixed)

' IronPDF: HtmlHeaderFooter objects
renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter() With {
    .HtmlFragment = "<div>Header</div>"
}
renderer.RenderingOptions.HtmlFooter = New HtmlHeaderFooter() With {
    .HtmlFragment = "<div>Footer</div>"
}
$vbLabelText   $csharpLabel

Metot Adı Değişiklikleri

PeachPDF IronPDF
await generator.GeneratePdf(html, config) renderer.RenderHtmlAsPdf(html)
NetworkAdapter = new HttpClientNetworkAdapter(...) + GeneratePdf(null, config) renderer.RenderUrlAsPdf(url)
document.Save(stream) pdf.SaveAs(path)

Geçiş Sonrası Yeni Özellikler

IronPDF'ye geçiş yaptıktan sonra, PeachPDF'nin sağlayamayacağı yeteneklere sahip olursunuz:

PDF Birleştirme

var pdf1 = PdfDocument.FromFile("doc1.pdf");
var pdf2 = PdfDocument.FromFile("doc2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
var pdf1 = PdfDocument.FromFile("doc1.pdf");
var pdf2 = PdfDocument.FromFile("doc2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
CONVERTER NOT RUNNING
$vbLabelText   $csharpLabel

HTML ile Filigranlar

var pdf = PdfDocument.FromFile("document.pdf");
pdf.ApplyWatermark("<div style='color: red; font-size: 48pt;'>DRAFT</div>");
pdf.SaveAs("watermarked.pdf");
var pdf = PdfDocument.FromFile("document.pdf");
pdf.ApplyWatermark("<div style='color: red; font-size: 48pt;'>DRAFT</div>");
pdf.SaveAs("watermarked.pdf");
Dim pdf = PdfDocument.FromFile("document.pdf")
pdf.ApplyWatermark("<div style='color: red; font-size: 48pt;'>DRAFT</div>")
pdf.SaveAs("watermarked.pdf")
$vbLabelText   $csharpLabel

Şifre Koruma

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Confidential</h1>");

pdf.SecuritySettings.OwnerPassword = "owner123";
pdf.SecuritySettings.UserPassword = "user123";
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.NoPrint;

pdf.SaveAs("protected.pdf");
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Confidential</h1>");

pdf.SecuritySettings.OwnerPassword = "owner123";
pdf.SecuritySettings.UserPassword = "user123";
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.NoPrint;

pdf.SaveAs("protected.pdf");
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Confidential</h1>")

pdf.SecuritySettings.OwnerPassword = "owner123"
pdf.SecuritySettings.UserPassword = "user123"
pdf.SecuritySettings.AllowUserCopyPasteContent = False
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.NoPrint

pdf.SaveAs("protected.pdf")
$vbLabelText   $csharpLabel

Dijital İmzalar

using IronPdf.Signing;

var pdf = PdfDocument.FromFile("document.pdf");
var signature = new PdfSignature("certificate.pfx", "password")
{
    SigningReason = "Document Approval",
    SigningLocation = "New York"
};
pdf.Sign(signature);
pdf.SaveAs("signed.pdf");
using IronPdf.Signing;

var pdf = PdfDocument.FromFile("document.pdf");
var signature = new PdfSignature("certificate.pfx", "password")
{
    SigningReason = "Document Approval",
    SigningLocation = "New York"
};
pdf.Sign(signature);
pdf.SaveAs("signed.pdf");
Imports IronPdf.Signing

Dim pdf = PdfDocument.FromFile("document.pdf")
Dim signature = New PdfSignature("certificate.pfx", "password") With {
    .SigningReason = "Document Approval",
    .SigningLocation = "New York"
}
pdf.Sign(signature)
pdf.SaveAs("signed.pdf")
$vbLabelText   $csharpLabel

Asenkron İşlemler

var renderer = new ChromePdfRenderer();
var pdf = await renderer.RenderHtmlAsPdfAsync("<h1>Async PDF</h1>");
pdf.SaveAs("async_output.pdf");
var renderer = new ChromePdfRenderer();
var pdf = await renderer.RenderHtmlAsPdfAsync("<h1>Async PDF</h1>");
pdf.SaveAs("async_output.pdf");
Dim renderer As New ChromePdfRenderer()
Dim pdf = Await renderer.RenderHtmlAsPdfAsync("<h1>Async PDF</h1>")
pdf.SaveAs("async_output.pdf")
$vbLabelText   $csharpLabel

Özellik Karşılaştırması Özeti

Özellik PeachPDF IronPDF
HTML'den PDF'ye PdfSharpCore tabanlı düzen Tam Chromium
URL'yi PDF'ye çevir HttpClientNetworkAdapter üzerinden (JS yok) Evet
CSS Grid/Flexbox Kısmi / garanti edilmez Evet
JavaScript Yürütülmez Tam ES2024
PDF'leri birleştir Yok (sadece HTML->PDF) Evet
PDF Ayırma Hayır Evet
Filigranlar HTML üzerinden manuel Tam HTML
Başlıklar/Altbilgiler HTML/CSS üzerinden manuel Tam HTML
Dijital İmzalar Hayır Evet
PDF/A Hayır Evet
Form Doldurma Hayır Evet
Metin Çıkarma Hayır Evet
Resim Çıkarma Hayır Evet
Asenkron Destek Yalnızca Asenkron API Evet
Platformlar Arası net8.0 (Windows / Linux / macOS) Evet

Yaygın Geçiş Sorunları

Sorun 1: API Desen Farklılığı

Sorun: PeachPDF, PdfGenerator (motor) ve PdfGenerateConfig (ayarlar) arasında ayrım yapar ve asenkron;IronPDF bir ChromePdfRenderer kullanır ve senkronize olarak bir PdfDocument döndürür.

Çözüm:

//PeachPDFpattern (async, stream-out)
var config = new PdfGenerateConfig { PageSize = PageSize.Letter };
var generator = new PdfGenerator();
var document = await generator.GeneratePdf(html, config);
using var fs = File.Create(path);
document.Save(fs);

//IronPDF pattern
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs(path);
//PeachPDFpattern (async, stream-out)
var config = new PdfGenerateConfig { PageSize = PageSize.Letter };
var generator = new PdfGenerator();
var document = await generator.GeneratePdf(html, config);
using var fs = File.Create(path);
document.Save(fs);

//IronPDF pattern
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs(path);
Imports System.IO

' PeachPDFpattern (async, stream-out)
Dim config As New PdfGenerateConfig With {.PageSize = PageSize.Letter}
Dim generator As New PdfGenerator()
Dim document = Await generator.GeneratePdf(html, config)
Using fs As FileStream = File.Create(path)
    document.Save(fs)
End Using

' IronPDF pattern
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs(path)
$vbLabelText   $csharpLabel

Sorun 2: Akışa Hedef Kaydetme, Yola Değil

Sorun: PeachPDF'nin document.Save(stream) yalnızca bir Stream alır; IronPDF'nin pdf.SaveAs(path) bir yol dizesi alır.

Çözüm: Bir FileStream açmak yerine doğrudan IronPDF içinde pdf.SaveAs("file.pdf") kullanın.

Sorun 3: Mevcut PDF İşlemleri Yok

Problem:PeachPDFsadece HTML'den PDF'e; mevcut PDF'leri yükleyemez, birleştiremez, bölemez veya düzenleyemez.

Çözüm: Taşındıktan sonra bu operasyonları IronPDF'nin PdfDocument.FromFile, PdfDocument.Merge ve pdf.AppendPdf ile değiştirin.


Geçiş Kontrol Listesi

Öncesi-Geçiş

  • Kod tabanındakiPeachPDFkullanımını denetleyin
  • Özel yapılandırmaları belgeleyin
  • Tüm başlık/altbilgi uygulamalarını not edin
  • ironpdf.com adresinden IronPDF lisans anahtarını edinin
  • İlk önce IronPDF deneme lisansı ile test edin

Paket Değişiklikleri

  • PeachPDF NuGet paketini kaldırın
  • IronPdf NuGet paketini yükleyin: dotnet add package IronPdf

Kod Değişiklikleri

  • Ad alanı içe aktarımlarını güncelle (using PeachPDF;using IronPdf;)
  • Başlık/altbilgi işlevselliği için using IronPdf.Rendering; ekleyin
  • PdfGenerator + PdfGenerateConfig ile ChromePdfRenderer değiştirin
  • await generator.GeneratePdf(html, config) ile renderer.RenderHtmlAsPdf(html) (veya asenkron kalmak için RenderHtmlAsPdfAsync) değiştirin
  • HttpClientNetworkAdapter + GeneratePdf(null, config) ile renderer.RenderUrlAsPdf(url) değiştirin
  • document.Save(stream) ile pdf.SaveAs(path) değiştirin
  • HTML gömülü başlıkları/altbilgileri HtmlFooter nesneleri ile değiştirin
  • Uygulama başlangıcında lisans başlatma ekle

Geçiş Sonrası

  • HTML işleme kalitesini test edin
  • PDF çıktısının beklentilere uyan şekilde olduğunu doğrulayın
  • Sayfa numaralı başlık/altbilgi işlemesini test edin
  • Gerektiğinde yeni yetenekler ekleyin (güvenlik, filigranlar, birleştirme)

Lütfen dikkate alınPeachPDF, ilgili sahibinin tescilli bir markasıdır. Bu site,PeachPDFile bağlantılı, onaylanmış veya desteklenmiş 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