フッターコンテンツにスキップ
IRONPDFの使用

C#でデフォルトビューアーでPDFを開く方法

PDF をデフォルトビューアで開くことは一般的なタスクです。 これは、.NET アプリケーションで PDF を生成する際によく必要になります。 プログラムで PDF ファイルを作成および編集した後は、ユーザーに対して選択したデフォルトのアプリケーション(Adobe Acrobat など)で直ちに表示させる必要があります。 このガイドでは、IronPDF を使用して PDF ファイルを生成する手順と、Windows でそれらを System.Diagnostics.Process.Start を使用して自動的に開く方法について説明します。

IronPDF の強力な HTML から PDF への変換機能 と単純なプロセス起動メソッドの組み合わせで、プロフェッショナルな PDF ファイルを作成し、デフォルトアプリ設定で表示するためのシームレスなワークフローを提供します。

IronPDF で PDF ファイルを生成し開くにはどうすればよいですか?

最も簡単なアプローチは、3 つのステップで構成されています。

  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

このコードはまず、HTML を PDF に変換する IronPDF の主要クラスである ChromePdfRenderer インスタンスを作成します。 RenderHtmlAsPdf メソッドは、HTML 文字列を PDF ドキュメントオブジェクトに変換します。

SaveAs を使用して PDF を保存した後、コードは Process.Start と ProcessStartInfo を使用して、デフォルトの PDF ビューアでファイルを開きます。 ここでの重要な設定は UseShellExecute = true であり、Windows にデフォルトのアプリケーションで PDF ファイルを開くよう指示します。

出力

以下の画像で示すように、IronPDF は PDF ファイルを正常に生成し、デフォルトビューアで表示できました。 私の場合、これは Opera GX であることがわかるでしょう。

デフォルトビューアで PDF を開く方法(C#の場合):図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 を開く方法(C#の場合):図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 を保存し、実際のアプリでよりよく機能します。また、IronPDF を適切な レンダリングオプション で構成することで、PDF ドキュメントに独自のカスタマイズされた感触を与えることができます。

このメソッドは、PDF ビューアが閉じるまで待機しないため、ユーザーがドキュメントを表示している間もアプリケーションを動作させ続け、Microsoft の Process.Start に関するドキュメント によれば、このアプローチは適切なリソース管理を保証します。

デフォルトビューアで PDF を開く方法(C#の場合):図3 - PDF の生成から表示までのプロセスワークフロー

結論

IronPDF と System.Diagnostics.Process を用いた .NET プログラムからデフォルトアプリケーションで PDF ファイルを開くのは簡単です。 正しいパラメータ(UseShellExecute = true)を設定し、正しいパスを指定することで、.NET プロジェクトはデフォルトの PDF リーダで PDF を正常に起動できます。

Visual Studio で作業している場合でも、Windows デスクトップ exe を作成している場合でも、または Web アプリを試行している場合でも、このアプローチは一貫して機能します。 IronPDF は PDF の作成を担当し、Windows はコンピュータにインストールされたデフォルトアプリを通じてプレビューと表示を行います。

ご注意注意: PDF ビューアがインストールされていない場合、Windows はダイアログを表示し、選択またはダウンロードを促す可能性があります。

このチュートリアルは、IronPDF と標準の Microsoft .NET ランタイム以外の追加ソフトウェアや依存関係を必要とせずに、.NET アプリケーションで PDF ファイルを管理するための包括的なソリューションとコードを提供します。

アプリケーションでの PDF 生成および表示の実装を準備していますか? 無料試用版を始めて、ニーズに最適なソリューションを見つけましょう。

よくある質問

C# を使用して既定ビューアーで PDF を開く方法は?

C# では、IronPDF を使用して PDF を生成し、System.Diagnostics.Process.Start を使用してユーザーの既定の PDF アプリケーションで開くことができます。

IronPDFとは?

IronPDF は、開発者がアプリケーション内でプログラムで PDF ファイルを作成、編集、および操作できる .NET ライブラリです。

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 を使用して、ユーザーの既定ビューアーで即座に開くことで表示を自動化できます。

IronPDF を使用するためのコード例はありますか?

IronPDF のドキュメントには、C# で既定のビューアーで開く方法を含む、PDF の生成および操作に関するさまざまなコード例が提供されています。

IronPDF の一般的な使用例は何ですか?

IronPDF の一般的な使用例には、レポート、請求書、その他のドキュメントの生成、HTML を PDF に変換、.NET アプリケーションで PDF 表示プロセスを自動化することなどがあります。

IronPDF は .NET 10 と互換性がありますか? また、これによりどのような利点がありますか?

はい。IronPDFは、ランタイムと言語の機能強化を含め、.NET 10と完全に互換性があります。IronPDFを.NET 10と併用することで、ヒープ割り当ての削減、PDF生成の高速化、最新のAPIやプラットフォームとのスムーズな統合など、アプリケーションのパフォーマンス向上のメリットを享受できます。

Curtis Chau
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。