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

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

Spire.PDF'den IronPDF'e geçiş, PDF oluşturma iş akışınızı, metni görüntü olarak işleyen bir kütüphaneden, modern bir Chromium render motoru kullanarak gerçek, seçilebilir, aranabilir metinler üreten bir yapıya dönüştürür. Bu rehber, Spire.PDF'in kritik HTML işleme sınırlamalarını ve font yerleştirme sorunlarını çözen eksiksiz, adım adım bir geçiş yolu sağlar.

Neden Spire.PDF'ten IronPDF'e Geçilmeli

Spire.PDF Anlamak

Spire.PDF, .NET geliştiricileri için PDF belgelerini verimli bir şekilde yönetmek üzere tasarlanmış sağlam ve ticari bir PDF kütüphanesidir. Spire.PDF, özellikle eski uygulamalar ve diğer E-iceblue araçları seti ile entegrasyon yetenekleriyle programlama topluluğunda belirli yetenekleriyle tanınmıştır.

Ancak, Spire.PDF'in, özellikle HTML'den PDF'e dönüşüm ve modern web standartları desteği konusunda gerçek dünya kullanımını etkileyen birkaç temel sorunu vardır.

Kritik Teknik Sorunlar

Sorun Etkisi IronPDF Çözümü
Metin Resim Olarak Görüntüleniyor PDF'ler aranabilir değil, erişilebilir değil, metin kopyalanamaz Gerçek metin işleme
Internet Explorer bağımlılığı Eski görüntüleme, güvenlik riskleri Modern Chromium motoru
Yazı Tipi Yerleştirme Başarısızlıkları Belgeler diğer sistemlerde yanlış görünüyor Güvenilir yazı tipi işleme
Geniş yerleşim izi Yüksek bellek kullanımı, yavaş başlangıç Verimli yerleşim
Sınırlı CSS desteği 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 en büyük dezavantajlarından biri, HTML belgeleri içindeki metni görüntü olarak işleme eğilimidir. Bu, metnin seçilemediği veya aranamadığı PDF'ler ortaya çıkarır, bu da arama işlevselliği veya belge metni etkileşimi gerektiren uygulamalar için ciddi bir sınırlama olabilir.

Spire.PDF'nin LoadFromHTML() yöntemini kullandığınızda, çoğunlukla metinleri gerçek metin yerine bitmap görüntüleri olarak oluşturur, bu sorunları oluşturur:

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

Spire.PDF veIronPDFKarşılaştırması

Özellik Spire.PDF IronPDF
HTML'den PDF'e İşleme Resim olarak işlenen metinler Gerçek metin işlemesi (seçilebilir ve aranabilir)
Render Motoru Bazı sistemlerde Internet Explorer bağımlılığı Chromium tabanlı, modern web standartlarına uyumlu
Yazi Tipi Yonetimi Yazı tipi yerleştirme ile ilgili bilinen sorunlar Güvenilir ve sağlam yazı tipi işleme
CSS3 Desteği Sınırlı Tam
Flexbox/Grid Desteklenmiyor Desteklenir
JavaScript Sınırlı Tam ES6+
PDF Erişilebilirliği Zayıf (resim tabanlı) Mükemmel
API Tasarımı Karmaşık Basit ve sezgisel
Yerleşim İzleri Büyük Orta
Lisanslama Ücretsiz/Ticari Ticari

2025 ve 2026 boyunca .NET 10 ve C# 14 benimsemeyi planlayan ekipler için, IronPDF, Spire.PDF'in HTML'den PDF'e dönüştürmedeki kritik sorunlarını metni görüntü yerine gerçek seçilebilir metin olarak işleyerek çözer, böylece PDF'lerin aranabilir ve erişilebilir olmasını sağlar.


Başlamadan Önce

Önkoş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ükleme yeteneği
  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

API Referansının Tamamı

Namespace 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şleştirmeleri

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 içindeki CSS stilleri
PdfBrush HTML içindeki CSS stilleri

Kod Geçiş Örnekleri

Örnek 1: HTML'den PDF'e 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

