IRONSOFTWAREHOME
VIDEOLAR

C# içinde PDF'yi Görüntüye Dönüştürme Yöntemleri

Curtis Chau
Curtis Chau
Updated: 19 Temmuz 2026

jsreport'den IronPDF'ye geçiş yapmak, .NET PDF iş akışınızı dışa bağımlı ikili yönetimi ve ayrı sunucu süreçleri olan Node.js bağımlı bir sistemden, tamamen işlem içinde çalışan saf bir .NET kütüphanesine dönüştürür. Bu kılavuz, profesyonel .NET geliştiricileri için altyapı karmaşıklığını ve JavaScript şablonlama gerekliliklerini ortadan kaldıran kapsamlı, adım adım bir geçiş yolu sağlar.

jsreport'den IronPDF'ye Neden Geçiş Yapmalısınız

jsreport Zorlukları

jsreport, saf bir .NET ortamında yeri olmayan karmaşıklıklar ekler:

  1. Node.js Bağımlılığı: Basit bir .NET uygulamasının gerektirmemesi gereken altyapı karmaşıklığını artıran Node.js çalışma zamanı ve ikilileri gerektirir.

  2. Dış İkili Yönetimi: Windows, Linux ve OSX için platforma özgü ikili dosyaları ayrı NuGet paketleri (jsreport.Binary, jsreport.Binary.Linux, jsreport.Binary.OSX) aracılığıyla indirilmeli ve yönetilmelidir.

  3. Ayrı Sunucu Süreci: Bir yardımcı program veya web sunucusu olarak çalışır—StartAsync() ve KillAsync() yaşam döngüsü yöntemleri ile ek süreç yönetimi gereklidir.

  4. JavaScript Şablonlama: Yerel C# yeteneklerini kullanmak yerine Handlebars, JsRender veya diğer JavaScript şablonlama sistemlerini öğrenmeye zorlar.

  5. Karmaşık İstek Yapısı: Basit bir PDF oluşturma için bile iç içe geçmiş Template yapılandırmaları içeren ayrıntılı RenderRequest nesneleri gerektirir.

  6. Lisanslama Sınırlamaları: Ücretsiz katman, örnek başına 5 şablonla sınırlıdır; bundan öte ticari kullanım bir Enterprise lisansı ($395/yıl örnek başına) veya Enterprise Ölçek ($1,295/yıl, örnekler arasında telif ücretsiz) gerektirir. jsreport.net/buy adresine bakın.

  7. Akış Tabanlı Çıktı: Elle dosya işlemleri ve bellek akışı yönetimi gerektiren akışlar döndürür.

jsreport vs IronPDF Karşılaştırması

ÖzellikjsreportIronPDF
Çalışma ZamanıNode.js + .NETSaf .NET
İkili YönetimManuel (jsreport.Binary paketleri)Otomatik
Sunucu SüreciGerekli (yardımcı program veya web sunucusu)İşlem içi
ŞablonlamaJavaScript (Handlebars, vb.)C# (Razor, dize interpolasyonu)
API TarzıAyrıntılı istek nesneleriTemiz akıcı yöntemler
ÇıktıAkışPdfDocument nesnesi
PDF ManipülasyonuSınırlıKapsamlı (birleştir, ayır, düzenle)
Asenkron DestekSadece AsyncHem senkron hem asenkron

.NET 10 ve C# 14'e geçmeyi planlayan ekipler için IronPDF, harici çalışma zamanı bağımlılıkları olmadan yerel bir .NET temeli sağlar.


Göç Karmaşıklığı Değerlendirmesi

Özelliklere Göre Tahmini Çaba

ÖzellikGöç Karmaşıklığı
HTML'den PDF'yeÇok Düşük
URL'yi PDF'ye çevirÇok Düşük
Başlıklar/AltbilgilerDüşük
Sayfa AyarlarıDüşük
Sunucu Yaşam DöngüsüDüşük
İkili YönetimDüşük

Paradigma Değişimi

Bu jsreport geçişindeki temel değişim, sunucu yönetimi ile ayrıntılı istek nesnelerinden basit işlem içi yöntem çağrılarına geçiştir:

