Przejdź do treści stopki
KORZYSTANIE Z IRONPDF

Jak tworzyć pliki PDF w .NET Core za pomocą IronPDF

Problem z eksportowaniem pulpitow nawigacyjnych

Strona główna IronPDF Wewnetrzne pulpity nawigacyjne sa tworzone do przeglądania w przeglądarce internetowej. W momencie, gdy ktos potrzebuje udostepnic jeden na zewnatrz: prezentacja na posiedzenie zarzadu, cotygodniowy zrzut KPI dla zespolu zarządzającego lub raport z audytu zgodności, rzeczy szybko sie psuja.

Pierwsza rzecza, która ludzie probuja, a która nie działa, jest drukowanie z przeglądarki do formatu PDF. Strony lamia sie i przecinaja wykresy, paski nawigacji wposty przesiakaja do ukladu, a wynikowy PDF w niczym nie przypomina prawdziwego pulpitu nawigacyjnego. Zrzuty ekranu sa gorsze: rozdzielczosc pogarsza sie po przeskalowaniu do A4, tekst nie jest przeszukiwalny, a widok KPI z wieloma sekcjami rzadko miesci sie w jednym obrazie bez utraty polowy danych.

Glebszym problemem sa wykresy renderowane za pomoca JavaScript. Poniewaz Chart.js, ApexCharts i Highcharts rysuja asynchronicznie do elementu HTML , natywne migawki HTML do PDF czesto uchwycaja pustego kanfu. Zawartosc HTML jest obecna w DOM, ale wizualizacja nie. Tutaj może pomoc IronPDF.

Efektem jest, ze programista otrzymuje ikonke wiadomosci co poniedzialek, proszaca o reczne pobranie i formatowanie raportu. To nie jest skalowalny proces pracy. Dzisiaj spojrzymy na przykład IronPDF, aby zobaczyć, jak może utworzyć dokumenty PDF z zawartości HTML.

Rozwiazanie: renderowanie pulpitow nawigacyjnych po stronie serwera z wykorzystaniem IronPDF

IronPDF renderuje ta sama HTML, która napedza twoj pulpit nawigacyjny, do dokumentu PDF zgodnego z oryginalem. Uzytkownik klika przycisk 'Eksportuj do PDF' (może oznaczony kluczem w niebieskim kole lub niebieskim kluczem w kolo), punkt koncowy API obsługuje logike konwersji HTML, a przeglądarka pobiera zawartość PDF.

Nie ma potrzeby wdrazania Puppeteer sidecar, nie ma binarnego wkhtmltopdf do zarządzania i nie ma platnych interfejsow API eksportu zewnatrz, ktore trzeba monitorowac. IronPDF działa wewnątrz twojej istniejącej aplikacji ASP.NET jako biblioteka NuGet w C# do zadań PDF. Wbudowuje silnik Chromium, ktory wykonuje JavaScript dokladnie tak, jak robi to prawdziwa przeglądarka, co oznacza, ze Chart.js i ApexCharts renderuja sie poprawnie, poniewaz uruchamiaja sie przed przechwyceniem strony.

Przycisk eksportu staje sie funkcja samoobslugowa, która kazdy użytkownik biznesowy może obsługiwac, nie angażujac programisty w proces.

Jak to działa w praktyce

1. Uzytkownik klika 'Eksportuj do PDF'

Standardowe wywolanie JavaScript na stronie pulpitu nawigacyjnego przesyla aktywne filtry i zakres dat użytkownika do punktu koncowego API, aby pomoc w tworzeniu dokumentu PDF:

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

Przycisk z naszym kodem JavaScript

Przycisk, który wykorzystuje nasz kod JavaScript Brak przeladowania strony, brak przekierowania, tylko pobranie pliku zaktualizowanego z istniejącego widoku pulpitu nawigacyjnego.

2. Serwer tworzy zawartość HTML pulpitu nawigacyjnego

Warstwa kontrolera lub usługi zapytuje te same dane, ktore użytkownik widzi na ekranie i wypelnia szablon HTML - albo rendereowany widok Razor, albo skonstruowany ciag HTML - kartami KPI, tabelami danych i konfiguracja JSON wykresu, ktore Chart.js lub ApexCharts wykona.

