Altbilgi içeriğine atla
IRONPDF KULLANARAK

.NET Core'da IronPDF ile PDF Dosyalarını Nasıl Oluşturabilirsiniz

Dashboard'ları Dışa Aktarmanın Sorunu

IronPDF ana sayfası Dahili panolar, bir web tarayıcısında görüntülenmek üzere oluşturulmuştur. Biri bunu dışarıda paylaşmaya ihtiyaç duyduğunda: bir kurul toplantısı destesi, liderlik ekibi için haftalık KPI anlık görüntüsü veya bir uyum denetim raporu, işler hızla dağılır.

Tarayıcıdan PDF'ye yazdırmak, insanların denediği şeydir ve başarısız olan ilk şeydir. Sayfalar kırılır ve grafiklerin arasında kesilir, gezinme kenar çubukları düzenlere sızar ve ortaya çıkan PDF, canlı panoya hiç benzemez. Ekran görüntüleri daha da kötüdür: çözünürlük A4 boyutuna ölçeklendirildiğinde düşer, metin aranamaz ve çok bölümlü bir KPI görünümü, verilerin yarısını kaybetmeden tek bir görüntüye sığmaz.

Daha derin bir sorun JavaScript ile render edilen grafiklerdir. Chart.js, ApexCharts ve Highcharts, bir HTML ögesine eşzamansız olarak çizim yaptığından, bir yerel HTML'den PDF anlık görüntüsü genellikle boş bir kanvas yakalar. HTML içeriği DOM'da mevcutken, görselleştirme yoktur. Burası, IronPDF'in yardım edebileceği yer.

Sonuç, bir geliştiricinin her Pazartesi elle bir rapor çekip formatlamasını isteyen bir mesaj simgesi almasıdır. Bu, ölçeklenebilir bir iş akışı değildir. Bugün, HTML içeriğinden PDF belgeleri oluşturabilen bir IronPDF örneğine bakacağız.

Çözüm: IronPDF ile Sunucu-Taraflı Dashboard Render

IronPDF, panonuzu çalıştıran aynı HTML'yi pikselleri mükemmel bir PDF belgesine dönüştürür. Kullanıcı, "PDF Olarak Dışa Aktar" düğmesine tıklar (belki mavi bir daire içinde bir anahtarla veya daire içinde mavi bir anahtarla işaretlenmiştir), bir API son noktası HTML'yi dönüştürme mantığını yönetir ve tarayıcı PDF içeriğini indirir.

Yönetilecek bir Puppeteer yardımcı programı, yönetilecek bir wkhtmltopdf ikili dosyası ve ödeme ve izleme yapılacak üçüncü taraf bir dışa aktarma API'si yoktur. IronPDF, var olan ASP.NET uygulamanız içinde bir C# NuGet kütüphanesi olarak çalışır. Bir Chromium motoru gömülüdür ve JavaScript'i gerçek bir tarayıcı gibi çalıştırır, bu da Chart.js ve ApexCharts'ın doğru şekilde render edilmesini sağlar, çünkü aslında sayfa yakalanmadan önce çalıştırılır.

Dışa aktarma düğmesi, herhangi bir iş kullanıcısının kullanabileceği bir self-servis özelliği haline gelir, bir geliştiriciyi döngüye dahil etmeden.

Pratikte Nasıl Çalışır?

1. Kullanıcı "PDF Olarak Dışa Aktar" Düğmesine Tıklar

Pano sayfasında standart bir JavaScript getirme çağrısı, kullanıcı tarafından aktif olarak filtrelenen ve tarih aralığıyla bir PDF belgesi oluşturulmasına yardımcı olmak için bir API son noktasına gönderir:

document.getElementById('export-btn').addEventListener('click', async () => {
    const params = new URLSearchParams({ from: dateFrom, to: dateTo, region: selectedRegion });
    const response = await fetch(`/api/reports/export?${params}`);
    const blob = await response.blob();
    const url = URL.createObjectURL(blob);
    const a = document.createElement('a');
    a.href = url;
    a.download = 'dashboard-report.pdf';
    a.click();
});
document.getElementById('export-btn').addEventListener('click', async () => {
    const params = new URLSearchParams({ from: dateFrom, to: dateTo, region: selectedRegion });
    const response = await fetch(`/api/reports/export?${params}`);
    const blob = await response.blob();
    const url = URL.createObjectURL(blob);
    const a = document.createElement('a');
    a.href = url;
    a.download = 'dashboard-report.pdf';
    a.click();
});
JAVASCRIPT