jsreport:  LocalReporting().UseBinary().AsUtility().Create() → RenderAsync(RenderRequest) → Akış→ File
IronPDF:   ChromePdfRenderer → RenderHtmlAsPdf(html) → SaveAs()
Text

Başlamadan Önce

Ön Koşullar

  1. .NET Ortamı: .NET Framework 4.6.2+ veya .NET Core 3.1+ / .NET 5/6/7/8/9+
  2. NuGet Erişimi: NuGet paketlerini yükleyebilme
  3. IronPDF Lisansı: Lisans anahtarınızı ironpdf.com adresinden edinin

NuGet Paket Değişiklikleri

# Remove jsreport packages
dotnet remove package jsreport.Binary
dotnet remove package jsreport.Binary.Linux
dotnet remove package jsreport.Binary.OSX
dotnet remove package jsreport.Local
dotnet remove package jsreport.Types
dotnet remove package jsreport.Client

# Install IronPDF
dotnet add package IronPdf
SHELL

Lisans Yapılandırması

// Add at application startup (Program.cs or Startup.cs)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

jsreport Kullanımını Belirleme

# Find all jsreport references
grep -r "using jsreport\|LocalReporting\|RenderRequest\|RenderAsync" --include="*.cs" .
grep -r "JsReportBinary\|Template\|Recipe\|Engine\." --include="*.cs" .
SHELL

Tam API Referansı

Sınıf Eşlemeleri

jsreport SınıfıIronPDF Eşdeğeri
LocalReportingChromePdfRenderer
ReportingServiceChromePdfRenderer
RenderRequestMetot parametreleri
TemplateMetot parametreleri
ChromeRenderingOptions
ReportPdfDocument
Engine(gerekli değil)

Yöntem Eşlemeleri

jsreport YöntemiIronPDF Eşdeğeri
LocalReporting().UseBinary().AsUtility().Create()new ChromePdfRenderer()
rs.RenderAsync(request)renderer.RenderHtmlAsPdf(html)
rs.StartAsync()(gerekli değil)
rs.KillAsync()(gerekli değil)
report.Content.CopyTo(stream)pdf.SaveAs(path) veya pdf.BinaryData

RenderRequest Özellik Eşlemeleri

jsreport Şablon ÖzelliğiIronPDF Eşdeğeri
Template.ContentRenderHtmlAsPdf() için ilk parametre
Template.Recipe = Recipe.ChromePdf(gerekli değil)
Template.Engine = Engine.None(gerekli değil)
Chrome.HeaderTemplateRenderingOptions.TextHeader veya HtmlHeader
Chrome.FooterTemplateRenderingOptions.TextFooter veya HtmlFooter
Chrome.DisplayHeaderFooter(otomatik)
Chrome.MarginTopRenderingOptions.MarginTop

Yer Tutucu Eşlemeleri (Üstbilgi/Altbilgi)

jsreport Yer TutucuIronPDF Yer Tutucu
<span class='pageNumber'></span>{page}
<span class='totalPages'></span>{total-pages}
{#pageNum}{page}
{#numPages}{total-pages}
{#timestamp}{date}

Kod Göç Örnekleri

Örnek 1: Temel HTML'den PDF'ye

Önce (jsreport):

// NuGet: Install-Package jsreport.Binary
// NuGet: Install-Package jsreport.Local
// NuGet: Install-Package jsreport.Types
using jsreport.Binary;
using jsreport.Local;
using jsreport.Types;
using System;
using System.IO;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        var rs = new LocalReporting()
            .UseBinary(JsReportBinary.GetBinary())
            .AsUtility()
            .Create();

        var report = await rs.RenderAsync(new RenderRequest()
        {
            Template = new Template()
            {
                Recipe = Recipe.ChromePdf,
                Engine = Engine.None,
                Content = "<h1>Hello from jsreport</h1><p>This is a PDF document.</p>"
            }
        });

        using (var fileStream = File.Create("output.pdf"))
        {
            report.Content.CopyTo(fileStream);
        }

        Console.WriteLine("PDF created successfully!");
    }
}

Sonrası (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<h1>Hello from IronPDF</h1><p>This is a PDF document.</p>");
        pdf.SaveAs("output.pdf");
        Console.WriteLine("PDF created successfully!");
    }
}

jsreport yaklaşımı üç NuGet paketi (jsreport.Binary, jsreport.Local, jsreport.Types), üç ad alanı içe aktarması, yalnızca eşzamanlı yürütme, akıcı bir oluşturucu zinciri (LocalReporting().UseBinary().AsUtility().Create()), ayrıca iç içe geçmiş Template nesneleri ile sabitlenmiş ayrıntılı RenderRequest ve bir using bloğu ile manuel akıştan dosyaya kopyalamayı gerektirir.

IronPDF bunu bir NuGet paketi, bir namespace, üç satır kod ve senkron çalışma olarak indirir. ChromePdfRenderer.RenderHtmlAsPdf() yöntemi HTML'yi doğrudan kabul eder ve basit bir SaveAs() yöntemiyle bir PdfDocument döndürür. HTML'den PDF'ye belgelemeyi ek işleme seçenekleri için inceleyin.

Örnek 2: URL'den PDF'e

Önce (jsreport):

// NuGet: Install-Package jsreport.Binary
// NuGet: Install-Package jsreport.Local
// NuGet: Install-Package jsreport.Types
using jsreport.Binary;
using jsreport.Local;
using jsreport.Types;
using System;
using System.IO;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        var rs = new LocalReporting()
            .UseBinary(JsReportBinary.GetBinary())
            .AsUtility()
            .Create();

        var report = await rs.RenderAsync(new RenderRequest()
        {
            Template = new Template()
            {
                Recipe = Recipe.ChromePdf,
                Engine = Engine.None,
                Content = "<html><body><script>window.location='https://example.com';</script></body></html>"
            }
        });

        using (var fileStream = File.Create("webpage.pdf"))
        {
            report.Content.CopyTo(fileStream);
        }

        Console.WriteLine("Webpage PDF created successfully!");
    }
}

Sonrası (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf("https://example.com");
        pdf.SaveAs("webpage.pdf");
        Console.WriteLine("Webpage PDF created successfully!");
    }
}

jsreport, istekte Chrome.Url ayarlayarak URL'yi oluşturabilir, ancak üst düzey bir kolaylık yöntemi yoktur — ve mevcut koddaki yaygın bir kalıp, yukarıda gösterildiği gibi JavaScript yönlendirme çözümüdür (window.location='https://example.com') ve komut dosyasıyla gezinmeyi engelleyen sitelerde başarısız olabilir.

IronPDF, URL'yi doğrudan argüman olarak alan, tam JavaScript yürütme ve modern CSS desteği sunan özel bir RenderUrlAsPdf() yöntemi sağlar. URL'den PDF'e dönüştürme hakkında daha fazla bilgi edinin.

Örnek 3: Üstbilgi ve Altbilgili PDF

Önce (jsreport):

// NuGet: Install-Package jsreport.Binary
// NuGet: Install-Package jsreport.Local
// NuGet: Install-Package jsreport.Types
using jsreport.Binary;
using jsreport.Local;
using jsreport.Types;
using System;
using System.IO;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        var rs = new LocalReporting()
            .UseBinary(JsReportBinary.GetBinary())
            .AsUtility()
            .Create();

        var report = await rs.RenderAsync(new RenderRequest()
        {
            Template = new Template()
            {
                Recipe = Recipe.ChromePdf,
                Engine = Engine.None,
                Content = "<h1>Document with Header and Footer</h1><p>Main content goes here.</p>",
                Chrome = new Chrome()
                {
                    DisplayHeaderFooter = true,
                    HeaderTemplate = "<div style='font-size:10px; text-align:center; width:100%;'>Custom Header</div>",
                    FooterTemplate = "<div style='font-size:10px; text-align:center; width:100%;'>Page <span class='pageNumber'></span> of <span class='totalPages'></span></div>"
                }
            }
        });

        using (var fileStream = File.Create("document_with_headers.pdf"))
        {
            report.Content.CopyTo(fileStream);
        }

        Console.WriteLine("PDF with headers and footers created successfully!");
    }
}

Sonrası (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
using System;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
        {
            CenterText = "Custom Header",
            FontSize = 10
        };
        renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
        {
            CenterText = "Page {page} of {total-pages}",
            FontSize = 10
        };
        
        var pdf = renderer.RenderHtmlAsPdf("<h1>Document with Header and Footer</h1><p>Main content goes here.</p>");
        pdf.SaveAs("document_with_headers.pdf");
        Console.WriteLine("PDF with headers and footers created successfully!");
    }
}

jsreport yaklaşımı, Template üzerine bir Chrome nesnesi eklenmesini, DisplayHeaderFooter = true ayarlanmasını ve özel CSS sınıf yer tutucuları (<span class='pageNumber'></span>, <span class='totalPages'></span>) ile HTML şablonlarının kullanılmasını gerektirir. Üstbilgi ve altbilgi şablonları tam satır içi stil içerir.

IronPDF, CenterText, LeftText, RightText ve FontSize için özel özellikler içeren daha temiz bir TextHeaderFooter yapılandırması sağlar. Sayfa numarası yer tutucuları daha basit {page} ve {total-pages} söz dizimini kullanır. Üstbilgi ve altbilgi dokümantasyonunda HTML üstbilgi seçeneklerini görün.


Kritik Taşıma Notları

Sunucu Yaşam Döngüsü Yönetimi Ortadan Kaldır

Jsreport, açık sunucu yaşam döngüsü yönetimi gerektirir:

// jsreport (DELETE THIS):
var rs = new LocalReporting()
    .UseBinary(JsReportBinary.GetBinary())
    .AsUtility()
    .Create();

// Or for web server mode:
var rs = new LocalReporting()
    .UseBinary(JsReportBinary.GetBinary())
    .AsWebServer()
    .Create();

await rs.StartAsync();
// ... use rs ...
await rs.KillAsync();

IronPDF tamamen işlem içi çalışır—sunucu başlatma yok, süreç yönetimi yok, temizlik yok:

// IronPDF:
var renderer = new ChromePdfRenderer();
// Just use it—no lifecycle management needed

Platforma Özgü İkili Paketleri Kaldır

Jsreport, her hedef platform için ayrı NuGet paketleri gerektirir:

# DELETE these platform-specific packages:
dotnet remove package jsreport.Binary
dotnet remove package jsreport.Binary.Linux
dotnet remove package jsreport.Binary.OSX
SHELL

IronPDF, tek bir NuGet paketi aracılığıyla tüm platform gereksinimlerini otomatik olarak halleder.

Yer Tutucu Sözdizimini Güncelleyin

Jsreport, CSS sınıf tabanlı veya süslü ayraç yer tutucuları kullanır.IronPDF farklı bir sözdizimi kullanır:

// jsreport placeholders:
"<span class='pageNumber'></span>"  // or {#pageNum}
"<span class='totalPages'></span>"  // or {#numPages}

//IronPDF placeholders:
"{page}"
"{total-pages}"
"{date}"
"{html-title}"

Handlebars'ı C# Dize Interpolasyonu ile Değiştirin

jsreport sıkça Engine.Handlebars ile Handlebars şablonlamayı kullanır:

// jsreport Handlebars (DELETE THIS):
Template = new Template
{
    Content = "<h1>Hello, {{name}}</h1>",
    Engine = Engine.Handlebars
},
Data = new { name = "World" }

//IronPDF with C# string interpolation:
string name = "World";
string html = $"<h1>Hello, {name}</h1>";
var pdf = renderer.RenderHtmlAsPdf(html);
C#

Akış Yönetimini Basitleştirin

Jsreport, manuel kopyalama gerektiren bir akış döndürür:

// jsreport stream handling (DELETE THIS):
using (var fileStream = File.Create("output.pdf"))
{
    report.Content.CopyTo(fileStream);
}

// Or for byte array:
using (var memoryStream = new MemoryStream())
{
    await report.Content.CopyToAsync(memoryStream);
    return memoryStream.ToArray();
}

