IRONSOFTWAREHOME
VIDEOLAR

C# içinde HTML Dizesi PDF'ye Nasıl Render Edilir

Curtis Chau
Curtis Chau
Updated: 19 Temmuz 2026

PrinceXML'den IronPDF'e geçiş, PDF üretim iş akışınızı harici bir komut satırı sürecinden yerel bir .NET kütüphanesine dönüştürür. Bu kılavuz, proses yönetimi yükünü ortadan kaldıran, dağıtımı basitleştiren ve üretim ötesinde kapsamlı PDF manipülasyon yetenekleri sağlayan eksiksiz, adım adım bir geçiş yolu sunar.

Neden PrinceXML'den IronPDF'e Geçmelisiniz

PrinceXML'i Anlamak

PrinceXML, CSS Sayfa Medya özelliklerine olan bağlılığı sayesinde HTML içeriğini baskı-mükemmel PDF belgelerine dönüştürmede üstün bir yetenek için tasarlanmış gelişmiş bir araçtır. Bu uzmanlaşma, PrinceXML'in, yayıncılık veya hukuki belgeler gibi detaylı baskı tasarımına ihtiyaç duyan endüstriler için değerli bir nitelik olan belgeleri tasarlanan baskı tasarımlarına yüksek sadakatle oluşturmasını sağlar.

Bununla birlikte,PrinceXMLbir .NET kütüphanesi değildir ve bütünleşik olmayan bir komut satırı aracı olarak çalışır, bu da saf .NET çözümlerini tercih eden ortamlar için entegrasyonu zorlayıcı hale getirebilir. Ayrı bir sunucu sürecine dayanması, ek sistem kaynak yönetimini ve proje dağıtımları için potansiyel olarak artan bir karmaşıklığı içerir.

Harici Proses Problemi

PrinceXML, .NET uygulamaları için önemli mimari zorluklar oluşturan ayrı bir komut satırı yürütülebilir dosyası olarak çalışır:

  1. Proses Yönetimi Yükü: Harici süreçleri oluşturmalı, izlemeli ve sonlandırmalıdır.

  2. Yerli .NET Entegrasyonu Yok: stdin/stdout veya geçici dosyalar yoluyla iletişim kur

  3. Dağıtım Karmaşıklığı: Her sunucuda Prince yüklemesi gerektirir.

  4. Sunucu Başına Lisanslama: Her dağıtım ayrı bir lisans gerektirir.

  5. Hata İşleme Zorluğu: Hata tespiti için metin çıkışını ayrıştır.

  6. Async/Await Yok: Engelleyici çağrılar veya karmaşık senkron-olmayan sarmalayıcılar gerektirir.

  7. Yol Bağımlılıkları: PATH veya mutlak yolda Prince yürütülebilir dosyasını bulmalıdır.

###PrinceXMLve IronPDF Karşılaştırması

AspektPrinceXMLIronPDF
MimariHarici SüreçYerel .NET Kütüphanesi
EntegrasyonKomut satırıDoğrudan API
DağıtımHer sunucuya kurulumTek bir NuGet paketi
Hata YönetimiMetin çıktısını ayrıştırma.NET istisnaları
Asenkron DestekManuel sarmalayıcılarYerel async/await
PDF ManipülasyonuYalnızca üretimTam manipülasyon (birleştir, böl, düzenle)
LisanslamaMasaüstü $495 / Sunucu $3,800; free non-commercial use with logo watermarkHer geliştirici için
GüncellemelerManuel yeniden kurulumNuGet güncellemesi
Hata ayıklamaZorTam hata ayıklayıcı desteği
Dijital İmzalarHayırEvet
FormlarHayırEvet
Docker DesteğiKarmaşıkBasit
Bulut FonksiyonuZorKolay

IronPDF, sadece HTML'den PDF'e dönüştürmenin ötesine geçen, gelişmiş PDF manipülasyon görevlerini içeren, düzenleme, birleştirme ve dijital imzalar gibi .NET yerli yeteneklerine sahip bir alternatif sunar. IronPDF'in API'si, minimal şablon koduyla dönüşümleri ve manipülasyonları gerçekleştirmesine izin vererek basitlik ve kullanım kolaylığı için tasarlanmıştır.

Modern .NET'i benimseyen ekipler için, IronPDF'in sorunsuz dağıtımı, dış bağımlılıklar veya sunucu süreçleri gerektirmez ve böylece .NET frameworke entegrasyonu kolaylaştırır.


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

# Install IronPDF
dotnet add package IronPdf