HTML moze odniesc sie do arkusza stylow marki, zawierac logo Iron Software lub używać logo klientów Iron Software. Może również zawierać reguly CSS @media print do tlumienia elementow nawigacyjnych i kontrolowania podzialow stron.

Przykladowy plik kontrolera

Przykładowy plik kontrolera

3. ChromePdfRenderer renderuje plik HTML lub zawartość z włączonym JavaScript

W tym miejscu IronPDF zajmuje sie najtrudniejsza częścia. EnableJavaScript = true instruuje renderer, aby wykonal skrypty przed przechwyceniem. WaitFor.NetworkIdle0() trzyma migawke do czasu, az wszystkie asynchroniczne zasoby, włączajac wykres, zostana naladowane.

Gdy masz zainstalowane IronPDF za pomoca DLL PDF w C#, możesz uzyc następującego kodu:

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

Dla pulpitow nawigacyjnych, gdzie wykresy inicjalizuja sie z czasem, zamiast wywolania sieciowego, zamien NetworkIdle0() na WaitFor.JavaScript() i zasygnalizuj gotowosc z funkcji onComplete twojego wykresu. Obie strategie zapewniają, ze biblioteka PDF w C# przechwytuje wykres po jego renderowaniu, nie wczesniej.

PoradyUstaw CssMediaType na Print, aby zastosować zasady swojego arkusza stylow @media print. Pozwala to na ukrycie paskow bocznych, paskow nawigacyjnych i przyciskow akcji przed eksportowanym PDF bez modyfikacji HTML zywego pulpitu nawigacyjnego.

4. Kontroler zwraca dokument PDF jako plik do pobrania

Punkt koncowy API owija zawartość PDF w FileContentResult. Niezaleznie czy jestes czlonkiem PDF Association czy użytkownikiem sieci partnerskiej AWS, dostawa jest plynna:

