IRONSOFTWAREHOME
VIDEOLAR

.NET MAUI'de XAML Nasıl PDF'ye Dönüştürülür | IronPDF

Curtis Chau
Curtis Chau
Updated: 19 Temmuz 2026

Spire.PDF'den IronPDF'ye geçmek, PDF oluşturma işlemini sıkça görüntüye dayalı metin üreten bir eski HTML yolundan, gerçek, seçilebilir, aranabilir metin üreten Chromium bandına taşır. Bu kılavuz, Spire.PDF'in HTML işleme ödünleri ve bildirilmiş font yerleştirme sorunlarını kapsayan eksiksiz bir, adım adım geçiş yolu sağlar.

Neden Spire.PDF'den IronPDF'ye Geçmeli

Spire.PDF'i Anlamak

Spire.PDF, .NET geliştiricileri için PDF belgelerini etkili bir şekilde yönetmek üzere tasarlanmış güçlü bir ticari PDF kütüphanesidir. Spire.PDF, özellikle eski uygulamalarda ve E-iceblue araç setinin diğer bileşenleriyle kusursuz entegrasyon kabiliyeti ile programlama topluluğunda öne çıkmıştır.

Ancak, Spire.PDF'nin, gerçek dünyada kullanımını etkileyen bazı temel sorunları var, özellikle HTML'den PDF'ye dönüşüm ve modern web standartları desteği konusunda.

Kritik Teknik Sorunlar

IssueEtkiIronPDF Çözümü
Metin genellikle eski HTML yolunda görüntü olarak işlenirPDF'ler aramada bulunamaz, erişilemez, metin kopyalanamazGerçek metin işleme
Eski yolu üzerine IE/Edge Legacy veya QtWebKit bağımlılığıEski işleme, modern CSS sorunlarıPaketlenmiş modern Chromium
Font yerleştirme sorunları bildirildiBelgeler diğer sistemlerde yanlış görünürGüvenilir yazı tipi yönetimi
Büyük kurulum izleriDaha yüksek bellek kullanımıPaketlenmiş Chromium çalışma zamanı
Eski yolda sınırlı CSSModern düzenler doğru şekilde görüntülenmiyorTam CSS3 desteği

Temel Sorun: Görüntü Tabanlı PDF'ler

Spire.PDF'in Eski HTML yolunun bilinen bir dezavantajı, HTML belgelerindeki metinleri görüntüler olarak işleme eğilimidir. Bu, metnin seçilebilir veya aranabilir olmadığı PDF'ler üretir — bir arama veya metin etkileşimi gerektiren uygulamalar için bir sınırlamadır.

Spire.PDF'in LoadFromHTML() yöntemini eski motor üzerinde kullandığınızda, bu genellikle metni gerçek metin yerine bitmap görüntüsü olarak işler ve şu sorunları yaratır:

  • Metin SEÇİLEMEZ
  • Metin ARANAMAZ
  • Metin KOPYALANAMAZ
  • Ekran okuyucular erişemez (erişilebilirlik ihlali)
  • Dosya boyutu ÇOK daha büyük
  • Yakınlaştırma pikselleşmeye neden olur

Spire.PDF ve IronPDF Karşılaştırması

ÖzellikSpire.PDFIronPDF
HTML'den PDF'ye OluşturmaVarsayılan olarak Eski IE/QtWebKit; v10.7.21'den bu yana sistem Chrome gerektiren ChromeHtmlConverter'a isteğe bağlı katılımPaketlenmiş Chromium (modern, ekstra kurulum gerektirmez)
Metin Çıkışı (HTML yolu)Genellikle eski yol üzerinde görüntü olarak işlenirGerçek metin (seçilebilir ve aranabilir)
Yazı Tipi İşlemeEski yolda sorunlar bildirilmiştirGüvenilir yazı tipi yönetimi
CSS3 DesteğiEski yolda sınırlıTam
Flexbox/GridEski yolda desteklenmezDesteklenen
JavaScriptEski yolda sınırlıTam ES6+
PDF ErişilebilirliğiEski yolda zayıf (görüntü tabanlı çıktı)Etiketlenmiş metin çıkışı
API TasarımıBirçok aşırı yüklenme, manuel sayfa ayarlarıTek akışkan rendeleme
LisanslamaFreemium/KömersiyelTicari

