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
- .NET Ortamı: .NET Framework 4.6.2+ veya .NET Core 3.1+ / .NET 5/6/7/8/9+
- NuGet Erişimi: NuGet paketlerini yükleme yeteneği
- 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
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"
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
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
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
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
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
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
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
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:
- Metin Seçimi: Metnin üzerinde tıklayıp sürükleyin. Hiçbir şey vurgulanmazsa → GÖRÜNTÜ TABANLI
- Ctrl+F Arama: Sayfadaki herhangi bir kelimeyi arayın. "Eşleşmeler bulunamadı" yazarsa → GÖRÜNTÜ TABANLI
- 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>
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
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!
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>")
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.PDFNuGet paketini kaldırın (ve ücretsiz versiyonu kullanıyorsanızFreeSpire.PDF)IronPdfNuGet paketini yükleyin- Namespace ithalatlarını güncelleyin (
using Spire.Pdf;→using IronPdf;) LoadFromHTML()'uRenderHtmlAsPdf()ile değiştirin (KRİTİK DÜZELTME)new PdfDocument()+LoadFromFile()'uPdfDocument.FromFile()ile değiştirinInsertPageRange()'uPdfDocument.Merge()ile değiştirinCanvas.DrawString()'uTextStamper+ApplyStamp()ile değiştirinSaveToFile()'uSaveAs()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ı

