IRONSOFTWAREHOME
VIDEOLAR

IronPDF Kullanarak C# İle Sayfaları Nasıl Ayırırız | IronPDF

Curtis Chau
Curtis Chau
Updated: 19 Temmuz 2026

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:

<!-- CSS Grid can render inconsistently inWinnovative Classic-->
<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>

<!-- Modern JavaScript may not execute reliably in Classic -->
<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:

AspektWinnovative ClassicIronPDF
Render MotoruDaha eski tescilli motorChromium (Güncel)
CSS GridTutarsızTam Destek
FlexboxÖzel durumlarda tutarsızTam Destek
JavaScriptSınırlı modern JSES2024
Bootstrap 5Düzen sorunlarıTam Destek
Tailwind CSSSınırlıTam Destek
React/Vue SSRProblematikÇalışır
Web Yazı TipleriBazı kurulumlarda güvenilmezTam Destek
GüncellemelerSeyrekAylık
Fiyatlandırma (geliştirici başına)$450 Dağıtım / $1,200 Yeniden Dağıtılabilirironpdf.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
SHELL

IronPDF'i yükleyin:

# 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;

Adım 3: Lisansa İzin Verin

Uygulama başlangıcında lisans başlatmayı ekleyin:

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");
    }
}
C#

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");
    }
}

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");
    }
}
C#

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");
    }
}

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");
    }
}
C#

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");
    }
}

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
HtmlToPdfConverterChromePdfRenderer
PdfDocumentPdfDocument
PdfDocumentOptionsRenderingOptions
PdfHeaderOptionsHtmlHeaderFooter
PdfFooterOptionsHtmlHeaderFooter
TextElementHtmlFragment içinde HTML
ImageElementHTML <img>

Metot Haritalama

Winnovative YöntemiIronPDF 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ğiIronPDF Seçeneği
PdfPageSize.A4PaperSize = PdfPaperSize.A4
PdfPageSize.LetterPaperSize = PdfPaperSize.Letter
PdfPageOrientation.PortraitPaperOrientation = PdfPaperOrientation.Portrait
PdfPageOrientation.LandscapePaperOrientation = PdfPaperOrientation.Landscape
TopMargin = 20MarginTop = 20
BottomMargin = 20MarginBottom = 20
LeftMargin = 15MarginLeft = 15
RightMargin = 15MarginRight = 15
ShowHeader = trueHtmlHeader özelliğini ayarlayın
ShowFooter = trueHtmlFooter özelliğini ayarlayın
JavaScriptEnabled = trueEnableJavaScript = 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");

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);

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/");

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;
}
Text

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>
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" .
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ın: Winnovative 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ılandırılmış, görsel olarak çekici kılavuzlar oluşturmayı seviyor.

...
Daha Fazla Oku

İlgili Makaleler

Key in blue circle

Ücretsiz 30 günlük Deneme Anahtarınızı anında edinin.

Your trial license will be sent to your email address

Herhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.

bullet_checkedKredi kartı veya hesap oluşturma gerektirmezHerhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Ücretsiz Canlı Demo rezervasyonu yapın
Booking Badge

Dünya Çapında Milyonlarca Mühendisin Güvendiği

Iron Software müşteri logoları
Bağımsız Danışmanlık Alın
Aşağıdaki formu doldurun veya sales@ironsoftware.com adresine e-posta gönderin
Bilgileriniz daima gizli kalacaktır.
Dünya Çapında Milyonlarca Mühendisin Güvendiği
Iron Software müşteri logoları
Ücretsiz 30 Günlük Deneme Anahtarınızı anında alın.
Kredi kartı veya hesap oluşturma gerektirmez