C#'ta Winnovative'den IronPDF'ye Nasıl Geçilir
Winnovative, .NET PDF oluşturma alanında tanınmış bir isim olmuş, C# uygulamaları için HTML'den PDF'ye dönüştürme yetenekleri sunmuştur. Bununla birlikte, uzun süreli çalışan Classic kütüphanesi, eski bir tescilli render motoruna dayanır ve modern CSS (Grid, son Flexbox) ve modern JavaScript (ES2017+) için desteği, güncel bir Chromium tarayıcısına kıyasla tutarsızdır. Satıcının yanıtı, mevcut Winnovative müşterilerinin her iki durumda da bir kod göçüyle karşı karşıya kalması demek olan, veri olarak Klasik sürümü yerinde yükseltmek yerine, Winnovative.Pdf.Next adlı ayrı bir Chromium sınıfı ürünü göndermek oldu.
Bu kılavuz, Winnovative'ten IronPDF'e geçiş yolunu, bu geçişi değerlendiren .NET geliştiricileri için adım adım talimatlar, kod karşılaştırmaları ve pratik örneklerle sunmaktadır.
Winnovative'den Neden Geçmelisiniz
Winnovative'nin Classic kütüphanesi, modern web standartlarına güncellenmemiş eski bir tescilli motor kullanır:
Tutarsız CSS Grid / modern Flexbox: CSS Grid veya son Flexbox özelliklerine dayanan düzenler, güncel bir Chromium tarayıcısına kıyasla yanlış render edilebilir.
Modern JavaScript Uyumluluk Açıkları: ES2017+ özellikleri (ok fonksiyonları, async/await, sınıflar) güvenilir bir şekilde çalıştırılmayabilir, bu da React, Vue ve diğer modern çerçeveleri etkiler.
Yavaş Güncelleme: Classic motoru seyrek render motoru yenilemeleri alır; Satıcının cevabı, Klasik özelliği dondurulmuş olarak bırakarak, ayrı Winnovative.Pdf.Next Chromium sınıfı ürünü göndermek oldu.
İki Ürünlü Geçiş Yükü: Winnovative.Pdf.Next 'a geçmek kendi başına bir yeniden yazmaktır — Yeni API (Winnovative.Pdf.Next) farklı bir isim alanı altında yer alır ve Klasik sürümle ikili uyumsuzdur.
Yazı Tipi Renderlama Özel Durumları: Web yazı tipleri ve özel tipografi, modern bir tarayıcıdan farklı şekilde render edilebilir.
Gerçek Dünyada Etki
Modern CSS ve JavaScript, Winnovative Classic'te tutarsız şekilde render edebilir:
<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);
const result = await fetchData();
class Report { }
</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);
const result = await fetchData();
class Report { }
</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:
| Aspekt | Winnovative Classic | IronPDF |
|---|---|---|
| Render Motoru | Daha eski tescilli motor | Chromium (Güncel) |
| CSS Grid | Tutarsız | Tam Destek |
| Flexbox | Özel durumlarda tutarsız | Tam Destek |
| JavaScript | Sınırlı modern JS | ES2024 |
| Bootstrap 5 | Düzen sorunları | Tam Destek |
| Tailwind CSS | Sınırlı | Tam Destek |
| React/Vue SSR | Problematik | Çalışır |
| Web Yazı Tipleri | Bazı kurulumlarda güvenilmez | Tam Destek |
| Güncellemeler | Seyrek | Aylık |
| Fiyatlandırma (geliştirici başına) | $450 Dağıtım / $1,200 Yeniden Dağıtılabilir | ironpdf.com/pricing adresine bakınız |
Hızlı Başlangıç: Winnovative'den IronPDF'e Geçiş
Geçiş bu öncü adımlarla hemen başlayabilir.
Adım 1: NuGet Paketlerini Değiştirin
Tüm Winnovative paketlerini kaldırın (projenizin hangi paketleri gerçekten kullandığını doğrulayın):
# Remove Winnovative (Classic + related utilities)
dotnet remove package Winnovative.HtmlToPdf
# Also remove any of these your project references:
# dotnet remove package Winnovative.PdfMerge
# dotnet remove package Winnovative.PdfSecurity
# dotnet remove package Winnovative.Pdf.Next.Core
# dotnet remove package Winnovative.Client
# Remove Winnovative (Classic + related utilities)
dotnet remove package Winnovative.HtmlToPdf
# Also remove any of these your project references:
# dotnet remove package Winnovative.PdfMerge
# dotnet remove package Winnovative.PdfSecurity
# dotnet remove package Winnovative.Pdf.Next.Core
# dotnet remove package Winnovative.Client
IronPDF'i yükleyin:
# Install IronPDF
dotnet add package IronPdf
# Install IronPDF
dotnet add package IronPdf
Adım 2: Ad Alanlarını Güncelleyin
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: Lisansa İzin Verin
Uygulama başlangıcında lisans başlatmayı ekleyin:
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
Kod Göç Örnekleri
HTML'yi PDF'ye Dönüştürme
En yaygın kullanım durumu, bu .NET PDF kütüphanelerinin API farklılıklarını göstermektedir.
Winnovative Yaklaşımı:
// NuGet: Install-Package Winnovative.HtmlToPdf
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.HtmlToPdf
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şturulmasını, örneğe bir lisans anahtarı belirlenmesini, boş bir temel URL parametresi ile ConvertHtml() çağrılmasını, ham baytların alınmasını ve manuel olarak bir dosyaya yazılmasını gerektirir.IronPDF bunu basitleştirir: bir ChromePdfRenderer oluşturun, RenderHtmlAsPdf() çağırın ve yerleşik SaveAs() metodunu kullanın.
İleri düzey HTML-to-PDF senaryoları için HTML'den PDF'ye dönüşüm rehberine bakın.
URL'leri PDF'ye Dönüştürme
URL'den PDF'ye dönüştürme benzer kalıplar gösterir.
Winnovative Yaklaşımı:
// NuGet: Install-Package Winnovative.HtmlToPdf
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.HtmlToPdf
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, baytlar döndüren ve manuel olarak kaydedilmesi gereken ConvertUrl() kullanır. IronPDF, rahatlık sağlaması için SaveAs() içeren bir PdfDocument nesnesi ile RenderUrlAsPdf() sağlar.
Kimlik doğrulama ve özel başlık seçenekleri için URL'den PDF'ye dokümantasyonu inceleyin.
Başlık ve Alt Bilgi Ekleme
Başlıklar ve dipnotlar önemli mimari farklılıklar ortaya çıkarır. Winnovative, programatik öğe tabanlı bir yaklaşım olan TextElement nesnelerini kullanırken,IronPDF yer tutucu simgelerine sahip HTML tabanlı başlıklar kullanır.
Winnovative Yaklaşımı:
// NuGet: Install-Package Winnovative.HtmlToPdf
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.HtmlToPdf
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, yükseklikleri ayarlamayı, koordinat konumları ve System.Drawing.Font nesneleri ile TextElement nesneleri oluşturmayı ve &p; ve &P; yer tutucularını kullanmayı gerektirerek başlıkların/altbilgilerin etkinleştirilmesini PdfDocumentOptions.ShowHeader aracılığıyla gerektirir. IronPDF, TextHeaderFooter nesnelerini CenterText ve FontSize gibi basit özellikler ve {page} ve {total-pages} gibi sezgisel yer tutucularla kullanır.
Tam CSS stiline sahip HTML tabanlı başlıklar için başlıklar ve dipnotlar belgesine bakın.
Winnovative API'den IronPDF Haritalama Referansı
Bu eşleştirme, 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çinde HTML |
ImageElement |
HTML <img> |
Metot Haritalama
| Winnovative Yöntemi | 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çenekler Eşleme
| 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 Göç Sorunları ve Çözümleri
Sorun 1: CSS Düzenleri Farklı Görünüyor
Belirti: Winnovative'de "tamam" görünen düzenler şimdi IronPDF'de farklı görünüyor.
Sebep: Winnovative Classic'in eski tescilli motorunun geliştiriciler tarafından etrafından dolanılan render kusurları vardır. IronPDF'nin mevcut Chromium motoru, bunları doğru şekilde render eder.
Çözüm: Winnovative'ye özgü CSS hilelerini 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.
Neden: JavaScript bekleme seçeneklerini açıkça yapılandırmanız gerekiyor.
Çö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: Görseller ve CSS için görece URL'ler çözülmüyor.
Neden: IronPDF'in açıkça temel URL yapılandırmasına ihtiyacı var.
Çö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 Kesintileri
Belirti: İçerik, Winnovative'den farklı yerlerde kesiliyor.
Neden: Farklı render motorları sayfa kesintilerini farklı şekilde ele alır.
Çözüm: Açık CSS sayfa kırılma kontrolleri 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 beklenenin dışında fontlarla görünüyor.
Neden:IronPDF sistem fontlarını kullanır; web fontlarının açıkça yüklenmesi gerekir.
Çö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
Geçiş Öncesi Görevler
Kod tabanınızı denetleyerek tüm Winnovative kullanımlarını belirleyin:
# Find all Winnovative references
grep -r "Winnovative" --include="*.cs" .
grep -r "HtmlToPdfConverter" --include="*.cs" .
grep -r "PdfDocumentOptions" --include="*.cs" .
grep -r "ConvertUrl\|ConvertHtml" --include="*.cs" .
# Find all Winnovative references
grep -r "Winnovative" --include="*.cs" .
grep -r "HtmlToPdfConverter" --include="*.cs" .
grep -r "PdfDocumentOptions" --include="*.cs" .
grep -r "ConvertUrl\|ConvertHtml" --include="*.cs" .
Mevcut yapılandırmaları, sayfa boyutları, kenar boşlukları ve başlık/dipnot ayarları dahil olmak üzere belgeleyin. Kaldırılabilecek CSS çözümlerini (webkit önekleri, float tabanlı ızgaralar) belirleyin. JavaScript uyumluluk gereksinimlerini not edin.
Kod Güncelleme Görevleri
- Winnovative NuGet paketlerini kaldırın 2.IronPDF NuGet paketini yükleyin
- Tüm isim alanı importlarını
Winnovative'denIronPdf'e güncelleyin HtmlToPdfConverter'yuChromePdfRenderer'ye değiştirinConvertHtml()çağrılarınıRenderHtmlAsPdf()'e dönüştürünConvertUrl()çağrılarınıRenderUrlAsPdf()'e dönüştürün- Sayfa boyutu/oryantasyon ayarlarını
RenderingOptionsolarak güncelleyin - Kenar boşluğu yapılandırmalarını dönüştürün
TextElementtabanlı başlık/altbilgileri HTML tabanlıTextHeaderFooter'e taşıyın- Sayfa numarası yer tutucularını
&P;'den{total-pages}'e güncelleyin - Başlangıçta IronPDF lisans başlatma ekleyin
Geçiş Sonrası Testler
Geçiş sonrasında bu yönleri doğrulayın:
- Temel HTML'den PDF dönüştürmeyi test edin
- URL'den PDF'e dönüştürmeyi test edin
- CSS Grid düzenlerinin doğru render edilip edilmediğini doğrulayın
- Flexbox düzenlerinin doğru render edilip edilmediğini doğrulayın
- Modern ES6+ söz dizimi içeren JavaScript ağırlıklı sayfaları test edin
- Bootstrap 5 uyumluluğunu doğrulayın
- Başlık/altbilgi görüntülemeyi test edin
- Sayfa kesilmelerini doğrulayın
- PDF çıktı kalitesini karşılaştırın
Temizlik Görevleri
- Winnovative CSS çözümlerini (webkit önekleri) kaldırın
- ES5 JavaScript'i modern söz dizimine güncelleyin
- Float tabanlı ızgara yedeklerini kaldırın
- Belgeleri güncelleyin
IronPDF'e Geçmenin Temel Faydaları
Winnovative'den IronPDF'e geçmek çeşitli kritik avantajlar sağlar:
Modern Render Motoru: IronPDF, güncel Chromium motorunu kullanır ve tam CSS3, CSS Grid, Flexbox veES2024JavaScript desteği sağlar. Bootstrap 5, Tailwind CSS ve React/Vue gibi modern çerçeveler düzgün bir şekilde render edilir.
Basitleştirilmiş API: HTML tabanlı başlıklar ve altbilgiler programatik TextElement pozisyonlandırmanın yerini alır. {page} gibi sezgisel yer tutucular, karışık &p; sözdiziminin yerini alır. Yerleşik SaveAs() yöntemleri manuel bayt işlemini ortadan kaldırır.
Aktif Geliştirme: IronPDF'nin aylık güncellemeleri, mevcut ve gelecek .NET sürümleriyle uyumluluğu sağlar.
Çözümler Olmadan Modern CSS: CSS Grid, Flexbox ve modern tipografi, webkit önekleri veya float tabanlı yedek çözümleri olmadan çalışır.
Modern JavaScript: ES6+ özellikleri, ok fonksiyonları, async/await, sınıflar ve modüller, doğru bir şekilde çalıştırılır.

