IRONSOFTWAREHOME
KORZYSTANIE Z IRONPDF

Jak stworzyć aplikację raportującą w C#

Curtis Chau
Curtis Chau
Updated: 19 lipca 2026

Otwieranie pliku PDF w domyślnej przeglądarce jest częstym zadaniem podczas tworzenia aplikacji .NET. Po wygenerowaniu plików PDF programowo za pomocą IronPDF często trzeba je natychmiast wyświetlić użytkownikom w wybranej przez nich domyślnej aplikacji — takiej jak Adobe Acrobat lub Microsoft Edge. Ten przewodnik przeprowadza cie przez kroki tworzenia plikow PDF przy uzyciu IronPDF i automatycznego otwierania ich w Windows za pomoca System.Diagnostics.Process.Start.

Polaczenie potężnych mozliwosci konwersji HTML do PDF IronPDF z prostą metodą uruchamiania Process tworzy praktyczny przeplyw pracy do budowania i wyswietlania profesjonalnych plikow PDF w domyslnej aplikacji skonfigurowanej na komputerze uzytkownika.

Jak zainstalować IronPDF w projekcie .NET?

Przed wygenerowaniem lub otwarciem jakiegokolwiek pliku PDF należy zainstalować IronPDF w swoim projekcie. Użyj konsoli menedżera pakietów NuGet lub interfejsu CLI .NET:

PM > Install-Package IronPdf

Po instalacji dodaj klucz licencyjny lub rozpocznij bezpłatny okres próbny, aby uzyskać dostęp do pełnej funkcjonalności. Dokumentacja IronPDF szczegółowo opisuje wszystkie opcje konfiguracyjne, w tym instalację za pośrednictwem NuGet.

Po zainstalowaniu uzyskasz dostęp do pełnego zestawu funkcji IronPDF, w tym konwersji HTML na PDF, renderowania adresów URL, scałania plików PDF, dodawania znaków wodnych, podpisywania cyfrowego i wielu innych.

Jak wygenerować i otworzyć plik PDF?

Najprostsze podejście obejmuje trzy etapy:

  1. Utwórz dokument PDF za pomocą IronPDF.
  2. Zapisz plik w katalogu.
  3. Otworz PDF w domyslnej aplikacji uzywając Process.Start.

Oto kompletny przykład, który można wypróbować w Visual Studio w nowym projekcie aplikacji konsolowej:

using IronPdf;
using System.Diagnostics;

// Create a new PDF renderer
var renderer = new ChromePdfRenderer();