JavaScript Kodumuzla Düğme

JavaScript kodumuzu kullanan buton Sayfa yenileme yok, yönlendirme yok, sadece mevcut pano görünümünden tetiklenen bir dosya indirme.

2. Sunucu Pano HTML İçeriğini Oluşturur

Denetleyici veya hizmet katmanı, kullanıcının ekranda gördüğü aynı verileri sorgulayarak, KPI kartları, veri tabloları ve Chart.js veya ApexCharts'ın çalıştıracağı grafik yapılandırma JSON'u ile bir HTML şablonu – ya render edilmiş bir Razor görünümü ya da oluşturulmuş bir HTML dizesi – doldurur.

HTML, markanızın stil sayfasına referans verebilir, Iron Software logosunu içerebilir veya Iron Software'in müşteri logolarını kullanabilir. Ayrıca, yazıcı medya CSS kurallarını, gezinme öğelerini bastırmak ve sayfa kesimlerini kontrol etmek için dahil edebilir.

Örnek Denetleyici Dosyası

Örnek kontrolcü dosyası

3. ChromePdfRenderer, JavaScript Açık Olarak HTML Dosyasını veya İçeriğini Render Eder

Burada IronPDF zorlu kısmı ele alır. EnableJavaScript = true, render'ın yakalama öncesi betikleri çalıştırmasını söyler. WaitFor.NetworkIdle0(), grafik verileri yüklenmiş olan tüm asenkron kaynaklar dahil, anlık görüntüyü tutar.

C# PDF DLL'si ile IronPDF'i kurduğunuzda, aşağıdaki kodu kullanabilirsiniz:

using IronPdf;
using IronPdf.Rendering;

var renderer = new ChromePdfRenderer();

renderer.RenderingOptions.EnableJavaScript = true;

renderer.RenderingOptions.WaitFor.NetworkIdle0();

renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;

renderer.RenderingOptions.MarginTop = 15;

renderer.RenderingOptions.MarginBottom = 15;

var pdf = renderer.RenderHtmlAsPdf(dashboardHtml);
using IronPdf;
using IronPdf.Rendering;

var renderer = new ChromePdfRenderer();

renderer.RenderingOptions.EnableJavaScript = true;

renderer.RenderingOptions.WaitFor.NetworkIdle0();

renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;

renderer.RenderingOptions.MarginTop = 15;

renderer.RenderingOptions.MarginBottom = 15;

var pdf = renderer.RenderHtmlAsPdf(dashboardHtml);
Imports IronPdf
Imports IronPdf.Rendering

Dim renderer As New ChromePdfRenderer()

renderer.RenderingOptions.EnableJavaScript = True

renderer.RenderingOptions.WaitFor.NetworkIdle0()

renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print

renderer.RenderingOptions.MarginTop = 15

renderer.RenderingOptions.MarginBottom = 15

Dim pdf = renderer.RenderHtmlAsPdf(dashboardHtml)
$vbLabelText   $csharpLabel

Grafiklerin bir ağ isteği yerine bir zamanlayıcıda başlatıldığı panolar için, NetworkIdle0()'u WaitFor.JavaScript() ile değiştirin ve grafiğinizin onComplete geri çağrısından hazır durumu sinyalini gönderin. Her iki strateji de C# PDF kütüphanesinin grafiği çizmeyi bitirdikten sonra yakalamasını, önce değil, garanti eder.

İpuçlarıCssMediaType'yi Yazdır'a ayarlayın, @media print stil sayfası kurallarınızı uygulayın. Bu, yan çubukları, gezinme çubuklarını ve işlem düğmelerini, canlı gösterge tablosunun HTML'sini değiştirmeden dışa aktarılan PDF'den gizlemenizi sağlar.

4. Denetleyici PDF Belgesini Bir Dosya İndirmesi Olarak Döndürür

API son noktası, PDF içeriğini bir FileContentResult içinde sarar. Bir PDF association üyesi veya bir AWS ortak ağ kullanıcısı olsanız da, teslimat sorunsuzdur:

[HttpGet("api/reports/export")]

public IActionResult ExportDashboard([FromQuery] ReportFilters filters)

