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

C#'ta Spire.PDF'den IronPDF'ye Nasıl Geçilir

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

Issue Etki IronPDF Çözümü
Metin genellikle eski HTML yolunda görüntü olarak işlenir PDF'ler aramada bulunamaz, erişilemez, metin kopyalanamaz Gerç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ı bildirildi Belgeler diğer sistemlerde yanlış görünür Güvenilir yazı tipi yönetimi
Büyük kurulum izleri Daha yüksek bellek kullanımı Paketlenmiş Chromium çalışma zamanı
Eski yolda sınırlı CSS Modern düzenler doğru şekilde görüntülenmiyor Tam 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ı

Özellik Spire.PDF IronPDF
HTML'den PDF'ye Oluşturma Varsayılan olarak Eski IE/QtWebKit; v10.7.21'den bu yana sistem Chrome gerektiren ChromeHtmlConverter'a isteğe bağlı katılım Paketlenmiş Chromium (modern, ekstra kurulum gerektirmez)
Metin Çıkışı (HTML yolu) Genellikle eski yol üzerinde görüntü olarak işlenir Gerçek metin (seçilebilir ve aranabilir)
Yazı Tipi İşleme Eski yolda sorunlar bildirilmiştir Güvenilir yazı tipi yönetimi
CSS3 Desteği Eski yolda sınırlı Tam
Flexbox/Grid Eski yolda desteklenmez Desteklenen
JavaScript Eski yolda sınırlı Tam ES6+
PDF Erişilebilirliği Eski 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
Lisanslama Freemium/Kömersiyel Ticari

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
# 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";
// Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
' Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
$vbLabelText   $csharpLabel

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;
// Before: Spire.PDF
using Spire.Pdf;
using Spire.Pdf.Graphics;
using Spire.Pdf.HtmlConverter;

// After: IronPDF
using IronPdf;
using IronPdf.Editing;
Imports IronPdf
Imports IronPdf.Editing
$vbLabelText   $csharpLabel

Temel API Eşlemeleri

Spire.PDF IronPDF
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()
PdfFont HTML'de CSS stil oluşturma
PdfBrush HTML'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();
    }
}
// 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();
    }
}
Imports Spire.Pdf
Imports Spire.Pdf.Graphics
Imports System

Class Program
    Shared Sub Main()
        Dim pdf As New PdfDocument()
        Dim htmlLayoutFormat As New PdfHtmlLayoutFormat()

        Dim htmlString As String = "<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()
    End Sub
End Class
$vbLabelText   $csharpLabel

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");
    }
}
// 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");
    }
}
Imports IronPdf
Imports System

Class Program
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()

        Dim htmlString As String = "<html><body><h1>Hello World</h1><p>This is a PDF from HTML.</p></body></html>"

        Dim pdf = renderer.RenderHtmlAsPdf(htmlString)
        pdf.SaveAs("output.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

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();
    }
}
// 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();
    }
}
Imports Spire.Pdf
Imports System

Class Program
    Shared Sub Main()
        Dim pdf1 As New PdfDocument()
        pdf1.LoadFromFile("document1.pdf")

        Dim pdf2 As New PdfDocument()
        pdf2.LoadFromFile("document2.pdf")

        pdf1.InsertPageRange(pdf2, 0, pdf2.Pages.Count - 1)

        pdf1.SaveToFile("merged.pdf")
        pdf1.Close()
        pdf2.Close()
    End Sub
End Class
$vbLabelText   $csharpLabel

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");
    }
}
// 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");
    }
}
Imports IronPdf
Imports System

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

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();
    }
}
// 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();
    }
}
Imports Spire.Pdf
Imports Spire.Pdf.Graphics
Imports System.Drawing
Imports System

Class Program
    Shared Sub Main()
        Dim pdf As New PdfDocument()
        Dim page As PdfPageBase = pdf.Pages.Add()

        Dim font As New PdfFont(PdfFontFamily.Helvetica, 20)
        Dim brush As PdfBrush = New PdfSolidBrush(Color.Black)

        page.Canvas.DrawString("Hello from Spire.PDF!", font, brush, New PointF(50, 50))

        pdf.SaveToFile("output.pdf")
        pdf.Close()
    End Sub
End Class
$vbLabelText   $csharpLabel

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");
    }
}
// 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");
    }
}
Imports IronPdf
Imports IronPdf.Editing
Imports System

Class Program
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()
        Dim pdf = renderer.RenderHtmlAsPdf("<html><body></body></html>")

        Dim textStamper = New TextStamper() With {
            .Text = "Hello from IronPDF!",
            .FontSize = 20,
            .VerticalOffset = 50,
            .HorizontalOffset = 50
        }

        pdf.ApplyStamp(textStamper)
        pdf.SaveAs("output.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

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


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

<style>
:root { --primary-color: #007bff; }
h1 { color: var(--primary-color); }
</style>

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

<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
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
Dim renderer = New ChromePdfRenderer()
Dim 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
$vbLabelText   $csharpLabel

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!
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!
Dim renderer = New ChromePdfRenderer()

Dim 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>"

Dim pdf = renderer.RenderHtmlAsPdf(html)
' All modern CSS features render correctly!
$vbLabelText   $csharpLabel

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

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ınSpire, 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ı...

Daha Fazla Oku

Iron Destek Ekibi

Haftada 5 gün, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara