IRONSOFTWAREHOME
VIDEOLAR

C# Kullanarak PDF'lerde Metin ve Bölgeleri Nasıl Karartırız

Curtis Chau
Curtis Chau
Updated: 19 Temmuz 2026

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/ÖzellikPeachPDFIronPDF
UygulamaSaf yönetilen .NET (PeachPDF.PdfSharpCore + SixLabors üzerinde)Yönetilen ve gömülü Chromium çalıştırma ile
LisansBSD-3-MaddeTicari
Hedef ÇerçeveSadece 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
DestekTopluluk odaklı (tek bir geliştirici, jhaygood86)Profesyonel ve özel destekli
HTML İşlemePdfSharpCore üzerinde HTML+CSS düzen motoruTam Chromium
CSS DesteğiHTML+CSS alt kümesi, web yazı tipleri, @font-faceTam CSS3
JavaScriptYürütülmezTam ES2024
Dijital İmzalarHayırEvet
PDF/A UyumluHayırEvet
DokümantasyonSı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
SHELL

Lisans Yapılandırması

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

###PeachPDFKullanımını Tanıma

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

Temel API Eşlemeleri

PeachPDFIronPDF
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.PageOrientationrenderer.RenderingOptions.PaperSize, .PaperOrientation
Kaynak HTML'e gömme (CSS position: fixed)RenderingOptions.HtmlHeader / HtmlFooter
DesteklenmiyorPdfDocument.FromFile(path)
DesteklenmiyorPdfDocument.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);
    }
}

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

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

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

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

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

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

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;

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

Metot Adı Değişiklikleri

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

HTML ile Filigranlar

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

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

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

Asenkron İşlemler

var renderer = new ChromePdfRenderer();
var pdf = await renderer.RenderHtmlAsPdfAsync("<h1>Async PDF</h1>");
pdf.SaveAs("async_output.pdf");

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

ÖzellikPeachPDFIronPDF
HTML'den PDF'yePdfSharpCore tabanlı düzenTam Chromium
URL'yi PDF'ye çevirHttpClientNetworkAdapter üzerinden (JS yok)Evet
CSS Grid/FlexboxKısmi / garanti edilmezEvet
JavaScriptYürütülmezTam ES2024
PDF'leri birleştirYok (sadece HTML->PDF)Evet
PDF AyırmaHayırEvet
FiligranlarHTML üzerinden manuelTam HTML
Başlıklar/AltbilgilerHTML/CSS üzerinden manuelTam HTML
Dijital İmzalarHayırEvet
PDF/AHayırEvet
Form DoldurmaHayırEvet
Metin ÇıkarmaHayırEvet
Resim ÇıkarmaHayırEvet
Asenkron DestekYalnızca Asenkron APIEvet
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);
C#

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ın: PeachPDF, 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ı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