IRONSOFTWAREHOME
使用IRONPDF

如何在C#中建立報告應用程式

Curtis Chau
Curtis Chau
Updated: 2026年7月19日

在.NET應用程式開發中,在預設檢視器中開啟PDF是一項常見的工作。 在使用IronPDF以程式方式生成PDF檔案後,您經常需要立即將它們顯示給使用者,以便使用他們選擇的預設應用程式,如Adobe Acrobat或Microsoft Edge。 本指南將引導您完成使用IronPDF生成PDF檔案並使用System.Diagnostics.Process.Start在Windows中自動打開它們的步驟。

藉由將IronPDF強大的HTML到PDF轉換功能與簡單的Process啟動方法相結合,建立了一個實用的工作流程,用於在使用者的機器上配置的預設應用程式中構建和顯示專業的PDF檔案。

如何在.NET項目中安裝IronPDF?

在生成或開啟任何PDF之前,您需要在專案中安裝IronPDF。 使用NuGet套件管理控制台或.NET CLI:

PM > Install-Package IronPdf

安裝後,新增您的授權金鑰或開始使用免費試用以啟用完整功能。 IronPDF文件詳細介紹了所有配置選項,包括通過NuGet安裝

安裝後,您可以存取完整的IronPDF功能,包括HTML到PDF轉換、URL渲染、PDF合併、水印新增、數位簽章等。

如何生成並開啟PDF檔案?

最簡單的方法包含三個步驟:

  1. 使用IronPDF建立PDF文件。
  2. 將文件儲存到目錄。
  3. 使用Process.Start在預設應用程式中開啟PDF。

這裡有一個完整的工作範例,您可以在Visual Studio中使用新的控制台應用程式專案嘗試:

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

這段程式碼首先建立一個ChromePdfRenderer實例,這是IronPDF用於將HTML轉換為PDF的主要類別。 RenderHtmlAsPdf方法將HTML字串轉換為PDF文件物件。 有關此方法的更多資訊,請參閱IronPDF的HTML到PDF指南

在使用ProcessStartInfo在預設PDF檢視器中開啟文件。 這裡的關鍵設定是UseShellExecute = true,它告訴Windows以其預設應用程式來開啟PDF文件。

輸出

如下面的圖像所示,IronPDF成功生成了PDF文件並使用系統上配置的預設檢視器顯示它——在這個例子中是Opera GX。

如何在C#中於預設檢視器中開啟PDF:圖1 - 使用預設檢視器顯示的PDF

為什麼使用頂層語句?

使用.NET 10和現代C#版本,頂層語句消除了對Program類包裝的需求。 程式碼直接從文件頂部運行,這使得樣本更短且更容易遵循。 本指南中的所有範例都使用這種模式。

為什麼開啟PDF文件時使用UseShellExecute很重要?

在.NET Core和現代.NET版本(.NET 5到.NET 10)中,false。 如果不明確設置為true,您的應用程式在嘗試啟動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);

UseShellExecute屬性確定是否使用操作系統Shell來啟動進程。 當設置為true時,Windows使用文件關聯註冊表來確定應該使用哪個預設PDF閱讀器來開啟文件。在現代.NET版本中,沒有此設置時,您會遇到運行時錯誤,指出文件無法開啟。

使用臨時目錄和唯一文件名(透過Guid.NewGuid())可以防止在快速連續生成多個PDF時發生文件衝突。 預設的臨時文件夾由操作系統按照計劃進行自動清理。

輸出

如何在C#中於預設檢視器中開啟PDF:圖2 - 使用預設檢視器生成並顯示的URL到PDF

如何正確處理文件路徑?

包含空格和特殊字元的文件路徑需要小心處理。 缺少的目錄或格式錯誤的路徑會在Process.Start被調用之前錯誤地失敗或引發例外。 這是一種包含目錄建立和文件存在檢查的方法:

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

這段程式碼展示了幾個最佳實踐:使用Directory.CreateDirectory建立目錄;在嘗試在預設檢視器中開啟PDF之前驗證文件的存在。

文件名中的時間戳確保了唯一性,並為每個生成的PDF提供了一個清晰的記錄。 對於高級PDF操作選項,例如合併或拆分PDF新增水印數位簽章頁眉和頁腳,請探索IronPDF的操作指南。

那麼帶空格的路徑呢?

Path.Combine正確處理空格,因為它將路徑構建為字串,而不是依賴於Shell擴展。 UseShellExecute = true的時候也會正確處理引用的路徑。 如果您直接將路徑傳遞給Shell命令,請務必用雙引號包圍它。 使用FileName屬性不需要手動引用。

如何應用生產就緒的最佳實踐?

對於生產應用程式,考慮一個更完整的工作流程,處理PDF生命週期,包括錯誤處理、可配置的渲染選項和可預測的輸出目錄:

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

此範例包含結構化錯誤處理,並將PDF保存在使用者的文件夾中,即使應用程式以何種方式啟動也是可以存取的。 它還對IronPDF進行配置,使之適用於商務文件:A4紙品尺寸、啟用HTML背景列印以及從HTML表單元素自動建立表單字段。

您可以在IronPDF操作指南中了解更多互動式PDF表單自定義水印的資訊。