// Generate PDF from HTML content
var pdf = renderer.RenderHtmlAsPdf(@"
    <html>
        <body>
            <h1>Invoice #12345</h1>
            <p>Generated on: " + DateTime.Now.ToString("yyyy-MM-dd") + @"</p>
            <table>
                <tr><td>Product</td><td>Price</td></tr>
                <tr><td>IronPDF License</td><td>$299</td></tr>
            </table>
        </body>
    </html>");

// Save the PDF to a file
string outputPath = "invoice.pdf";
pdf.SaveAs(outputPath);

// Open the PDF in the default viewer
Process.Start(new ProcessStartInfo
{
    FileName = outputPath,
    UseShellExecute = true
});

Ten kod najpierw tworzy instancję ChromePdfRenderer, ktora jest glowną klasą IronPDF do konwersji HTML do PDF. Metoda RenderHtmlAsPdf konwertuje ciag HTML na obiekt dokumentu PDF. Więcej informacji na temat tego podejścia można znaleźć w przewodniku IronPDF dotyczącym konwersji HTML do PDF.

Po zapisaniu PDF przy użyciu SaveAs, kod uzywa Process.Start z ProcessStartInfo, aby otworzyc plik w domyslnym przegladarce PDF. Kluczowe ustawienie tutaj to UseShellExecute = true, ktore informuje Windows, aby otworzyc plik PDF z jego domyslną aplikacją.

Wynik

Jak pokazano na poniższym obrazku, IronPDF z powodzeniem generuje plik PDF i wyświetla go przy użyciu domyślnej przeglądarki skonfigurowanej w systemie — w tym przypadku Opera GX.

Jak otwierac PDFy w domyslnej przegladarce w C#: Rysunek 1 - PDF wyswietlany przy użyciu domyslnej przegladarki

Dlaczego stwierdzenia najwyższego poziomu?

W .NET 10 i nowoczesnych wersjach C#, najwyzsze poziomy instrukcji usuwają potrzebe otoczki klasy Program. Kod uruchamia się bezpośrednio od początku pliku, dzięki czemu przykłady są krótsze i łatwiejsze do zrozumienia. Wszystkie przykłady w tym przewodniku wykorzystują ten schemat.

Dlaczego funkcja UseShellExecute ma znaczenie podczas otwierania dokumentów PDF?

W .NET Core i nowoczesnych wersjach .NET (.NET 5 do .NET 10), parametr UseShellExecute domyslnie ustawia sie na false. Bez wyraźnego ustawienia na true, twoja aplikacja zgłosi blad przy probie uruchomienia pliku PDF.

using IronPdf;
using System.Diagnostics;
using System.IO;

// Generate a report with IronPDF
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.MarginTop = 50;
renderer.RenderingOptions.MarginBottom = 50;

var pdf = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/Main_Page");

// Save to temp directory for immediate viewing
string tempPath = Path.Combine(Path.GetTempPath(), $"URL_{Guid.NewGuid()}.pdf");
pdf.SaveAs(tempPath);

// IMPORTANT: Set UseShellExecute = true for .NET Core/5+
var startInfo = new ProcessStartInfo
{
    FileName = tempPath,
    UseShellExecute = true  // Required in .NET Core/5+ to open PDF in default viewer
};
Process.Start(startInfo);

Wlasciwosc UseShellExecute okresla, czy uzywac powloki systemu operacyjnego do rozpoczynania procesu. Po ustawieniu na true, Windows uzywa rejestru skojarzen plikow, aby okreslic, ktory domyslny czytnik PDF powinien otworzyc plik. Bez tego ustawienia w nowoczesnych wersjach .NET, napotkasz blad wykonania, mowiac, ze plik nie moze zostac otwarty.

Uzywanie katalogu tymczasowego z unikalnym nazewnictwem (przez Guid.NewGuid()) zapobiega konfliktom plikow przy generowaniu wielu PDFow w szybkim tempie. Domyślny folder tymczasowy jest automatycznie czyszczony przez system operacyjny zgodnie z ustalonym harmonogramem.

Wynik

Jak otwierac PDFy w domyslnej przegladarce w C#: Rysunek 2 - URL do PDFa wygenerowany i wyswietlony przy użyciu domyslnej przegladarki

Jak poprawnie obsługiwać ścieżki do plików?

Ścieżki plików zawierające spacje i znaki specjalne wymagają ostrożnego traktowania. Brakujący katalog lub nieprawidlowo sformowana sciezka bedą fail silent lub zgloszą wyjatek, zanim osiągniesz Process.Start. Oto podejście obejmujące tworzenie katalogów i sprawdzanie istnienia plików:

using IronPdf;
using System.Diagnostics;
using System.IO;

// Generate PDF from HTML file
var renderer = new ChromePdfRenderer();
var htmlContent = File.ReadAllText("template.html");
var pdf = renderer.RenderHtmlAsPdf(htmlContent);

// Create output directory if it doesn't exist
string outputDir = @"C:\PDF Reports\Monthly";
Directory.CreateDirectory(outputDir);

// Build file path with timestamp
string fileName = $"Report_{DateTime.Now:yyyyMMdd_HHmmss}.pdf";
string fullPath = Path.Combine(outputDir, fileName);

// Save the PDF
pdf.SaveAs(fullPath);

// Verify file exists before opening in default PDF viewer
if (File.Exists(fullPath))
{
    Process.Start(new ProcessStartInfo
    {
        FileName = fullPath,
        UseShellExecute = true
    });
}
else
{
    Console.WriteLine($"Error: PDF file not found at {fullPath}");
}

Ten kod demonstruje kilka najlepszych praktyk: uzywanie Path.Combine do poprawnego tworzenia sciezek plikow bez wzgledu na system operacyjny, tworzenie katalogow zgodnie z potrzebą za pomoca Directory.CreateDirectory oraz weryfikowanie istnienia plikow przed proba ich otwarcia w domyslnej przegladarce PDF.

Sygnatura czasowa w nazwie pliku zapewnia unikalność i stanowi jasny zapis daty utworzenia każdego pliku PDF. Aby uzyskać informacje na temat zaawansowanych opcji edycji plików PDF, takich jak łączenie lub dzielenie plików, dodawanie znaków wodnych, podpisów cyfrowych oraz nagłówków i stopek, zapoznaj się z poradnikami IronPDF.

A co z ścieżkami zawierającymi spacje?

Path.Combine poprawnie obsluguje spacje, poniewaz tworzy sciezki jako ciagi, zamiast polegac na ekspansji powloki. Klasa ProcessStartInfo również poprawnie obsluguje otoczone cudzyslowem sciezki przy UseShellExecute = true. Jeśli kiedykolwiek przekazujesz ścieżkę do polecenia powłoki bezpośrednio, zawsze otaczaj ją podwójnymi cudzysłowami. Dzięki Process.Start, wlasciwosc FileName nie wymaga recznego otoczenia cudzyslowiem.

Jak stosować najlepsze praktyki gotowe do wdrożenia w środowisku produkcyjnym?

W przypadku aplikacji produkcyjnych warto rozważyć bardziej kompletny proces, który obsługuje cykl życia plików PDF wraz z obsługą błędów, konfigurowalnymi opcjami renderowania i przewidywalnymi katalogami wyjściowymi:

using IronPdf;
using IronPdf.Rendering;
using System.Diagnostics;
using System.IO;

static void GenerateAndDisplayPdf(string htmlContent, string documentName)
{
    try
    {
        // Configure IronPDF renderer with production settings
        var renderer = new ChromePdfRenderer
        {
            RenderingOptions = new ChromePdfRenderOptions
            {
                PaperSize = PdfPaperSize.A4,
                PrintHtmlBackgrounds = true,
                CreatePdfFormsFromHtml = true
            }
        };

        // Generate the PDF
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);

        // Use the user's Documents folder for better accessibility
        string documentsPath = Environment.GetFolderPath(
            Environment.SpecialFolder.MyDocuments);
        string pdfFolder = Path.Combine(documentsPath, "Generated PDFs");
        Directory.CreateDirectory(pdfFolder);
        string outputPath = Path.Combine(pdfFolder, $"{documentName}.pdf");

        pdf.SaveAs(outputPath);

        // Open PDF in default viewer without waiting for it to close
        Process.Start(new ProcessStartInfo
        {
            FileName = outputPath,
            UseShellExecute = true  // Essential for opening PDF in default application
        });

        Console.WriteLine($"PDF opened: {outputPath}");
    }
    catch (Exception ex)
    {
        Console.WriteLine($"Error generating or opening PDF: {ex.Message}");
    }
}