{

    var dashboardHtml = _reportService.BuildDashboardHtml(filters);

    var renderer = new ChromePdfRenderer();

    renderer.RenderingOptions.EnableJavaScript = true;

    renderer.RenderingOptions.WaitFor.NetworkIdle0();

    renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;

    PdfDocument report = renderer.RenderHtmlAsPdf(dashboardHtml);

    return File(

        report.BinaryData,

        "application/pdf",

        $"KPI-Report-{filters.From:yyyyMMdd}.pdf"

    );

}
[HttpGet("api/reports/export")]

public IActionResult ExportDashboard([FromQuery] ReportFilters filters)

{

    var dashboardHtml = _reportService.BuildDashboardHtml(filters);

    var renderer = new ChromePdfRenderer();

    renderer.RenderingOptions.EnableJavaScript = true;

    renderer.RenderingOptions.WaitFor.NetworkIdle0();

    renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;

    PdfDocument report = renderer.RenderHtmlAsPdf(dashboardHtml);

    return File(

        report.BinaryData,

        "application/pdf",

        $"KPI-Report-{filters.From:yyyyMMdd}.pdf"

    );

}
Imports Microsoft.AspNetCore.Mvc
Imports IronPdf

<HttpGet("api/reports/export")>
Public Function ExportDashboard(<FromQuery> filters As ReportFilters) As IActionResult

    Dim dashboardHtml = _reportService.BuildDashboardHtml(filters)

    Dim renderer = New ChromePdfRenderer()

    renderer.RenderingOptions.EnableJavaScript = True

    renderer.RenderingOptions.WaitFor.NetworkIdle0()

    renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print

    Dim report As PdfDocument = renderer.RenderHtmlAsPdf(dashboardHtml)

    Return File(report.BinaryData, "application/pdf", $"KPI-Report-{filters.From:yyyyMMdd}.pdf")

End Function
$vbLabelText   $csharpLabel

Content-Disposition: attachment, File() tarafından otomatik olarak bir dosya adı ile ayarlanır, böylece tarayıcı yeni bir sekmede PDF'yi açmak yerine bir indirme başlatır.

İndirilen PDF Dosyası

IronPDF örnek kodu ile oluşturulmuş PDF raporu

5. İsteğe Bağlı: Zamanlanmış Rapor Dağıtımı

Aynı render çağrısı, haftalık KPI PDF'sini her Pazartesi sabahı oluşturan ve liderlik dağıtım listesine e-posta gönderen bir arka plan işi, tekrarlayan bir Hangfire görevi veya barındırılan bir IHostedService içinde çalıştırılabilir. Kullanıcı etkileşimi gerekmez.

Gerçek Dünya Faydaları

İş kullanıcıları için self-servis. Dışa aktarma düğmesi canlı hale geldiğinde, "Benim için bir rapor çekebilir misiniz?" Slack mesajları durur. Pano erişimi olan herhangi bir kullanıcı, bir istek oluşturmadan kendi PDF'sini indirebilir.

Grafik sadakati. Çünkü Chromium, JavaScript'i içinde IronPDF çalıştırır, Chart.js, ApexCharts ve Highcharts grafikler, ekranında göründüğü gibi PDF'de render edilir — renkler, statik etiketler olarak render edilen ipuçları ve duyarlı boyutlandırma dahil.

Marka tutarlılığı. Her dışa aktarılan rapor, şirket logosunu, renk paletini ve panonun stil sheet'inde tanımlanan tipografiyi taşır. Dışa aktarma ve dağıtım arasında yeniden biçimlendirme yoktur.

Zamanlanmış oluşturma. Arka plan işi ile eşleştirilen render çağrısı, haftalık veya aylık PDF'leri paydaşlara otomatik olarak e-posta ile göndermek için. Liderlik, kimse tarafından elle oluşturulmadan cilalı bir rapor alır.

Harici bağımlılıklar yoktur. IronPDF, işlem içinde çalışır. Canlı tutulan bir Puppeteer Node.js iş süreci yok, her platform için paketlenecek bir wkhtmltopdf ikili dosyası yok ve hız sınırlamaları veya belge başına fiyatlandırma ile bir SaaS dışa aktarma API'si yok.

Baskı için optimize edilmiş düzen. CssMediaType.Print, render sırasında medya yazıcı kurallarınızı uygular, bu sayede ayrı bir HTML şablonu sürdürmeden CSS'de temiz, dışa aktarma özel bir düzen tanımlamanıza olanak tanır.