該方法不會等待PDF檢視器關閉,允許您的應用程式在使用者查看文件時繼續運行。 根據Microsoft的Process.Start文件,此方法確保了資源的適當管理,並防止應用程式在長時間運行的檢視器進程中阻塞。 ProcessStartInfo類參考在Microsoft Learn上提供了一個完整的屬性列表,您可以配置這些屬性,包括窗口樣式、動詞(開啟、列印)和工作目錄。

如何在C#中於預設檢視器中開啟PDF:圖3 - PDF生成到檢視過程工作流程

配置渲染選項

ChromePdfRenderOptions類可讓您對輸出的PDF進行細粒度控制。 常見設置包括:

  • PaperSize -- 設置為Letter或任何標準尺寸。
  • PrintHtmlBackgrounds -- 從HTML渲染背景顏色和圖像。
  • CreatePdfFormsFromHtml -- 將HTML <select>元素轉換為交互式PDF表單字段。
  • MarginTop / MarginBottom / MarginLeft / MarginRight -- 以毫米為單位控制頁面邊距。

這些設置無論是渲染HTML字串、本地HTML文件或遠端URL,都同樣適用。

如何從生成的PDF中提取資料?

一旦您生成並開啟一個PDF,您可能還需要讀取其內容。 IronPDF支持從PDF文件中提取文字,這對於日誌記錄、驗證或後續處理很有用。

對於圖像密集型文件,您還可以使用PDF轉圖像轉換將各個頁面渲染為PNG或JPEG文件。 這在預覽生成和縮略圖工作流程中很常見。

這兩個功能都是通過相同的IronPDF庫提供的,不需要額外的依賴項。 完整的IronPDF API文件提供所有提取和轉換操作的方法級參考。

如果未安裝PDF檢視器會發生什麼?

如果目標機器上未安裝PDF檢視器,Windows將顯示一個對話框,要求使用者選擇一個應用程式或存取Microsoft Store尋找一個。 這是標準的Windows行為,並且不受Process.Start控制。

為在生產程式碼中優雅地處理這種情況,您可以捕獲當未找到Win32Exception

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

錯誤程式碼ERROR_NO_ASSOCIATION,Windows在找不到文件型別的應用程式時返回該錯誤。 捕獲此特定錯誤允許您顯示一個有用的消息,而不是崩潰。 Windows系統錯誤程式碼的完整列表記錄在Microsoft Learn的Win32錯誤程式碼參考中。

如何為您的應用選擇正確的方法?

您選擇開啟PDF的方法取決於您正在構建的應用程式型別:

針對不同應用程式型別的PDF開啟策略比較
應用程式型別建議方法關鍵考量
控制台或桌面應用使用Process.Start,並將UseShellExecute設為true簡單,無需額外依賴
Windows服務保存到磁碟;透過IPC或消息隊列通知使用者服務無需桌面會話即可運行
Web應用(ASP.NET)將PDF作為檔案下載或嵌入在瀏覽器中在Web伺服器上下文中,Process.Start無效
MAUI或WinForms使用Process.Start或嵌入式PDF控制嵌入式檢視提供更好的應用內體驗

對於ASP.NET Core構建的Web應用,請勿使用Process.Start。 伺服器過程運行在無頭環境中,無法開啟桌面應用程式。 而是使用application/pdf MIME型別將PDF作為文件結果返回,由瀏覽器處理顯示。

對於控制台和桌面應用,UseShellExecute = true仍然是最簡單且最可靠的選擇。

請注意: 注意:如果未安裝PDF檢視器,Windows可能會顯示一個對話框,要求您選擇或下載一個。

準備好在您的.NET應用中開始進行PDF生成和檢視了嗎? 開始使用免費試用來存取完整的功能集,或者查看IronPDF授權頁面以找到適合您專案的計畫。

Curtis Chau
技術作家

Curtis Chau擁有Carleton大學的電腦科學學士學位,專精於前端開發,擁有Node.js、TypeScript、JavaScript和React的專業知識。Curtis熱衷於建立直觀且美觀的使用者介面,喜愛使用現代框架並建立結構良好、視覺吸引力的手冊。

...
閱讀更多

相關文章

Key in blue circle

立即免費取得 30 天試用金鑰

Your trial license will be sent to your email address

無任何限制。100% 解鎖。無需信用卡。

OR
bullet_checked無需信用卡或建立帳號無任何限制。100% 解鎖。無需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried Iron Suite
預訂您的免費現場演示
Booking Badge

受到全球數百萬工程師的信任

Iron Software的客戶標誌
獲取您的無義務諮詢
填寫以下表格或電子郵件sales@ironsoftware.com
您的詳細資訊將始終保密
受到全球數百萬工程師的信任
Iron Software的客戶標誌
立即獲取您的30天試用金鑰
無需信用卡或帳戶建立
C# 用於PDF的NuGet程式庫
使用NuGet安裝

版本: 2026.9

PM > Install-Package IronPdf
nuget.org/packages/IronPdf/
  1. 在解決方案資源管理器,右鍵點選參考,管理NuGet包
  2. 選擇瀏覽並搜尋"IronPdf"
  3. 選擇套件並安裝
C# PDF DLL
下載DLL

版本: 2026.9

或者點擊此處下載Windows安裝程式。

  1. 下載並解壓IronPDF到類似~/Libs的位置,位於您的解決方案目錄中
  2. 在Visual Studio解決方案資源管理器,右鍵點選參考。選擇瀏覽,"IronPdf.dll"

授權從$999