Modern .NET üzerinde, IronPDF, gerçek seçilebilir metin yerine görüntüler olarak işleyen Spire.PDF'in HTML'den PDF'ye geçiş ödünlerini ele alır, böylece elde edilen PDF'ler aranabilir ve erişilebilir hale gelir.


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 Spire.PDF
dotnet remove package Spire.PDF
dotnet remove package FreeSpire.PDF  # If using free version

# Install IronPDF
dotnet add package IronPdf
SHELL

Lisans Yapılandırması

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

Tam API Referansı

Ad Alanı Değişiklikleri

// Before: Spire.PDF
using Spire.Pdf;
using Spire.Pdf.Graphics;
using Spire.Pdf.HtmlConverter;

// After: IronPDF
using IronPdf;
using IronPdf.Editing;

Temel API Eşlemeleri

Spire.PDFIronPDF
new PdfDocument()new ChromePdfRenderer()
pdf.LoadFromHTML()renderer.RenderHtmlAsPdf()
pdf.LoadFromFile()PdfDocument.FromFile()
pdf.SaveToFile()pdf.SaveAs()
pdf.Close()Gerekli değil
pdf.Pages.Add()renderer.RenderHtmlAsPdf()
pdf.InsertPageRange()PdfDocument.Merge()
page.Canvas.DrawString()TextStamper + ApplyStamp()
PdfFontHTML'de CSS stil oluşturma
PdfBrushHTML'de CSS stil oluşturma

Kod Göç Örnekleri

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

Önce (Spire.PDF):

// NuGet: Install-Package Spire.PDF
using Spire.Pdf;
using Spire.Pdf.Graphics;
using System;

class Program
{
    static void Main()
    {
        PdfDocument pdf = new PdfDocument();
        PdfHtmlLayoutFormat htmlLayoutFormat = new PdfHtmlLayoutFormat();
        
        string htmlString = "<html><body><h1>Hello World</h1><p>This is a PDF from HTML.</p></body></html>";
        
        pdf.LoadFromHTML(htmlString, false, true, true);
        pdf.SaveToFile("output.pdf");
        pdf.Close();
    }
}

Sonrası (IronPDF):

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

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

Bu örnek, HTML işleminde temel farkı gösterir. Spire.PDF, metni sıklıkla bitmap görüntüsü olarak işleyen bir LoadFromHTML() nesnesi ile kullanır. Sonuç, kullanıcıların metni seçemediği, kopyalayamadığı veya arayamadığı PDF'lerdir.

IronPDF, tamamen seçilebilir, aranabilir ve erişilebilir olan gerçek metin üreten ChromePdfRenderer ile RenderHtmlAsPdf() kullanır. Hiçbir Close() çağrısı gerekli değildir—IronPDF, otomatik temizleme için dispose desenini kullanır. Kapsamlı örnekler için HTML to PDF belgelerini inceleyin.

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

Önce (Spire.PDF):

// NuGet: Install-Package Spire.PDF
using Spire.Pdf;
using System;

class Program
{
    static void Main()
    {
        PdfDocument pdf1 = new PdfDocument();
        pdf1.LoadFromFile("document1.pdf");
        
        PdfDocument pdf2 = new PdfDocument();
        pdf2.LoadFromFile("document2.pdf");
        
        pdf1.InsertPageRange(pdf2, 0, pdf2.Pages.Count - 1);
        
        pdf1.SaveToFile("merged.pdf");
        pdf1.Close();
        pdf2.Close();
    }
}

Sonrası (IronPDF):

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

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

Spire.PDF her belgeyi new PdfDocument() + LoadFromFile() ile manuel olarak yüklemeyi, ardından hangi sayfaların ekleneceğini belirtmek için InsertPageRange() kullanmayı ve son olarak her bir belge için Close() çağrısı yapmayı gerektirir.

IronPDF, birden çok belge kabul eden basit PdfDocument.FromFile() deseni ve statik bir PdfDocument.Merge() yöntemi kullanır. Hiçbir Close() çağrısı gerekmez. Daha fazla bilgiyi kılavuzlarımızda öğrenin.

Örnek 3: Bir PDF'ye Metin Ekleme