//IronPDF direct access:
pdf.SaveAs("output.pdf");
// Or:
byte[] bytes = pdf.BinaryData;

Hata Ayıklama

Sorun 1: LocalReporting Bulunamadı

Sorun: Kod, IronPDF'de mevcut olmayan LocalReporting sınıfını referans alıyor.

Çözüm: ChromePdfRenderer ile değiştirin:

// jsreport
var rs = new LocalReporting().UseBinary().AsUtility().Create();

// IronPDF
var renderer = new ChromePdfRenderer();

Sorun 2: RenderRequest Bulunamadı

Sorun: Kod, RenderRequest ve Template sarmalayıcı nesnelerini kullanıyor.

Çözüm: HTML'i doğrudan render yöntemlerine gönderin:

// jsreport
await rs.RenderAsync(new RenderRequest { Template = new Template { Content = html } });

// IronPDF
var pdf = renderer.RenderHtmlAsPdf(html);

Sorun 3: Sayfa Numaraları Görünmüyor

Sorun: jsreport yer tutucu sözdizimi <span class='pageNumber'></span> kullanılıyor.

**Çözüm:**IronPDF yer tutucu sözdizimine güncelleyin:

// jsreport syntax (won't work)
"Page <span class='pageNumber'></span> of <span class='totalPages'></span>"

//IronPDF syntax
"Page {page} of {total-pages}"

Sorun 4: JsReportBinary Bulunamadı

Sorun: Kod, JsReportBinary.GetBinary() referans alıyor.

Çözüm: Tamamen silin—IronPDF dışsal ikililere ihtiyaç duymaz:

// DELETE this jsreport pattern:
.UseBinary(JsReportBinary.GetBinary())

//IronPDF needs nothing—just create the renderer:
var renderer = new ChromePdfRenderer();

Geçiş Kontrol Listesi

Öncesi-Geçiş

  • Tüm jsreport using ifadelerini belirleyin Handlebars/JsRender kullanan şablonları listeleyin (C# dize eklemeye dönüştürün) Kullanılan mevcut Chrome seçeneklerini belgeleyin (kenar boşlukları, kağıt boyutu) Web sunucusu ve yardımcı program modu için kontrol edin (her ikisi de işlem içi olur) Platforma özgü ikili paketleri not alın (hepsini silin) -IronPDF lisans anahtarını edinin

Paket Değişiklikleri

  • jsreport.Binary paketini kaldırın
  • jsreport.Binary.Linux paketini kaldırın
  • jsreport.Binary.OSX paketini kaldırın
  • jsreport.Local paketini kaldırın
  • jsreport.Types paketini kaldırın
  • jsreport.Client paketini kaldırın
  • IronPdf paketini yükleyin

Kod Değişiklikleri

Başlangıçta lisans anahtarı yapılandırmasını ekleyin

  • LocalReporting ile ChromePdfRenderer değiştirin
  • RenderRequest sarmalayıcısını kaldırın
  • Template sarmalayıcısını kaldırın
  • Yer tutucu sözdizimini güncelleyin (<span class='pageNumber'>{page})
  • Handlebar'ları C# dize enterpolasyonu ile değiştirin
  • StartAsync() / KillAsync() çağrılarını kaldırın
  • Akış kopyalamayı BinaryData veya SaveAs() ile değiştirin

Test Etme

Tüm PDF oluşturma yollarını test edin

  • Başlık/altbilgi render'ını doğrulayın.
  • Sayfa numaralandırmayı kontrol edin
  • Kenar boşluğu aralıklarını doğrulayın
  • Karmaşık CSS/JavaScript sayfalarıyla test edin Performansı karşılaştırın

Geçiş Sonrası

  • jsreport ikili dosyalarını silin
  • Node.js bağımlılıklarını artık gerekli değilse kaldırın
  • Dağıtım betiklerini güncelleyin
  • Belgeleri güncelleyin

Lütfen dikkate alın: jsreport, ilgili sahibinin tescilli markasıdır. Bu site, jsreport ile ilişkili değildir, onaylı değildir veya sponsorlu değildir. 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