Kapanış

Yönetici dashboard'una bir "PDF olarak Dışa Aktar" düğmesi eklemek küçük bir özellik gibi görünebilir. Pratikte, bir tekrarlanan manuel görevi ortadan kaldırır, teknik olmayan kullanıcılara yıllardır etrafında çalıştıkları bir yeteneği verir ve verilerin aslında nasıl göründüğünü yansıtan bir belge üretir, bozuk bir yazdırma diyaloğu yaklaşık değil.

IronPDF, render karmaşıklığını — JavaScript çalıştırma, CSS medya türleri, grafik yakalama — ele alır, bu yüzden uygulama tarafınızda bir denetleyici eylemi ve bir HTML şablonu bulunur. Kendi dashboard'ınıza karşı test etmek isterseniz, tüm özellikleri ve watermark'sız bir ironpdf.com adresinden 30 günlük ücretsiz deneme mevcuttur.

Sıkça Sorulan Sorular

Yönetici panolarında IronPDF'nin ana amacı nedir?

IronPDF, kullanıcıların dinamik yönetici panolarını tek bir tıklamayla PDF olarak dışa aktarmalarına olanak tanır, bu da gösterge panosu verilerini paylaşma ve koruma sürecini basitleştirir.

IronPDF, yönetici panoları için dışa aktarma sürecini nasıl iyileştirir?

IronPDF, karmaşık ve dinamik pano içeriğini doğrudan PDF formatına dönüştürerek tüm görsel öğelerin ve verilerin doğru bir şekilde korunmasını sağlar.

IronPDF, PDF'ye dışa aktarırken dinamik içeriği işleyebilir mi?

Evet, IronPDF dinamik içeriği verimli bir şekilde işlemek üzere tasarlanmıştır ve bu, panodaki herhangi bir güncelleme veya değişikliğin dışa aktarılan PDF'de doğru bir şekilde yansıtılmasını sağlar.

IronPDF kullanarak PDF dışa aktarma ayarlarını özelleştirmek mümkün mü?

IronPDF, PDF dışa aktarımları için çeşitli özelleştirme seçenekleri sunar ve kullanıcıların çıktılarını belirli gereksinimlere göre uyarlamalarına olanak tanır, örneğin sayfa boyutunu, yönelimini ve kenar boşluklarını ayarlama.

IronPDF, panoları dışa aktarmak için hangi programlama dilini destekler?

IronPDF, panoları PDF'ye dışa aktarmak için C#'ı destekler ve bu, .NET framework içerisinde çalışan geliştiriciler için ideal bir seçimdir.

IronPDF, yönetici panosunun düzenini PDF'de korur mu?

IronPDF, yönetici panosunun düzeninin dışa aktarılan PDF'de korunmasını sağlar, orijinal içeriğin bütünlüğünü ve görünümünü muhafaza eder.

IronPDF'yi diğer yöntemlerle karşılaştırıldığında panoları dışa aktarmak için kullanmanın faydaları nelerdir?

IronPDF, yüksek kaliteli bir çıktı sağlayan, dinamik içeriği destekleyen ve C# ile sorunsuz şekilde entegre olan, manuel dışa aktarma yöntemlerine göre önemli avantajlar sunan tek tıklamayla bir dışa aktarma süreci sunar.

IronPDF panoları etkileşimli öğeler ile PDF'ye dışa aktarabilir mi?

IronPDF statik ve dinamik içeriği dışa aktarmada mükemmeldir, ancak canlı grafikler gibi etkileşimli öğeler doğru bir şekilde PDF formatında temsil edilmek için ek işleme gerektirebilir.

IronPDF, kurumsal düzeyde pano dışa aktarımları için uygun mu?

Evet, IronPDF, karmaşık ve veri açısından zengin panoları PDF'ye dışa aktarmada sağlam performans ve güvenilirlik sunan kurumsal düzeyde uygulamalar için çok uygundur.

Mevcut C# projelerine IronPDF'yi entegre etmek ne kadar kolaydır?

IronPDF'yi mevcut C# projelerine entegre etmek, kapsamlı belgeleri ve desteği sayesinde basittir, böylece geliştiricilerin uygulamalarına hızla PDF dışa aktarma işlevselliği eklemelerini sağlar.

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