Önce (Spire.PDF):

// NuGet: Install-Package Spire.PDF
using Spire.Pdf;
using Spire.Pdf.Graphics;
using System.Drawing;
using System;

class Program
{
    static void Main()
    {
        PdfDocument pdf = new PdfDocument();
        PdfPageBase page = pdf.Pages.Add();
        
        PdfFont font = new PdfFont(PdfFontFamily.Helvetica, 20);
        PdfBrush brush = new PdfSolidBrush(Color.Black);
        
        page.Canvas.DrawString("Hello from Spire.PDF!", font, brush, new PointF(50, 50));
        
        pdf.SaveToFile("output.pdf");
        pdf.Close();
    }
}

Sonrası (IronPDF):

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<html><body></body></html>");
        
        var textStamper = new TextStamper()
        {
            Text = "Hello from IronPDF!",
            FontSize = 20,
            VerticalOffset = 50,
            HorizontalOffset = 50
        };
        
        pdf.ApplyStamp(textStamper);
        pdf.SaveAs("output.pdf");
    }
}

Spire.PDF, metni PointF kullanarak belirli koordinatlara yerleştiren PdfFont, PdfBrush ve page.Canvas.DrawString() ile tuval tabanlı bir çizim modeli kullanır.

IronPDF, TextStamper nesnesini ve ardından ApplyStamp() ile uygulama yapmayı kullanarak, Text, FontSize, VerticalOffset ve HorizontalOffset gibi sezgisel özelliklere sahiptir. Bu yaklaşım daha açıklayıcı ve bakımını sağlamak daha kolaydır.


Metin Olarak Görüntüler Sorunu

Neden Bu Kritik

Spire.PDF, HTML'den PDF'ye görüntü tabanlı işleme kullandığında, belgeleriniz temel işlevselliği kaybeder:

1. Metin Arama Yok: Kullanıcılar metni bulmak için Ctrl+F kullanamaz. Belge yönetim sistemleri içeriği indeksleyemez.

2. Metin Seçimi/Kopyalama Yok: Bir alıntıyı, referansı veya veriyi kopyalamaya çalışan kullanıcılar metni seçemez—bu bir görüntü.

3. Erişilebilirlik İhlalleri: Görüntü tabanlı PDF'ler WCAG 2.1 uyumluluğunu, Bölüm 508 uyumluluğunu (ABD Hükümeti), ADA gerekliliklerini ve ekran okuyucu uyumluluğunu ihlal eder.

4. Büyük Dosya Boyutları: Eski HTML yolundan gelen görüntü tabanlı çıktı, IronPDF'nin aynı içerik için ürettiği metin tabanlı çıktılardan on kat daha büyük dosyalar üretebilir.

Tespit: PDF'niz Görüntü Tabanlı mı?

Spire.PDF tarafından oluşturulmuş belgenizi açın ve bu testleri deneyin:

  1. Metin Seçimi: Metin üzerinde tıklayın ve sürükleyin. Hiçbir şey vurgulanmazsa → GÖRÜNTÜ TABANLI
  2. Ctrl+F Arama: Sayfadaki herhangi bir kelimeyi arayın. "Eşleşme bulunamadı" yazarsa → GÖRÜNTÜ TABANLI
  3. Kopyala/Yapıştır: Metin seçin ve notdefterine kopyalayın. Hiçbir şey yapıştırılmazsa → GÖRÜNTÜ TABANLI

Eski HTML Motoru Sorunu

Spire.PDF Rendering Motorları

Spire.PDF'in LoadFromHTML(...) tarihsel olarak iki yol teklif etti: Windows Internet Explorer / Edge Legacy WebBrowser kontrolü ile desteklenen bir eklenti olmayan yol ve ayrı indirilen QT/WebKit eklenti yolu. Spire.PDF 10.7.21 (2024 ortası) yerel olarak kurulu Google Chrome'a başvuran üçüncü bir seçenek, ChromeHtmlConverter ekledi — ancak isteğe bağlıdır ve orijinal LoadFromHTML API'si hala eski motorlara varsayılan olarak ayarlıdır. IE/Edge Legacy, Microsoft tarafından 2022'de kullanım dışı bırakıldı, modern CSS eski yolda güvenilmez, JavaScript desteği kısmi ve rendering sistemler arasında farklılık gösterebilir.