Ten przykład zawiera ustrukturyzowaną obsługę błędów i zapisuje pliki PDF w folderze Dokumenty użytkownika, który jest dostępny niezależnie od sposobu uruchomienia aplikacji. Konfiguruje również IronPDF z opcjami renderowania odpowiednimi dla dokumentów biznesowych: format papieru A4, włączone drukowanie tła HTML oraz automatyczne tworzenie pól formularza z elementów formularza HTML.

Możesz dowiedzieć się więcej o interaktywnych formularzach PDF i niestandardowych znakach wodnych w bibliotece how-to IronPDF.

Metoda ta nie czeka na zamknięcie przeglądarki PDF, co pozwala aplikacji na dalsze działanie podczas przeglądania dokumentu przez użytkownika. Zgodnie z dokumentacją Microsoftu dotyczącą Process.Start takie podejście zapewnia właściwe zarządzanie zasobami i zapobiega blokowaniu aplikacji przez długotrwały proces przeglądarki. Dokumentacja klasy ProcessStartInfo w serwisie Microsoft Learn zawiera pełną listę właściwości, które można skonfigurować, w tym styl okna, czasownik (otwórz, PRINT) oraz katalog roboczy.

Jak otwierac PDFy w domyslnej przegladarce w C#: Rysunek 3 - Przeplyw procesu od generacji PDF do jego wyswietlania

Konfigurowanie opcji renderowania

Klasa ChromePdfRenderOptions daje ci precyzyjną kontrole nad wyjsciowym PDF. Typowe ustawienia obejmują:

  • PaperSize -- Ustawione na PdfPaperSize.A4, Letter lub dowolny standardowy rozmiar.
  • PrintHtmlBackgrounds — renderuje kolory tła i obrazy z kodu HTML.
  • CreatePdfFormsFromHtml -- Konwertuje elementy <input> i <select> HTML na interaktywne pola formularzy PDF.
  • MarginTop / MarginBottom / MarginLeft / MarginRight -- Kontroluje marginesy strony w milimetrach.

Ustawienia te mają zastosowanie niezależnie od tego, czy renderujesz ciągi HTML, lokalne pliki HTML czy zdalne adresy URL.

Jak wyodrębnić dane z wygenerowanych plików PDF?

Po wygenerowaniu i otwarciu pliku PDF może być również konieczne ponowne odczytanie jego zawartości. IronPDF obsługuje wyodrębnianie tekstu z plików PDF, co jest przydatne do rejestrowania, weryfikacji lub dalszego przetwarzania.

W przypadku dokumentów zawierających dużo obrazów można również skorzystać z konwersji PDF na obraz, aby renderować poszczególne strony jako pliki PNG lub JPEG. Jest to powszechne w generowaniu podglądów i procesach tworzenia miniatur.

Obie funkcje są dostępne za pośrednictwem tej samej biblioteki IronPDF i nie wymagają dodatkowych zależności. Pełna dokumentacja API IronPDF zawiera opisy metod dla wszystkich operacji wyodrębniania i konwersji.

