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

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

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
SHELL

IronPDF'i yükleyin:

# Install IronPDF
dotnet add package IronPdf
# Install IronPDF
dotnet add package IronPdf
SHELL

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
$vbLabelText   $csharpLabel

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"
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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")
$vbLabelText   $csharpLabel

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);
$vbLabelText   $csharpLabel

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/")
$vbLabelText   $csharpLabel

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

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" .
SHELL

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

  1. IronPdf NuGet paketini kurun
  2. Tüm isim alanı içe aktarımlarını Winnovative'dan IronPdf'ya güncelleyin
  3. HtmlToPdfConverter'u ChromePdfRenderer ile değiştirin
  4. ConvertHtml() çağrılarını RenderHtmlAsPdf()'ye dönüştürün
  5. ConvertUrl() çağrılarını RenderUrlAsPdf()'ye dönüştürün
  6. Sayfa boyutu/yön ayarlarını RenderingOptions olarak güncelleyin
  7. Kenar boşlukları yapılandırmalarını dönüştürün
  8. TextElement tabanlı başlık/dipnotları HTML tabanlı TextHeaderFooter olarak taşıyın
  9. Sayfa numarası yer tutucularını &P;'dan {total-pages}'ya güncelleyin
  10. 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.

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