[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 jest automatycznie ustawiane przez File() z nazwa pliku, wiec przeglądarka wyzwala pobranie zamiast otwierania PDF w nowej karcie.

Pobrany plik PDF

Wygenerowany raport PDF z przykładowym kodem IronPDF

5. Opcjonalnie: Planowana dystrybucja raportow

To samo wywolanie renderowania może działać wewnątrz zadania w tle, cyklicznego zadania Hangfire lub hostowanej IHostedService, która generuje cotygodniowy PDF KPI kazdego poniedzialkowego poranka i wysyla go e-mailem do listy rozdzielczej zarzadu. Brak interakcji użytkownika wymagana.

Korzyści w praktyce

Samoobsługa dla użytkowników biznesowych. Gdy przycisk eksportu jest aktywny, wiadomosci "czy możesz pobrac dla mnie raport?" na Slacku przestaja przychodzic. Kazdy użytkownik z dostepem do pulpitu nawigacyjnego może pobrac swoj PDF bez skladania wniosku.

Wiernosc wykresow. Poniewaz Chromium wykonuje JavaScript wewnątrz IronPDF, wykresy Chart.js, ApexCharts i Highcharts renderuja sie w PDF dokladnie tak, jak na ekranie - włączajac kolory, podpowiedzi renderowane jako statyczne etykiety i responsywne rozmiary.

Spójnosc marki. Kazdy eksportowany raport zawiera logo firmy, palete kolorow i typografie zdefiniowane w arkuszu stylow pulpitu nawigacyjnego. Nie ma potrzeby przestawiania formatowania miedzy eksportem a dystrybucja.

Planowana generacja. Polacz wywolanie renderowania z zadaniem w tle, aby automatycznie wyslac PDF-y do interesariuszy co tydzien lub miesiecznie. Zarzad otrzymuje dopracowany raport bez zadnych czynnosci recznych.

Brak zewnętrznych zależności. IronPDF działa w procesie. Nie ma potrzeby utrzymywania przy zyciu procesu Puppeteer Node.js, nie ma plików binarnych wkhtmltopdf do dołączenia dla kazdej platformy i nie ma API eksportu SaaS z ograniczeniami lub opłatami za dokument.

Uklad zoptymalizowany pod druk. CssMediaType.Print zastosowuje zasady @media print w czasie renderowania, pozwalając zdefiniowac czysty, eksporto-specyficzny uklad w CSS bez potrzeby utrzymania odrebnego szablonu HTML.

Zakończenie

Dodanie przycisku "Eksportuj do PDF" do pulpitu administratora brzmi jak mala funkcja. W praktyce eliminuje ona powtarzalne reczne zadanie, daje użytkownikom nietechnicznym możliwość, z ktorej mogli korzystać od lat, i produkuje dokument, ktory odzwierciedla, jak dane faktycznie wyglądaja, a nie przyblizona kopie z dialogu drukowania.

IronPDF obsługuje zlozonosc renderowania - wykonanie JavaScript, typy mediów CSS, przechwytywanie wykresow - wiec implementacja po twojej stronie to akcja kontrolera i szablon HTML. Jeśli chcesz przetestowac go na swoim własnym pulpicie nawigacyjnym, 30-dniowy okres próbny z pełnymi funkcjami i bez znaku wodnego jest dostępny na ironpdf.com.

Często Zadawane Pytania

Jaki jest główny cel IronPDF w pulpitach administracyjnych?

IronPDF umożliwia użytkownikom eksportowanie dynamicznych pulpitów administracyjnych do PDF za pomocą jednego kliknięcia, upraszczając proces udostępniania i zachowywania danych z pulpitu.

W jaki sposób IronPDF poprawia proces eksportu dla pulpitów administracyjnych?

IronPDF usprawnia proces eksportu, konwertując złożone i dynamiczne treści pulpitu bezpośrednio do formatu PDF, zapewniając dokładne zachowanie wszystkich elementów wizualnych i danych.

Czy IronPDF radzi sobie z dynamiczną treścią podczas eksportu do PDF?

Tak, IronPDF jest zaprojektowany do efektywnego obsługiwania dynamicznej treści, zapewniając, że wszelkie aktualizacje lub zmiany w pulpicie są dokładnie odzwierciedlone w wyeksportowanym PDF.

Czy można dostosować ustawienia eksportu PDF za pomocą IronPDF?

IronPDF oferuje różne opcje dostosowywania dla eksportu PDF, umożliwiając użytkownikom dostosowanie wynikowego pliku do konkretnych wymagań, takich jak ustawienie rozmiaru strony, orientacji i marginesów.

Jaki język programowania jest obsługiwany przez IronPDF do eksportowania pulpitów?

IronPDF obsługuje C# do eksportowania pulpitów do PDF, co czyni go idealnym wyborem dla deweloperów pracujących w ramach .NET.

Czy IronPDF utrzymuje układ pulpitu administracyjnego w PDF?

IronPDF zapewnia zachowanie układu pulpitu administracyjnego w wyeksportowanym PDF, zachowując integralność i wygląd oryginalnej treści.

Jakie są korzyści z używania IronPDF do eksportowania pulpitów w porównaniu z innymi metodami?

IronPDF oferuje uproszczony proces eksportu jednym kliknięciem, który zapewnia wysoką jakość wyniku, obsługuje dynamiczne treści i bezproblemowo integruje się z C#, oferując znaczące korzyści w porównaniu do ręcznych metod eksportu.

Czy IronPDF może eksportować pulpity z interaktywnymi elementami do PDF?

Chociaż IronPDF doskonale nadaje się do eksportowania statycznych i dynamicznych treści, interaktywne elementy, takie jak interaktywne wykresy, mogą wymagać dodatkowego przetwarzania, aby były dokładnie przedstawione w formacie PDF.

Czy IronPDF nadaje się do eksportu pulpitów na poziomie przedsiębiorstwa?

Tak, IronPDF doskonale nadaje się do aplikacji na poziomie przedsiębiorstwa, oferując solidną wydajność i niezawodność przy eksportowaniu złożonych i bogatych w dane pulpitów do PDF.

Jak łatwo jest zintegrować IronPDF z istniejącymi projektami C#?

Integracja IronPDF z istniejącymi projektami C# jest prosta dzięki jego obszernej dokumentacji i wsparciu, co pozwala deweloperom szybko dodać funkcjonalność eksportu PDF do ich aplikacji.

Curtis Chau
Autor tekstów technicznych

Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podrę...

Czytaj więcej

Zespół wsparcia Iron

Jesteśmy online 24 godziny, 5 dni w tygodniu.
Czat
E-mail
Zadzwoń do mnie