Spire.PDF'de Başarısız Olan Modern CSS

<!-- This HTML renders incorrectly in Spire.PDF -->
<div style="display: flex; justify-content: space-between; gap: 20px;">
    <div style="flex: 1;">Column 1</div>
    <div style="flex: 1;">Column 2</div>
</div>

<div style="display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px;">
    <div>Item 1</div>
    <div>Item 2</div>
    <div>Item 3</div>
</div>

<!-- CSS Variables don't work -->
<style>
:root { --primary-color: #007bff; }
h1 { color: var(--primary-color); }
</style>
HTML

IronPDF, modern Chromium işleme kullanır, bu nedenle tüm bu CSS özellikleri doğru çalışır.


Geçiş Sonrası Yeni Özellikler

IronPDF'ye geçiş yaptıktan sonra, Spire.PDF'nin sağlayamadığı özelliklere sahip olursunuz:

Seçilebilir, Aranabilir Metin

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Important Contract</h1>");
pdf.SaveAs("contract.pdf");

// Result:
// ✅ Text is fully selectable
// ✅ Text is searchable with Ctrl+F
// ✅ Text can be copied to clipboard
// ✅ Screen readers work perfectly
// ✅ File size is compact
// ✅ Zooming is crystal clear

Modern CSS Desteği

var renderer = new ChromePdfRenderer();

var html = @"
<style>
    :root { --primary: #007bff; }
    .container { display: flex; gap: 20px; }
    .grid { display: grid; grid-template-columns: repeat(3, 1fr); }
</style>
<div class='container'>
    <div style='flex: 1; color: var(--primary)'>Column 1</div>
    <div style='flex: 1'>Column 2</div>
</div>
<div class='grid'>
    <div>Item 1</div>
    <div>Item 2</div>
    <div>Item 3</div>
</div>";

var pdf = renderer.RenderHtmlAsPdf(html);
// All modern CSS features render correctly!

HTML Tabanlı Filigranlar

var pdf = renderer.RenderHtmlAsPdf(html);
pdf.ApplyWatermark(@"
    <div style='
        font-size: 48px;
        color: rgba(255, 0, 0, 0.5);
        transform: rotate(-45deg);
    '>DRAFT</div>");

Geçiş Kontrol Listesi

Öncesi-Geçiş

  • Kod tabanındaki tüm Spire.PDF kullanımlarını envanterleyin
  • Mevcut PDF'leri metin seçilebilirliği için test edin (kritik sorun tespiti)
  • Belge LoadFromHTML() çağrıları (düzeltme önceliği olanlar)
  • ironpdf.com adresinden IronPDF lisans anahtarını edinin

Kod Güncellemeleri

  • Spire.PDF NuGet paketini kaldır (ve ücretsiz sürümü kullanıyorsanız FreeSpire.PDF)
  • IronPdf NuGet paketini yükleyin
  • Ad alanı alımlarını güncelleyin (using Spire.Pdf;using IronPdf;)
  • LoadFromHTML() ile RenderHtmlAsPdf() değiştirin (KRİTİK DÜZELTME)
  • new PdfDocument() + LoadFromFile() ile PdfDocument.FromFile() değiştirin
  • InsertPageRange() ile PdfDocument.Merge() değiştirin
  • Canvas.DrawString() ileTextStamper + ApplyStamp()değiştirin
  • SaveToFile() ile SaveAs() değiştirin
  • IronPDF'de gerekmediği için tüm Close() çağrılarını kaldırın
  • Uygulama başlangıcında lisans başlatma ekle

Test Etme

  • Oluşturulan PDF'lerde metnin seçilebilir olduğunu doğrulayın (KRİTİK TEST)
  • CSS işleme iyileştirmelerini doğrulayın (Artık Flexbox/Grid çalışır)
  • Dosya boyutlarının daha küçük olduğunu doğrulayın.
  • Erişilebilirliği ekran okuyucularla test edin
  • Performans karşılaştırması

Lütfen dikkate alın: Spire, ilgili sahibinin tescilli bir ticari markasıdır. Bu site, e-iceblue ile bağlantılı, onaylanmış veya sponsorlu 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