跳過到頁腳內容
使用IRONPDF

如何在C#中使用默認查看器打開PDF文件

在預設檢視器中開啟 PDF 是一項常見任務。 當你在 .NET 應用程式中生成 PDF 時,經常需要這樣做。 使用 IronPDF 程式化創建和編輯 PDF 文件後,您通常需要立即將它們顯示給用戶,並在用戶選擇的預設應用程式中打開(如 Adobe Acrobat 或 Microsoft Edge)。 本指南將引導您完成如何使用 IronPDF 生成 PDF 文件,以及如何使用 System.Diagnostics.Process.Start 自動在 Windows 中打開它們的步驟。

將 IronPDF 強大的 HTML 到 PDF 轉換 功能與簡單的 Process 啟動方法結合,創造出一個無縫的工作流程,使您可以在默認應用程序中創建和顯示專業的PDF文件。

如何使用 IronPDF 生成和打開 PDF 文件?

最直接的方法涉及三個步驟:

  1. 使用 IronPDF 創建 PDF 文件。
  2. 將文件保存到目錄。
  3. 在用戶的預設應用程式中打開 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>$799</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
});
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>$799</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
});
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

此代碼首先創建一個 ChromePdfRenderer 實例,這是 IronPDF 用於將 HTML 轉換為 PDF 的主要類。 RenderHtmlAsPdf 方法將 HTML 字符串轉換為 PDF 文檔對象。

使用 SaveAs 保存 PDF 後,該代碼使用 Process.Start 與 ProcessStartInfo 打開文件,使其在預設的 PDF 檢視器中顯示。 此處的關鍵設置是 UseShellExecute = true,這告訴 Windows 使用其預設應用程式打開 PDF 文件。

輸出

如下面的圖片所示,IronPDF 成功生成了 PDF 文件,並使用預設檢視器顯示。 您會注意到在我這個例子中,這是 Opera GX。

在默認檢視器中打開 PDF 的方法:圖1 - 使用默認檢視器顯示的 PDF

為什麼在打開 PDF 文件時 UseShellExecute 會很重要?

在 .NET Core 和現代的 .NET 版本中,UseShellExecute 參數的預設值為 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);
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);
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

UseShellExecute 屬性決定是否使用操作系統的外殼來啟動進程。 當設置為 true 時,Windows 會使用文件關聯註冊表來確定應該用哪個預設 PDF 閱讀器來打開文件。若在現代 .NET 版本中不設置此選項,會遇到一個錯誤,提示文件無法打開。 使用帶有唯一文件名的臨時目錄(通過 Guid.NewGuid())可避免在生成多個 PDF 時發生文件衝突。 有關 將 URL 渲染為 PDF 的更多詳細信息,請參閱 IronPDF 的文檔。

輸出

如何在默認檢視器中打開 PDF:圖2 - URL 到 PDF 生成並使用默認檢視器顯示

如何正確處理文件路徑?

包含空格和特殊字符的文件路徑需要正確處理。 這裡有一個包括錯誤檢查的強大方法:

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}");
}
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}");
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

此代碼展示了幾個最佳實踐:使用 Path.Combine 構建文件路徑以正確處理任何操作系統需求,必要時使用 Directory.CreateDirectory 創建目錄,並在嘗試在預設檢視器中打開 PDF 之前驗證文件是否存在。

文件名中的時間戳確保了唯一性,並提供了一個清晰的記錄,顯示每個 PDF 生成的時間。 若要了解更高級的 PDF 操作選項,請探索 IronPDF 的編輯功能

生成的 PDF 的打開最佳實踐是什麼?

對於生產應用程序,考慮實施一個更完整的工作流程,正確處理 PDF 的生命周期:

using IronPdf;
using IronPdf.Rendering;
using System.Diagnostics;
using System.IO;
public 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 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 and don't wait for it to close
        var process = 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}");
    }
}
using IronPdf;
using IronPdf.Rendering;
using System.Diagnostics;
using System.IO;
public 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 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 and don't wait for it to close
        var process = 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}");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

此示例包括錯誤處理,並將 PDF 保存到用戶的文檔文件夾中,這在真實世界的應用中效果更好。它還配置了適當的 渲染選項 為您的 PDF 文件提供真正定制的感覺。

該方法不會等待 PDF 檢視器關閉,使您的應用程式在用戶查看文件時能夠繼續運行,根據 Microsoft 关于 Process.Start 的文档,这种方法确保了正确的资源管理。