Co się stanie, jeśli nie ma zainstalowanej przeglądarki PDF?

Jeśli na komputerze docelowym nie jest zainstalowana przeglądarka plików PDF, system Windows wyświetli okno dialogowe z prośbą o wybranie aplikacji lub odwiedzenie sklepu Microsoft Store w celu jej znalezienia. To standardowe zachowanie Windows i jest poza kontrolą Process.Start.

Aby radzic sobie z tym elegancko w kodzie produkcyjnym, mozesz złapać Win32Exception, ktory wyrzuca Process.Start, gdy żaden zarejestrowany obslugujacy nie zostanie znaleziony dla rozszerzenia pliku .pdf:

using System.ComponentModel;
using System.Diagnostics;

try
{
    Process.Start(new ProcessStartInfo
    {
        FileName = outputPath,
        UseShellExecute = true
    });
}
catch (Win32Exception ex) when (ex.NativeErrorCode == 1155)
{
    // Error 1155: No application associated with the file extension
    Console.WriteLine("No PDF viewer is installed. Please install a PDF reader such as Adobe Acrobat Reader.");
}

Kod bledu 1155 odpowiada ERROR_NO_ASSOCIATION, ktory Windows zwraca, gdy zadna aplikacja nie jest zarejestrowana dla typu pliku. Wykrycie tego konkretnego błędu pozwala wyświetlić pomocny komunikat zamiast powodować awarię. Pełna lista kodów błędów systemu Windows jest udokumentowana w przewodniku po kodach błędów Win32 na platformie Microsoft Learn.

Jak wybrać odpowiednie podejście do swojej aplikacji?

Metoda otwierania pliku PDF zależy od typu tworzonej aplikacji:

Porównanie strategii otwierania plików PDF dla różnych typów aplikacji
Typ aplikacjiZalecane podejścieKluczowe kwestie
Aplikacja konsolowa lub desktopowaProcess.Start z UseShellExecute = trueProste, bez dodatkowych zależności
Usługa WindowsZapisz na dysku; powiadom użytkownika za pośrednictwem IPC lub kolejki komunikatówUsługi działają bez sesji pulpitu
Aplikacja internetowa (ASP.NET)Przesyłaj strumieniowo pliki PDF jako pliki do pobrania lub bezpośrednio w przeglądarceProcess.Start nie jest prawidłowy w kontekście serwerów internetowych
MAUI lub WinFormsProcess.Start lub wbudowany kontrolka PDFWbudowana funkcja podglądu zapewnia lepsze wrażenia podczas korzystania z aplikacji

Dla aplikacji webowych budowanych w ASP.NET Core, nie uzywaj Process.Start. Proces serwera działa w środowisku bezinterfejsowym i nie może otwierać aplikacji desktopowych. Zamiast tego, zwroc PDF jako wynik plikowy uzywajacy File() z typem MIME application/pdf, i pozwol przegladarce na obsluge wyswietlania.

Dla aplikacji konsolowych i desktopowych, Process.Start z UseShellExecute = true pozostaje najprostszą i najpewniejszą opcją.

Zwróć uwagę: Uwaga: Jeśli nie masz zainstalowanej przeglądarki plików PDF, system Windows może wyświetlić okno dialogowe z prośbą o wybranie lub pobranie takiej przeglądarki.

Chcesz rozpocząć generowanie i przeglądanie plików PDF w swojej aplikacji .NET? Zacznij od bezpłatnej wersji próbnej, aby uzyskać dostęp do pełnego zestawu funkcji, lub zapoznaj się ze stroną licencyjną IronPDF, aby znaleźć plan odpowiedni dla swojego projektu.

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ęczników.

...
Czytaj więcej

Powiązane artykuły

Key in blue circle

Uzyskaj natychmiast swój darmowy 30-dniowy Klucz Testowy.

Your trial license will be sent to your email address

Brak ograniczeń. 100% dostępności. Bez karty kredytowej.

bullet_checkedNie wymaga karty kredytowej ani tworzenia kontaBrak ograniczeń. 100% dostępności. Bez karty kredytowej.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Zarezerwuj swoje darmowe Demo na żywo
Booking Badge

Zaufane przez miliony inżynierów na całym świecie

Logotypy klientów Iron Software
Otrzymaj swoje Konsultacja Bez Zobowiązań
Wypełnij poniższy formularz lub wyślij e-mail na sales@ironsoftware.com
Twoje dane zawsze będą utrzymywane w tajemnicy.
Zaufane przez miliony inżynierów na całym świecie
Logotypy klientów Iron Software
Otrzymaj swój darmowy Klucz Próbny na 30 dni natychmiast.
Nie wymaga karty kredytowej ani tworzenia konta