Sonra (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şleme konusundaki temel farkı göstermektedir. Spire.PDF, metinleri genellikle bitmap görüntüleri olarak oluşturan bir PdfHtmlLayoutFormat nesnesi ile LoadFromHTML() kullanır. Sonuç, kullanıcıların metni seçemediği, kopyalayamadığı veya arayamadığı PDF'lerdir.

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

Ö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

Sonra (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 sonunda her bir belgede Close() çağırmayı gerektirir.

IronPDF, birçok belgeyi kabul eden basit PdfDocument.FromFile() pattern'i ve statik PdfDocument.Merge() metodunu kullanır. Hiçbir Close() çağrısı gerekmez. Detayli bilgi icin eğitimlerimize bakin.

Ö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

Sonra (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 koordinatlarda yerleştirmek için PdfFont, PdfBrush ve page.Canvas.DrawString() ile tuval tabanlı bir çizim modeli kullanır.

IronPDF, ardından ApplyStamp() ile uygulanan TextStamper, Text, FontSize, VerticalOffset ve HorizontalOffset gibi sezgisel özelliklere sahip bir TextStamper kullanır. Bu yaklaşım daha açıklayıcı ve daha kolay sürdürülebilir.


Metin-Resim Problemi

Neden Bu Kritik

Spire.PDF, görüntü tabanlı dönüştürme kullanarak HTML'yi PDF'e dönüştürdüğünde, belgeleriniz temel işlevselliğini kaybeder:

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

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

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

4. Büyük Dosya Boyutları: Aynı içerik karşılaştırması, Spire.PDF'in (görüntü tabanlı) IronPDF'ten (metin tabanlı) 16 kat daha büyük dosyalar ürettiğini gösterir.

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

Spire.PDF tarafından üretilen belgenizi açın ve bu testleri deneyin:

  1. Metin Seçimi: Metnin üzerinde tıklayıp sürükleyin. Hiçbir şey vurgulanmazsa → GÖRÜNTÜ TABANLI
  2. Ctrl+F Arama: Sayfadaki herhangi bir kelimeyi arayın. "Eşleşmeler bulunamadı" yazarsa → GÖRÜNTÜ TABANLI
  3. Kopyalama/Yapıştırma: Metni seçip not defterine kopyalayın. Hiçbir şey yapışmazsa → GÖRÜNTÜ TABANLI

Internet Explorer Sorunu

Spire.PDF'in İşleme Motoru

Spire.PDF, bazı ortamlarda HTML rendering için Internet Explorer/Edge Legacy'ye dayanır. IE 2022'de kullanımdan kaldırılmıştır, modern CSS çalışmaz, JavaScript desteği sınırlıdır ve sistemler arasında işleme tutarsızdır.

Spire.PDF'te Başarısız 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 rendering kullanır, bu nedenle tüm bu CSS özellikleri doğru çalışır.


Geçiş Sonrası Yeni Özellikler

IronPDF'e geçtiğinizde, Spire.PDF'in sağlayamayacağı yetenekler kazanırsınız:

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 Destegi

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

Goc Kontrol Listesi

Geçiş Öncesi

  • Kod tabanındaki tüm Spire.PDF kullanımlarını envanter edin
  • Mevcut PDF'leri metin seçilebilirliği için test edin (kritik sorun tespiti)
  • Belge LoadFromHTML() çağrıları (öncelikli olarak bunları düzeltin)
  • ironpdf.com adresindenIronPDFlisans anahtarını alın

Kod Güncellemeleri

  • Spire.PDF NuGet paketini kaldırın (ve ücretsiz versiyonu kullanıyorsanız FreeSpire.PDF)
  • IronPdf NuGet paketini yükleyin
  • Namespace ithalatlarını güncelleyin (using Spire.Pdf;using IronPdf;)
  • LoadFromHTML()'u RenderHtmlAsPdf() ile değiştirin (KRİTİK DÜZELTME)
  • new PdfDocument() + LoadFromFile()'u PdfDocument.FromFile() ile değiştirin
  • InsertPageRange()'u PdfDocument.Merge() ile değiştirin
  • Canvas.DrawString()'u TextStamper + ApplyStamp() ile değiştirin
  • SaveToFile()'u SaveAs() ile değiştirin
  • Tüm Close() çağrılarını kaldırın (IronPDF'de gerekli değil)
  • Uygulama başlatıldığında lisans başlatma ekleyin

Test Etme

  • Oluşturulan PDF'lerde metnin seçilebilir olduğundan emin olun (KRİTİK TEST)
  • CSS render iyilestirmelerini dogrulayin (Flexbox/Grid simdi calisiyor)
  • Dosya boyutlarının daha küçük olduğunu doğrulayın
  • Erişilebilirliği ekran okuyucularla test edin
  • Performans karşılaştırması

Curtis Chau
Teknik Yazar

Curtis Chau, Bilgisayar Bilimleri alanında lisans derecesine sahiptir (Carleton Üniversitesi) ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirme üzerine uzmanlaşmıştır. Kullanıcı dostu ve estetik açıdan hoş arayüzler tasarlamaya tutkuyla bağlı olan Curtis, modern çerç...

Daha Fazlasını Oku

Iron Destek Ekibi

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