# Remove Prince wrapper if using one
dotnet remove package PrinceXMLWrapper
SHELL

Lisans Yapılandırması

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

###PrinceXMLKullanımı Araştırması

# Find Prince process calls
grep -r "prince" --include="*.cs" .
grep -r "Process.Start" --include="*.cs" . | grep -i prince
grep -r "@page" --include="*.css" .
grep -r "prince-" --include="*.css" .
SHELL

Tam API Referansı

Ad Alanı Değişiklikleri

// Before: PrinceXML
using PrinceXML.Wrapper;
using System.Diagnostics;
using System.IO;

// After: IronPDF
using IronPdf;

Komut Satırından Metoda Haritalama

Prince KomutuIronPDF Eşdeğeri
prince input.html -o output.pdfrenderer.RenderHtmlFileAsPdf("input.html").SaveAs("output.pdf")
prince --style=custom.css input.htmlHTML'de CSS dahil edin veya RenderingOptions kullanın
prince --javascriptrenderer.RenderingOptions.EnableJavaScript = true
prince --no-javascriptrenderer.RenderingOptions.EnableJavaScript = false
prince --page-size=Letterrenderer.RenderingOptions.PaperSize = PdfPaperSize.Letter
prince --page-margin=1inrenderer.RenderingOptions.MarginTop = 72 (72 puan = 1 inç)
prince --encryptpdf.SecuritySettings.OwnerPassword = "..."
prince --user-password=pwpdf.SecuritySettings.UserPassword = "pw"
prince --disallow-printpdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.NoPrint
prince --disallow-copypdf.SecuritySettings.AllowUserCopyPasteContent = false
prince --baseurl=http://...renderer.RenderingOptions.BaseUrl = new Uri("http://...")
prince --media=printrenderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print
prince --media=screenrenderer.RenderingOptions.CssMediaType = PdfCssMediaType.Screen

CSS @page ve RenderingOptions Haritalama

CSS @page ÖzelliğiIronPDF Eşdeğeri
size: A4PaperSize = PdfPaperSize.A4
size: LetterPaperSize = PdfPaperSize.Letter
size:A4landscapePaperSize = PdfPaperSize.A4 + PaperOrientation = Landscape
margin: 2cmMarginTop/Bottom/Left/Right = 56
margin-top: 1inMarginTop = 72
@top-center { content: "..." }Ortalanmış div ile HtmlHeader
@bottom-right { content: counter(page) }HtmlFooter ile {page} placeholder

Sayfa Boyutu Dönüşümleri

BoyutPuanlarMilimetre
Mektup612 x 792216 x 279
A4595 x 842210 x 297
Hukuki612 x 1008216 x 356
1 inç7225.4
1 cm28.3510

Kod Göç Örnekleri

Örnek 1: HTML Dosyasını PDF'ye Dönüştürme

Önceki (PrinceXML):

// NuGet: Install-Package PrinceXMLWrapper
using PrinceXML.Wrapper;
using System;

class Program
{
    static void Main()
    {
        Prince prince = new Prince("C:\\Program Files\\Prince\\engine\\bin\\prince.exe");
        prince.Convert("input.html", "output.pdf");
        Console.WriteLine("PDF created successfully");
    }
}

Sonrası (IronPDF):

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

class Program
{
    static void Main()
    {
        IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlFileAsPdf("input.html");
        pdf.SaveAs("output.pdf");
        Console.WriteLine("PDF created successfully");
    }
}

Bu örnek, temel yapısal farkı gösterir. PrinceXML, yürütülebilir dosyanın tam yolu ("C:\\Program Files\\Prince\\engine\\bin\\prince.exe") ile bir Prince nesnesini çalıştırmayı ve ardından giriş ve çıkış yolları ile Convert() çalıştırmayı gerektirir.

IronPDF, yol bağımlılıklarını tamamen ortadan kaldırır: bir ChromePdfRenderer oluşturun, HTML dosya yolu ile RenderHtmlFileAsPdf() çağırın ve sonucu yazmak için SaveAs() çağırın. Yürütülebilir yollar, süreç yönetimi, yol bağımlılıkları yok. Kapsamlı örnekler için HTML'den PDF'e dönüşüm belgelerine bakın.

Örnek 2: Seçeneklerle URL'yi PDF'ye Dönüştürme

Önceki (PrinceXML):

// NuGet: Install-Package PrinceXMLWrapper
using PrinceXML.Wrapper;
using System;

class Program
{
    static void Main()
    {
        Prince prince = new Prince("C:\\Program Files\\Prince\\engine\\bin\\prince.exe");
        prince.JavaScript = true;
        prince.Encrypt = true;
        prince.PdfTitle = "Website Export";
        prince.Convert("https://example.com", "webpage.pdf");
        Console.WriteLine("URL converted to PDF");
    }
}

Sonrası (IronPDF):

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

class Program
{
    static void Main()
    {
        IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.EnableJavaScript = true;
        renderer.RenderingOptions.Title = "Website Export";

        var pdf = renderer.RenderUrlAsPdf("https://example.com");
        pdf.SecuritySettings.OwnerPassword = "owner-password";
        pdf.SecuritySettings.UserPassword = "user-password";
        pdf.SaveAs("webpage.pdf");
        Console.WriteLine("URL converted to PDF");
    }
}

Bu örnek,PrinceXMLseçeneklerinin IronPDF özelliklerine nasıl eşlendiğini gösterir. PrinceXML, dönüşüm öncesinde Prince nesnesi üzerinde (JavaScript, Encrypt, PdfTitle) özellikler olarak yapılandırmayı sunar. IronPDF, önceden işleme ayarları için RenderingOptions özelliklerini kullanır ve işlemi sonlandırdıktan sonra şifrelemeyi SecuritySettings yoluyla PdfDocument üzerinde uygular.

Anahtar eşlemeleri:

  • prince.JavaScript = truerenderer.RenderingOptions.EnableJavaScript = true
  • prince.PdfTitle = "..."renderer.RenderingOptions.Title = "..."
  • prince.Encrypt = truepdf.SecuritySettings.OwnerPassword = "..." / pdf.SecuritySettings.UserPassword = "..."

Daha fazla bilgiyi kılavuzlarımızda öğrenin.

Örnek 3: HTML Dizesini PDF'ye Dönüştürme

Önceki (PrinceXML):

// NuGet: Install-Package PrinceXMLWrapper
using PrinceXML.Wrapper;
using System;

class Program
{
    static void Main()
    {
        string html = "<html><head><style>body { font-family: Arial; color: blue; }</style></head><body><h1>Hello World</h1></body></html>";

        Prince prince = new Prince("C:\\Program Files\\Prince\\engine\\bin\\prince.exe");
        // ConvertString accepts a raw HTML/XML string directly
        prince.ConvertString(html, "styled-output.pdf");
        Console.WriteLine("Styled PDF created");
    }
}

Sonrası (IronPDF):

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

class Program
{
    static void Main()
    {
        IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
        string html = "<html><head><style>body { font-family: Arial; color: blue; }</style></head><body><h1>Hello World</h1></body></html>";

        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("styled-output.pdf");
        Console.WriteLine("Styled PDF created");
    }
}

Her iki kütüphane de doğrudan bir HTML dizesini kabul eder:PrinceXMLConvertString() ve IronPDFRenderHtmlAsPdf() aracılığıyla. Temel mimari fark kalır — PrinceXML'nin ConvertString, girdiyi temel belirleme altında harici prince ikili dosyasına iletirken,IronPDF herhangi bir harici yürütülebilir dosya olmadan işlemi dahili olarak gerçekleştirir.


CSS Sayfalı Medya Geçişi

PrinceXML'in CSS Sayfalı Medya desteği güçlüdür, ancak başka bir yerde çalışmayacak Prince'e özgü CSS ile satıcı bağımlılığı yaratır:

PrinceXML CSS:

@page {
    size: A4;
    margin: 2cm;
    @top-center {
        content: "Document Title";
    }
    @bottom-right {
        content: counter(page);
    }
}

/* Prince-specific extensions */
prince-pdf-page-label: "Chapter " counter(chapter);
prince-pdf-destination: attr(id);
Text

IronPDF C# (eşdeğer):

renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 56;    // ~2cm
renderer.RenderingOptions.MarginBottom = 56;
renderer.RenderingOptions.MarginLeft = 56;
renderer.RenderingOptions.MarginRight = 56;

renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
    HtmlFragment = "<div style='text-align:center;'>Document Title</div>",
    MaxHeight = 40
};

renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
    HtmlFragment = "<div style='text-align:right;'>Page {page} of {total-pages}</div>",
    MaxHeight = 25
};

Ortak CSS Geçiş Sorunları

Sorun 1: CSS @page Çalışmıyor

IronPDF, sınırlı @page desteğine sahip Chromium kullanır. CSS kurallarını RenderingOptions'a dönüştürün.

Sorun 2: Sayfa Kenar Boşluğu Kutuları Eksik

CSS marj kutuları (@top-center, @bottom-right) Prince'e özeldir. Bunun yerine HtmlFooter kullanın.

