C#'ta Winnovative'den IronPDF'ye Nasıl Geçilir
Winnovative, .NET PDF oluşturma alanında tanınmış bir isimdir ve C# uygulamaları için HTML'den PDF'e dönüştürme yetenekleri sunar. Ancak, kütüphanenin 2016'den kalma bir WebKit motoruna bağlılığı, modern web geliştirme için önemli zorluklar yaratır. Grid layout gibi çağdaş CSS özellikleri, modern JavaScript sözdizimi ve Bootstrap 5 ve Tailwind CSS gibi popüler çerçeveler genellikle doğru şekilde—or hiçbir şekilde—render edilmez.
Bu kılavuz, profesyonel .NET geliştiricilerinin bu geçişi değerlendirirken Winnovative'den IronPDF'e geçiş için adım adım yönergeler, kod karşılaştırmaları ve pratik örnekler sunar.
Winnovative'den Neden Geçiş Yapmalıyız?
Winnovative, modern web uygulamaları için ciddi sorunlar yaratan 2016'dan bir WebKit motoruna dayanır:
CSS Grid Desteği Yok: Bootstrap 5, Tailwind CSS ve modern düzenler tamamen kırılır. CSS Grid kullanan herhangi bir sayfa beklenildiği gibi render edilmeyecektir.
Hatalı Flexbox Uygulaması: Modern tarayıcılara kıyasla tutarsız render. Geliştiriciler genellikle yalnızcaWinnovativeiçinde olan düzen sorunlarını ayıklamak için saatler harcar.
Yalnızca ES5 JavaScript: Modern ES6+ JavaScript özellikleri (ok fonksiyonları, async/await, sınıflar) sessizce başarısız olur. Bu durum, React, Vue ve diğer modern çerçevelerin sıklıkla bozuk çıktılar üretmesi anlamına gelir.
Durgun Gelişim: "Winnovative" yenilik önerse de, ürün son yıllarda minimum güncelleme görmüştür.
Yazı Tipi Render Sorunları: Web yazı tipleri ve özel tipografi genellikle yanlış ya da hiç render edilmez.
Güvenlik Endişeleri: 2016 dönemi bir WebKit motoru, yıllarca güvenlik yamalarından ve güvenlik açığı düzeltmelerinden yoksundur.
Gerçek Dünya Etkisi
Modern CSS ve JavaScript,Winnovativeiçinde basitçe çalışmıyor:
<div style="display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px;">
<div>Column 1</div>
<div>Column 2</div>
<div>Column 3</div>
</div>
<script>
const items = data.map(item => item.name); // Arrow functions: FAIL
const result = await fetchData(); // Async/await: FAIL
class Report { } // Classes: FAIL
</script>
<div style="display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px;">
<div>Column 1</div>
<div>Column 2</div>
<div>Column 3</div>
</div>
<script>
const items = data.map(item => item.name); // Arrow functions: FAIL
const result = await fetchData(); // Async/await: FAIL
class Report { } // Classes: FAIL
</script>
IronPDF vs Winnovative: Özellik Karşılaştırması
Mimari farklılıkları anlamak, teknik karar vericilerin geçiş yatırımını değerlendirmesine yardımcı olur:
| Bağlam | Winnovative | IronPDF |
|---|---|---|
| Render Motoru | WebKit (2016) | Chromium (Güncel) |
| CSS Grid | Desteklenmiyor | Tam Destek |
| Flexbox | Hatali | Tam Destek |
| JavaScript | Yalnızca ES5 | ES2024 |
| Bootstrap 5 | Bozuk | Tam Destek |
| Tailwind CSS | Desteklenmiyor | Tam Destek |
| React/Vue SSR | Problematik | Mükemmel Calisir |
| Web Yazı Tipleri | Güvenilmez | Tam Destek |
| Güncellemeler | Seyrek | Aylik |
| Fiyat | $750-$1.600 | Rekabetci |
Hızlı Başlangıç: Winnovative'den IronPDF'e Geçiş
Geçiş hemen bu temel adımlar ile başlatılabilir.
1. Adım: NuGet Paketlerini Değiştir
TümWinnovativepaketlerini kaldırın:
# Remove Winnovative
dotnet remove package Winnovative.WebKitHtmlToPdf
dotnet remove package Winnovative.HtmlToPdf
dotnet remove package Winnovative.WebToPdfConverter
# Remove Winnovative
dotnet remove package Winnovative.WebKitHtmlToPdf
dotnet remove package Winnovative.HtmlToPdf
dotnet remove package Winnovative.WebToPdfConverter
IronPDF'i yükleyin:
# Install IronPDF
dotnet add package IronPdf
# Install IronPDF
dotnet add package IronPdf
Adım 2: Alan Adlarını Güncelle
Winnovative ad alanlarını IronPdf ad alanı ile değiştirin:
// Before (Winnovative)
using Winnovative;
using Winnovative.WebKit;
// After (IronPDF)
using IronPdf;
// Before (Winnovative)
using Winnovative;
using Winnovative.WebKit;
// After (IronPDF)
using IronPdf;
Imports IronPdf
Adım 3: Lisansı Başlat
Uygulama başlangıcında lisans başlatmasını ekleyin:
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
Kod Geçiş Örnekleri
HTML'i PDF'ye Dönüştürme
En yaygın kullanım durumu, bu .NET PDF kütüphaneleri arasındaki API farklarını gösterir.
Winnovative Yaklaşımı:
// NuGet: Install-Package Winnovative.WebToPdfConverter
using Winnovative;
using System;
class Program
{
static void Main()
{
// Create the HTML to PDF converter
HtmlToPdfConverter htmlToPdfConverter = new HtmlToPdfConverter();
// Set license key
htmlToPdfConverter.LicenseKey = "your-license-key";
// Convert HTML string to PDF
string htmlString = "<html><body><h1>Hello World</h1></body></html>";
byte[] pdfBytes = htmlToPdfConverter.ConvertHtml(htmlString, "");
// Save to file
System.IO.File.WriteAllBytes("output.pdf", pdfBytes);
Console.WriteLine("PDF created successfully");
}
}
// NuGet: Install-Package Winnovative.WebToPdfConverter
using Winnovative;
using System;
class Program
{
static void Main()
{
// Create the HTML to PDF converter
HtmlToPdfConverter htmlToPdfConverter = new HtmlToPdfConverter();
// Set license key
htmlToPdfConverter.LicenseKey = "your-license-key";
// Convert HTML string to PDF
string htmlString = "<html><body><h1>Hello World</h1></body></html>";
byte[] pdfBytes = htmlToPdfConverter.ConvertHtml(htmlString, "");
// Save to file
System.IO.File.WriteAllBytes("output.pdf", pdfBytes);
Console.WriteLine("PDF created successfully");
}
}
Imports Winnovative
Imports System
Module Program
Sub Main()
' Create the HTML to PDF converter
Dim htmlToPdfConverter As New HtmlToPdfConverter()
' Set license key
htmlToPdfConverter.LicenseKey = "your-license-key"
' Convert HTML string to PDF
Dim htmlString As String = "<html><body><h1>Hello World</h1></body></html>"
Dim pdfBytes As Byte() = htmlToPdfConverter.ConvertHtml(htmlString, "")
' Save to file
System.IO.File.WriteAllBytes("output.pdf", pdfBytes)
Console.WriteLine("PDF created successfully")
End Sub
End Module
IronPDF Yaklaşımı:
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
// Create a PDF renderer
var renderer = new ChromePdfRenderer();
// Convert HTML string to PDF
string htmlString = "<html><body><h1>Hello World</h1></body></html>";
var pdf = renderer.RenderHtmlAsPdf(htmlString);
// Save to file
pdf.SaveAs("output.pdf");
Console.WriteLine("PDF created successfully");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
// Create a PDF renderer
var renderer = new ChromePdfRenderer();
// Convert HTML string to PDF
string htmlString = "<html><body><h1>Hello World</h1></body></html>";
var pdf = renderer.RenderHtmlAsPdf(htmlString);
// Save to file
pdf.SaveAs("output.pdf");
Console.WriteLine("PDF created successfully");
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
' Create a PDF renderer
Dim renderer As New ChromePdfRenderer()
' Convert HTML string to PDF
Dim htmlString As String = "<html><body><h1>Hello World</h1></body></html>"
Dim pdf = renderer.RenderHtmlAsPdf(htmlString)
' Save to file
pdf.SaveAs("output.pdf")
Console.WriteLine("PDF created successfully")
End Sub
End Class
Winnovative, bir HtmlToPdfConverter oluşturarak, örnek üzerinde bir lisans anahtarı ayarlayarak, boş bir temel URL parametresiyle ConvertHtml() çağrısını yaparak, ham baytları alarak ve elle bir dosyaya yazarak işlem gerektirir.IronPDFbunu basitleştirir: bir ChromePdfRenderer oluşturun, RenderHtmlAsPdf() çağrısını yapın ve yerleşik SaveAs() yöntemini kullanın.
Gelişmiş HTML-PDF senaryoları için HTML'den PDF'e dönüştürme kılavuzuna bakın.
URL'leri PDF'ye Dönüştürme
URL'den PDF'e dönüşüm benzer kalıplar gösterir.
Winnovative Yaklaşımı:
// NuGet: Install-Package Winnovative.WebToPdfConverter
using Winnovative;
using System;
class Program
{
static void Main()
{
// Create the HTML to PDF converter
HtmlToPdfConverter htmlToPdfConverter = new HtmlToPdfConverter();
// Set license key
htmlToPdfConverter.LicenseKey = "your-license-key";
// Convert URL to PDF
string url = "https://www.example.com";
byte[] pdfBytes = htmlToPdfConverter.ConvertUrl(url);
// Save to file
System.IO.File.WriteAllBytes("webpage.pdf", pdfBytes);
Console.WriteLine("PDF from URL created successfully");
}
}
// NuGet: Install-Package Winnovative.WebToPdfConverter
using Winnovative;
using System;
class Program
{
static void Main()
{
// Create the HTML to PDF converter
HtmlToPdfConverter htmlToPdfConverter = new HtmlToPdfConverter();
// Set license key
htmlToPdfConverter.LicenseKey = "your-license-key";
// Convert URL to PDF
string url = "https://www.example.com";
byte[] pdfBytes = htmlToPdfConverter.ConvertUrl(url);
// Save to file
System.IO.File.WriteAllBytes("webpage.pdf", pdfBytes);
Console.WriteLine("PDF from URL created successfully");
}
}
Imports Winnovative
Imports System
Module Program
Sub Main()
' Create the HTML to PDF converter
Dim htmlToPdfConverter As New HtmlToPdfConverter()
' Set license key
htmlToPdfConverter.LicenseKey = "your-license-key"
' Convert URL to PDF
Dim url As String = "https://www.example.com"
Dim pdfBytes As Byte() = htmlToPdfConverter.ConvertUrl(url)
' Save to file
System.IO.File.WriteAllBytes("webpage.pdf", pdfBytes)
Console.WriteLine("PDF from URL created successfully")
End Sub
End Module
IronPDF Yaklaşımı:
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
// Create a PDF renderer
var renderer = new ChromePdfRenderer();
// Convert URL to PDF
string url = "https://www.example.com";
var pdf = renderer.RenderUrlAsPdf(url);
// Save to file
pdf.SaveAs("webpage.pdf");
Console.WriteLine("PDF from URL created successfully");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
// Create a PDF renderer
var renderer = new ChromePdfRenderer();
// Convert URL to PDF
string url = "https://www.example.com";
var pdf = renderer.RenderUrlAsPdf(url);
// Save to file
pdf.SaveAs("webpage.pdf");
Console.WriteLine("PDF from URL created successfully");
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
' Create a PDF renderer
Dim renderer As New ChromePdfRenderer()
' Convert URL to PDF
Dim url As String = "https://www.example.com"
Dim pdf = renderer.RenderUrlAsPdf(url)
' Save to file
pdf.SaveAs("webpage.pdf")
Console.WriteLine("PDF from URL created successfully")
End Sub
End Class
Winnovative, elle kaydedilmesi gereken baytları döndüren ConvertUrl() kullanır. IronPDF, rahatlık için SaveAs() içeren bir PdfDocument nesnesi ile RenderUrlAsPdf() sağlar.
Kimlik doğrulama ve ozellestirilmis baslik seçenekleri icin URL'den PDF'ye dokümantasyonu kesfedin.
Başlıklar ve Alt Bilgiler Eklemek
Başlıklar ve altbilgiler önemli mimari farklılıkları ortaya koyar. Winnovative, TextElement nesneleri ile programatik bir öğe tabanlı yaklaşım kullanırken,IronPDFyer tutucu belirteçlere sahip HTML tabanlı başlıklar kullanır.
Winnovative Yaklaşımı:
// NuGet: Install-Package Winnovative.WebToPdfConverter
using Winnovative;
using System;
using System.Drawing;
class Program
{
static void Main()
{
// Create the HTML to PDF converter
HtmlToPdfConverter htmlToPdfConverter = new HtmlToPdfConverter();
// Set license key
htmlToPdfConverter.LicenseKey = "your-license-key";
// Enable header
htmlToPdfConverter.PdfDocumentOptions.ShowHeader = true;
htmlToPdfConverter.PdfHeaderOptions.HeaderHeight = 60;
// Add header text
TextElement headerText = new TextElement(0, 0, "Document Header", new Font("Arial", 12));
htmlToPdfConverter.PdfHeaderOptions.AddElement(headerText);
// Enable footer
htmlToPdfConverter.PdfDocumentOptions.ShowFooter = true;
htmlToPdfConverter.PdfFooterOptions.FooterHeight = 60;
// Add footer with page number
TextElement footerText = new TextElement(0, 0, "Page &p; of &P;", new Font("Arial", 10));
htmlToPdfConverter.PdfFooterOptions.AddElement(footerText);
// Convert HTML to PDF
string htmlString = "<html><body><h1>Document with Header and Footer</h1><p>Content goes here</p></body></html>";
byte[] pdfBytes = htmlToPdfConverter.ConvertHtml(htmlString, "");
// Save to file
System.IO.File.WriteAllBytes("document.pdf", pdfBytes);
Console.WriteLine("PDF with header and footer created successfully");
}
}
// NuGet: Install-Package Winnovative.WebToPdfConverter
using Winnovative;
using System;
using System.Drawing;
class Program
{
static void Main()
{
// Create the HTML to PDF converter
HtmlToPdfConverter htmlToPdfConverter = new HtmlToPdfConverter();
// Set license key
htmlToPdfConverter.LicenseKey = "your-license-key";
// Enable header
htmlToPdfConverter.PdfDocumentOptions.ShowHeader = true;
htmlToPdfConverter.PdfHeaderOptions.HeaderHeight = 60;
// Add header text
TextElement headerText = new TextElement(0, 0, "Document Header", new Font("Arial", 12));
htmlToPdfConverter.PdfHeaderOptions.AddElement(headerText);
// Enable footer
htmlToPdfConverter.PdfDocumentOptions.ShowFooter = true;
htmlToPdfConverter.PdfFooterOptions.FooterHeight = 60;
// Add footer with page number
TextElement footerText = new TextElement(0, 0, "Page &p; of &P;", new Font("Arial", 10));
htmlToPdfConverter.PdfFooterOptions.AddElement(footerText);
// Convert HTML to PDF
string htmlString = "<html><body><h1>Document with Header and Footer</h1><p>Content goes here</p></body></html>";
byte[] pdfBytes = htmlToPdfConverter.ConvertHtml(htmlString, "");
// Save to file
System.IO.File.WriteAllBytes("document.pdf", pdfBytes);
Console.WriteLine("PDF with header and footer created successfully");
}
}
Imports Winnovative
Imports System
Imports System.Drawing
Module Program
Sub Main()
' Create the HTML to PDF converter
Dim htmlToPdfConverter As New HtmlToPdfConverter()
' Set license key
htmlToPdfConverter.LicenseKey = "your-license-key"
' Enable header
htmlToPdfConverter.PdfDocumentOptions.ShowHeader = True
htmlToPdfConverter.PdfHeaderOptions.HeaderHeight = 60
' Add header text
Dim headerText As New TextElement(0, 0, "Document Header", New Font("Arial", 12))
htmlToPdfConverter.PdfHeaderOptions.AddElement(headerText)
' Enable footer
htmlToPdfConverter.PdfDocumentOptions.ShowFooter = True
htmlToPdfConverter.PdfFooterOptions.FooterHeight = 60
' Add footer with page number
Dim footerText As New TextElement(0, 0, "Page &p; of &P;", New Font("Arial", 10))
htmlToPdfConverter.PdfFooterOptions.AddElement(footerText)
' Convert HTML to PDF
Dim htmlString As String = "<html><body><h1>Document with Header and Footer</h1><p>Content goes here</p></body></html>"
Dim pdfBytes As Byte() = htmlToPdfConverter.ConvertHtml(htmlString, "")
' Save to file
System.IO.File.WriteAllBytes("document.pdf", pdfBytes)
Console.WriteLine("PDF with header and footer created successfully")
End Sub
End Module
IronPDF Yaklaşımı:
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
using System;
class Program
{
static void Main()
{
// Create a PDF renderer
var renderer = new ChromePdfRenderer();
// Configure header and footer
renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
{
CenterText = "Document Header",
FontSize = 12
};
renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
{
CenterText = "Page {page} of {total-pages}",
FontSize = 10
};
// Convert HTML to PDF
string htmlString = "<html><body><h1>Document with Header and Footer</h1><p>Content goes here</p></body></html>";
var pdf = renderer.RenderHtmlAsPdf(htmlString);
// Save to file
pdf.SaveAs("document.pdf");
Console.WriteLine("PDF with header and footer created successfully");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
using System;
class Program
{
static void Main()
{
// Create a PDF renderer
var renderer = new ChromePdfRenderer();
// Configure header and footer
renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
{
CenterText = "Document Header",
FontSize = 12
};
renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
{
CenterText = "Page {page} of {total-pages}",
FontSize = 10
};
// Convert HTML to PDF
string htmlString = "<html><body><h1>Document with Header and Footer</h1><p>Content goes here</p></body></html>";
var pdf = renderer.RenderHtmlAsPdf(htmlString);
// Save to file
pdf.SaveAs("document.pdf");
Console.WriteLine("PDF with header and footer created successfully");
}
}
Imports IronPdf
Imports IronPdf.Rendering
Imports System
Module Program
Sub Main()
' Create a PDF renderer
Dim renderer As New ChromePdfRenderer()
' Configure header and footer
renderer.RenderingOptions.TextHeader = New TextHeaderFooter() With {
.CenterText = "Document Header",
.FontSize = 12
}
renderer.RenderingOptions.TextFooter = New TextHeaderFooter() With {
.CenterText = "Page {page} of {total-pages}",
.FontSize = 10
}
' Convert HTML to PDF
Dim htmlString As String = "<html><body><h1>Document with Header and Footer</h1><p>Content goes here</p></body></html>"
Dim pdf = renderer.RenderHtmlAsPdf(htmlString)
' Save to file
pdf.SaveAs("document.pdf")
Console.WriteLine("PDF with header and footer created successfully")
End Sub
End Module
Winnovative, başlıkları/dipnotları PdfDocumentOptions.ShowHeader ile etkinleştirmeyi, yükseklikleri ayarlamayı, koordinat pozisyonları ve System.Drawing.Font nesneleri ile TextElement nesneleri oluşturmayı ve &p; ve &P; yer tutucuları kullanmayı gerektirir. IronPDF, {page} ve {total-pages} gibi sezgisel yer tutucular ve CenterText ve FontSize gibi basit özelliklere sahip TextHeaderFooter nesneleri kullanır.
Tam CSS stiliyle HTML tabanlı başlıklar için, başlıklar ve altbilgiler belgelerine bakın.
Winnovative API ileIronPDFEşleme Referansı
Bu eşleme, doğrudan API eşdeğerlerini göstererek geçişi hızlandırır.
| Winnovative Sınıfı | IronPDF Eşdeğeri |
|---|---|
HtmlToPdfConverter |
ChromePdfRenderer |
PdfDocument |
PdfDocument |
PdfDocumentOptions |
RenderingOptions |
PdfHeaderOptions |
HtmlHeaderFooter |
PdfFooterOptions |
HtmlHeaderFooter |
TextElement |
HtmlFragment içindeki HTML |
ImageElement |
HTML <img> |
Yöntem Eşleştirme
| Winnovative Metodu | IronPDF Yöntemi |
|---|---|
ConvertUrl(url) |
RenderUrlAsPdf(url) |
ConvertUrlToFile(url, path) |
RenderUrlAsPdf(url).SaveAs(path) |
ConvertHtml(html, baseUrl) |
RenderHtmlAsPdf(html) |
ConvertHtmlToFile(html, path) |
RenderHtmlAsPdf(html).SaveAs(path) |
ConvertHtmlFile(path) |
RenderHtmlFileAsPdf(path) |
MergePdf(streams) |
PdfDocument.Merge(pdfs) |
AppendPdf(pdf) |
pdf1.AppendPdf(pdf2) |
Seçenek Haritalama
| Winnovative Seçeneği | IronPDF Seçeneği |
|---|---|
PdfPageSize.A4 |
PaperSize = PdfPaperSize.A4 |
PdfPageSize.Letter |
PaperSize = PdfPaperSize.Letter |
PdfPageOrientation.Portrait |
PaperOrientation = PdfPaperOrientation.Portrait |
PdfPageOrientation.Landscape |
PaperOrientation = PdfPaperOrientation.Landscape |
TopMargin = 20 |
MarginTop = 20 |
BottomMargin = 20 |
MarginBottom = 20 |
LeftMargin = 15 |
MarginLeft = 15 |
RightMargin = 15 |
MarginRight = 15 |
ShowHeader = true |
HtmlHeader özelliğini ayarlayın |
ShowFooter = true |
HtmlFooter özelliğini ayarlayın |
JavaScriptEnabled = true |
EnableJavaScript = true |
Sayfa numarası &p; |
Sayfa numarası {page} |
Toplam sayfa &P; |
Toplam sayfa {total-pages} |
Yaygın Taşınma Sorunları ve Çözümleri
Sorun 1: CSS Düzenleri Farklı Görünüyor
Belirti: Winnovative'de 'tamam' görünen düzenler şuan IronPDF'de farklı görünüyor.
Sebepler: Winnovative'in 2016 WebKit'i geliştiricilerin çevresinden dolanmak zorunda olduğu render hatalarına sahipti.IronPDFmodern standartlara göre doğru bir şekilde render eder.
Çözüm: Winnovative'e özgü CSS çıkışlarını kaldırın ve standart CSS kullanın:
// Clean up legacy CSS
string cleanedHtml = html
.Replace("-webkit-flex", "flex")
.Replace("display: -webkit-box", "display: flex");
// Clean up legacy CSS
string cleanedHtml = html
.Replace("-webkit-flex", "flex")
.Replace("display: -webkit-box", "display: flex");
Dim cleanedHtml As String = html _
.Replace("-webkit-flex", "flex") _
.Replace("display: -webkit-box", "display: flex")
Sorun 2: JavaScript Çalışmıyor
Belirti: Dinamik içerik PDF'de görünmüyor.
Sebepler: JavaScript bekleme seçeneklerini açıkça yapılandırma gerekliliği.
Çözüm:
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.WaitFor.JavaScript(5000);
// Or wait for specific element
renderer.RenderingOptions.WaitFor.HtmlElementById("content-ready", 10000);
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.WaitFor.JavaScript(5000);
// Or wait for specific element
renderer.RenderingOptions.WaitFor.HtmlElementById("content-ready", 10000);
Sorun 3: Temel URL Çalışmıyor
Belirti: Resim ve CSS için relatif URL'ler çözümlenmiyor.
Sebepler: IronPDF, açıkça tanımlanmış temel URL yapılandırmasına ihtiyaç duyar.
Çözüm:
renderer.RenderingOptions.BaseUrl = new Uri("https://example.com/");
renderer.RenderingOptions.BaseUrl = new Uri("https://example.com/");
renderer.RenderingOptions.BaseUrl = New Uri("https://example.com/")
Sorun 4: Farklı Sayfa Kırılmaları
Belirti: İçerik Winnovative'den farklı noktalarda kırılıyor.
Sebepler: Farklı render motorları sayfa kırılmalarını farklı şekilde işler.
Çözüm: Açıkça belirlenen CSS sayfa kırılma kontrollerini kullanın:
/* Control page breaks explicitly */
.no-break {
page-break-inside: avoid;
}
.page-break-before {
page-break-before: always;
}
.page-break-after {
page-break-after: always;
}
Sorun 5: Fontlar Farklı Görünüyor
Belirti: Metin beklenenden farklı fontlarla görünüyor.
Sebepler:IronPDFsistem fontlarını kullanır; web fontları açıkça yüklenmelidir.
Çözüm:
<style>
@import url('https://fonts.googleapis.com/css2?family=Roboto&display=swap');
body {
font-family: 'Roboto', Arial, sans-serif;
}
</style>
<style>
@import url('https://fonts.googleapis.com/css2?family=Roboto&display=swap');
body {
font-family: 'Roboto', Arial, sans-serif;
}
</style>
Winnovative Geçiş Kontrol Listesi
Ön Taşınma Görevleri
Kod tabanınızı denetleyin ve tümWinnovativekullanımını tespit edin:
# Find allWinnovativereferences
grep -r "Winnovative" --include="*.cs" .
grep -r "HtmlToPdfConverter" --include="*.cs" .
grep -r "PdfDocumentOptions" --include="*.cs" .
grep -r "ConvertUrl\|ConvertHtml" --include="*.cs" .
# Find allWinnovativereferences
grep -r "Winnovative" --include="*.cs" .
grep -r "HtmlToPdfConverter" --include="*.cs" .
grep -r "PdfDocumentOptions" --include="*.cs" .
grep -r "ConvertUrl\|ConvertHtml" --include="*.cs" .
Sayfa boyutları, kenar boşlukları ve başlık/alt bilgi ayarları dahil mevcut yapılandırmalarınızı belgeleyin. Kaldırılabilecek CSS geçici çözümlerini (webkit ön ekleri, float tabanlı ızgaralar) belirleyin. JavaScript uyumluluk gereksinimlerini not alın.
Kod Güncelleme Görevleri
1.WinnovativeNuGet paketlerini kaldırın
- IronPdf NuGet paketini kurun
- Tüm isim alanı içe aktarımlarını
Winnovative'danIronPdf'ya güncelleyin HtmlToPdfConverter'uChromePdfRendererile değiştirinConvertHtml()çağrılarınıRenderHtmlAsPdf()'ye dönüştürünConvertUrl()çağrılarınıRenderUrlAsPdf()'ye dönüştürün- Sayfa boyutu/yön ayarlarını
RenderingOptionsolarak güncelleyin - Kenar boşlukları yapılandırmalarını dönüştürün
TextElementtabanlı başlık/dipnotları HTML tabanlıTextHeaderFooterolarak taşıyın- Sayfa numarası yer tutucularını
&P;'dan{total-pages}'ya güncelleyin - BaşlangıçtaIronPDFlisans başlatmasını ekleyin
Taşınım Sonrası Test
Geçiş sonrasında aşağıdaki yönleri doğrulayın:
- Temel HTML'den PDF dönüşümünü test edin
- URL'den PDF'ye donusumu test edin
- CSS Grid düzenlerinin doğru bir şekilde render edildiğini doğrulayın (şimdi çalışacak)
- Flexbox düzenlerinin doğru bir şekilde render edildiğini doğrulayın (şimdi çalışacak)
- Modern ES6+ söz dizimi ile JavaScript ağırlıklı sayfaları test edin
- Bootstrap 5 uyumluluğunu doğrulayın
- Başlık/altbilgi renderını test edin
- Sayfa kırılmalarını doğrulayın
- PDF çıktı kalitesini karşılaştırın
Temizlik İşleri
-WinnovativeCSS geçici çözümlerini kaldırın (webkit ön ekleri)
- ES5 JavaScript'i modern söz dizimine güncelleyin
- Float tabanlı ızgara geriye dönüşlerini kaldırın
- Belgeleri güncelleyin
IronPDF'e Geçişin Temel Avantajları
Winnovative'den IronPDF'e geçiş birçok önemli avantaj sağlar:
Modern Render Motoru: IronPDF, güncel Chromium motorunu kullanır ve CSS3, CSS Grid, Flexbox veES2024JavaScript desteğini garanti eder. Bootstrap 5, Tailwind CSS ve React/Vue gibi modern frameworkler doğru şekilde render edilir.
Basitleştirilmiş API: HTML tabanlı başlıklar ve dipnotlar, programatik TextElement konumlandırmanın yerini alır. {page} gibi sezgisel yer tutucular, gizli &p; söz dizimini değiştirir. Yerleşik SaveAs() yöntemleri, manuel bayt işlemeyi ortadan kaldırır.
Aktif Gelişim: .NET 10 ve C# 14 benimsemesi 2026'ya kadar arttıkça, IronPDF'in aylık güncellemeleri mevcut ve gelecekteki .NET sürümleri ile uyumluluğu sağlar.
Geçici Çözümler Olmadan Modern CSS: CSS Grid, Flexbox ve modern tipografi webkit önekleri veya float tabanlı geri dönüşler olmadan çalışır.
Modern JavaScript: Ok fonksiyonları, async/await, sınıflar ve modüller gibi ES6+ özellikleri doğru bir şekilde çalışır.