如何在默認檢視器中打開 PDF:圖3 - PDF 生成到檢視過程的工作流程

結論

從 .NET 程式中,在默認應用中打開 PDF 文件非常簡單,使用 IronPDF 和 System.Diagnostics.Process。 通過設置正確的參數(UseShellExecute = true)並提供有效路徑,您的 .NET 項目將能夠成功地在默認 PDF 閱讀器中啟動 PDF。

無論您在 Visual Studio 中工作,還是構建 Windows 桌面 exe,或是在 Web 應用程式中試驗,這種方法始終安全可靠。 IronPDF 處理 PDF 的創建,Windows 通過安裝在計算機上的預設應用程序處理預覽和顯示。

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

本指南提供了一個綜合解決方案和代碼,用於在您的 .NET 應用程式中管理 PDF 文件,涵蓋從創建到顯示,無需超出 IronPDF 和標準 Microsoft .NET 運行時之外的額外軟件或依賴項。

準備好在您的應用中實施 PDF 生成和顯示了嗎? 從免費試用開始,以找到適合您需求的完美選擇。

常見問題解答

如何使用 C# 在預設檢視器中開啟 PDF 檔案?

在 C# 中,您可以使用 IronPDF 產生 PDF,然後使用 System.Diagnostics.Process.Start 在使用者的預設 PDF 應用程式中開啟它,從而在預設檢視器中開啟 PDF。

IronPDF是什麼?

IronPDF 是一個 .NET 程式庫,可讓開發人員在應用程式中以程式設計方式建立、編輯和操作 PDF 檔案。

使用 IronPDF 的系統需求是什麼?

IronPDF 與任何 .NET 應用程式相容,並可在 Windows、macOS 和 Linux 平台上運作。它需要安裝 .NET Framework 或 .NET Core/5+。

IronPDF能否預設使用Adobe Acrobat開啟PDF檔案?

是的,IronPDF 可以產生在使用者設定的預設 PDF 檢視器中開啟的 PDF 文件,該檢視器可以是 Adobe Acrobat、Microsoft Edge 或任何其他 PDF 檢視應用程式。

System.Diagnostics.Process.Start 如何與 IronPDF 協同工作?

`System.Diagnostics.Process.Start` 用於在預設檢視器中開啟產生的 PDF 檔案。 IronPDF 建立文件後,此方法會啟動與 PDF 文件關聯的預設應用程式來顯示該文件。

是否可以使用 IronPDF 編輯 PDF 檔案?

是的,IronPDF 允許您在儲存或顯示現有 PDF 檔案之前,透過新增文字、圖像、註解等來編輯它們。

IronPDF 支援哪些程式語言?

IronPDF 主要與 C# 一起使用,但也可以整合到使用 VB.NET 和其他 .NET 支援的語言的專案中。

IronPDF能否在產生PDF檔案後自動顯示?

是的,使用 IronPDF 產生 PDF 後,您可以使用 System.Diagnostics.Process.Start 自動顯示該 PDF,使其立即在使用者的預設檢視器中開啟。

是否有使用 IronPDF 的程式碼範例?

IronPDF 文件提供了各種用於生成和操作 PDF 的程式碼範例,包括如何使用 C# 在預設檢視器中開啟它們。

IronPDF有哪些常見應用情境?

IronPDF 的常見用途包括產生報告、發票和其他文檔,將 HTML 轉換為 PDF,以及在 .NET 應用程式中自動執行 PDF 顯示過程。

IronPDF 是否相容於 .NET 10?相容 .NET 10 能帶來哪些好處?

是的。 IronPDF 完全相容於 .NET 10,包括其執行時間和語言增強功能。將 IronPDF 與 .NET 10 結合使用,可讓您的應用程式受益於效能提升,例如減少堆疊分配、加快 PDF 產生速度以及與現代 API 和平台更順暢的整合。

Curtis Chau
技術作家

Curtis Chau 擁有卡爾頓大學計算機科學學士學位,專注於前端開發,擅長於 Node.js、TypeScript、JavaScript 和 React。Curtis 熱衷於創建直觀且美觀的用戶界面,喜歡使用現代框架並打造結構良好、視覺吸引人的手冊。

除了開發之外,Curtis 對物聯網 (IoT) 有著濃厚的興趣,探索將硬體和軟體結合的創新方式。在閒暇時間,他喜愛遊戲並構建 Discord 機器人,結合科技與創意的樂趣。