Sorun 3: string-set/content Çalışmıyor

string-set CSS özelliği Prince'e özeldir. <title> etiketinden {html-title} placeholder kullanın:

<title>Chapter 1: Introduction</title>
HTML
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
    HtmlFragment = "<div>{html-title}</div>"
};

Sorun 4: counter(pages) Hatalı

CSS sayaçları yerine IronPDF'nin {total-pages} placeholder'ını kullanın.


Performans Karşılaştırması

İşlemPrinceXMLIronPDF
Basit HTML~400ms~300ms
Karmaşık CSS~600ms~400ms
JavaScript sayfalarıSınırlı~500ms
Büyük belgeler~1500ms~1000ms
Eşzamanlı (10)~4000ms~1500ms
Başlangıç yükü~200ms~50ms

Geçiş Sonrası Yeni Özellikler

IronPDF'ye geçiş yaptıktan sonra PrinceXML'in sağlayamadığı yetenekler kazanırsınız:

PDF Birleştirme

var pdf1 = PdfDocument.FromFile("chapter1.pdf");
var pdf2 = PdfDocument.FromFile("chapter2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("complete_book.pdf");

Filigranlar

pdf.ApplyWatermark("<h1 style='color:red; opacity:0.3;'>DRAFT</h1>");

Dijital İmzalar

var signature = new PdfSignature("certificate.pfx", "password");
pdf.Sign(signature);

Form Doldurma

var pdf = PdfDocument.FromFile("form.pdf");
pdf.Form.GetFieldByName("Name").Value = "John Doe";
pdf.SaveAs("filled_form.pdf");

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

ÖzellikPrinceXMLIronPDF
Yerel .NETHayırEvet
Harici SüreçGereklidirHayır
Asenkron DestekManuel sarmaYerel async/await
CSS Paged MediaDesteklenenRenderingOptions Aracılığıyla
CSS IzgarasıEvetEvet
FlexboxEvetEvet
JavaScriptSınırlıTam ES2024
OluşturmaEvetEvet
BirleştirmeHayırEvet
AyırmaHayırEvet
DüzenlemeHayırEvet
FiligranlarYalnızca CSSHTML/CSS + API
Dijital İmzalarHayırEvet
PDF/AEvetEvet
ŞifrelemeEvetEvet
FormlarHayırEvet
NuGet PaketiHayırEvet
Sunucu KurulumuGereklidirHayır

Geçiş Kontrol Listesi

Öncesi-Geçiş

  • Tüm Prince komut satırı çağrılarını belirleyin
  • Kullanılan CSS @page kurallarını belgeleyin
  • Prince'e özgü CSS özelliklerini listele (prince-*, string-set)
  • Herhangi bir PrinceJavaScriptfonksiyonunu not alın
  • Kullanılan PDF özelliklerini belirleyin (şifreleme, metadata)
  • ironpdf.com adresinden IronPDF lisans anahtarını edinin

Kod Değişiklikleri

  • PrinceXMLWrapper NuGet paketini kaldırın
  • IronPdf NuGet paketini yükleyin
  • Ad alanı ithalatlarını güncelleyin
  • Prince oluşturmasını ChromePdfRenderer ile değiştirin
  • prince.Convert() öğesini RenderHtmlFileAsPdf() veya RenderHtmlAsPdf() ile değiştirin
  • Ayarlayıcı yöntemleri RenderingOptions özelliklerine dönüştürün
  • @page CSS'yi RenderingOptions öğesine taşıyın
  • Marj kutularını HtmlFooter ile değiştirin
  • CSS sayaçlarını {total-pages} placeholder'larına dönüştürün
  • HTML dizgileri için geçici dosya işleme işlemlerini kaldırın
  • Uygulama başlangıcında lisans başlatma ekle

Geçiş Sonrası

  • HTML dosya dönüştürmesini test edin
  • HTML dizesi dönüştürmesini test edin
  • URL dönüştürmesini test edin
  • Sayfa boyutlarının eşleştiğini doğrulayın
  • Kenar boşluklarının eşleştiğini doğrulayın
  • Başlık ve alt bilgileri test edin
  • Sayfa numaralarını doğrulayın
  • Şifreleme/güvenlik testini yapın
  • Sunuculardan Prince kurulumunu kaldırın
  • Dağıtım betiklerini güncelleyin

PrinceXML, ilgili sahibinin tescilli bir markasıdır. Bu site, YesLogic Pty tarafından onaylanmamış, desteklenmemiş veya sponsor olunmamıştır. Ltd. 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