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

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
SHELL

IronPDF'i yükleyin:

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

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

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

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

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

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

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

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

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

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

Lütfen dikkate alınWinnovative kendi sahibine ait tescilli bir markadır. Bu site, Winnovative Software ile ilişkili, onaylı veya desteklenmemektedir. Tüm ürün adları, logolar ve markalar kendi sahiplerine aittir. Karşılaştırmalar, yalnızca bilgilendirme amaçlıdır ve yazı sırasında halka açık bilgilerle alakalı olarak yansıtılmaktadır.

Curtis Chau
Teknik Yazar

Curtis Chau, Bilgisayar Bilimleri alanında Lisans Derecesine (Carleton Üniversitesi) sahip ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirmeyle ilgileniyor. Sezgisel ve estetik açıdan hoş kullanıcı arayüzleri oluşturma tutkunu, Curtis modern çerçevelerle çalışmayı ve iyi yapı...

Daha Fazla Oku

Iron Destek Ekibi

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