C# でダイアログを使用してpdf 印刷する方法

This article was translated from English: Does it need improvement?
Translated
View the article in English

印刷ダイアログは、ユーザーがプリンターを選択し、コピー数を設定し、ページ範囲を選び、印刷前に用紙オプションを調整することを可能にする標準のOSウィンドウです。 ドキュメントの印刷方法と印刷先をユーザーが制御する必要があるデスクトップアプリケーションでは、このダイアログを表示することが期待される動作です。

IronPrint は、ユーザーの選択を適用し、選ばれたプリンターにドキュメントを送る、ネイティブの印刷ダイアログを表示する単一のメソッド — Printer.ShowPrintDialog() — を提供します。 1つの NuGet パッケージ をインストールし、1行のコードを書くだけです。

クイックスタート: ダイアログを使用して印刷

  1. NuGet 経由で IronPrint をインストールする: Install-Package IronPrint
  2. ファイルに using IronPrint; を追加
  3. ネイティブの印刷ダイアログを開くには Printer.ShowPrintDialog("filepath") を呼び出します
  4. (オプション)ダイアログのデフォルトをあらかじめ設定するために PrintSettings オブジェクトを渡す
  5. ユーザーがプリンター、コピー、およびオプションを選択した後に"印刷"をクリックします
  1. IronPrint をNuGetパッケージマネージャでインストール

    PM > Install-Package IronPrint
  2. このコード スニペットをコピーして実行します。

    using IronPrint;
    
    // Display the print dialog and print the document
    Printer.ShowPrintDialog("document.pdf");
  3. 実際の環境でテストするためにデプロイする

    今日プロジェクトで IronPrint を使い始めましょう無料トライアル

    arrow pointer

C# で印刷ダイアログはどのように動作するか?

Printer.ShowPrintDialog() メソッドは、オペレーティングシステムのネイティブ印刷ダイアログを開きます。 ユーザーはフルセットの印刷オプション(プリンターの選択、コピー数、ページ範囲、向き、用紙サイズ)を見て、ジョブを送信するために"印刷"をクリックするか、印刷せずにダイアログを閉じるために"キャンセル"をクリックします。

内部では、ネイティブ for .NETアプローチは System.Windows.Forms.PrintDialog インスタンスを作成し、それを PrintDocument に接続し、印刷グラフィックサーフェスにコンテンツを描画するために PrintPage イベントを処理し、DialogResult を確認してから PrintDocument.Print() を呼び出す必要があります。 そのセットアップは通常15〜25行のコードを要します。 また、ビルトインPDFまたは画像レンダリングを含まず、ネイティブダイアログを通してPDFを印刷するためには、最初にPDFを描画可能なページに解析する必要があります。これには別のライブラリが必要です。

IronPrint は、ワンコールで全てのパイプラインを処理します:

:path=/static-assets/print/content-code-examples/how-to/print-with-dialog/print-with-dialog-show-print-dialog-open-and-print.cs
using IronPrint;

// Open the dialog, let the user configure settings, and print
Printer.ShowPrintDialog("quarterly-report.pdf");
Imports IronPrint

' Open the dialog, let the user configure settings, and print
Printer.ShowPrintDialog("quarterly-report.pdf")
$vbLabelText   $csharpLabel

このメソッドは、string としてファイルパスまたは byte[] として生ファイルデータを受け入れます。 IronPrint はドキュメント形式を検出し、適切なエンジンを通してレンダリングし、ダイアログを表示します。 ユーザーが確認すると、ドキュメントは選択された設定で印刷されます。 印刷ドキュメントチュートリアル は、印刷ライフサイクル全体を詳しく説明します。

ダイアログ設定を事前に構成する方法は?

私たちは、PrintSettings オブジェクトを作成し、2番目のパラメータとして渡すことで、ダイアログが開く前にデフォルト値を設定できます。 これにより、ダイアログはこれらの値を事前選択して開き、ユーザーはそのまま受け入れるか、任意の設定を上書きできます。

:path=/static-assets/print/content-code-examples/how-to/print-with-dialog/print-with-dialog-preconfigure-dialog-settings.cs
using IronPrint;

// Pre-configure defaults for the dialog
var settings = new PrintSettings
{
    PrinterName = "HP LaserJet Pro",
    PaperSize = PaperSize.A4,
    PaperOrientation = PaperOrientation.Portrait,
    Dpi = 300,
    NumberOfCopies = 2,
    Grayscale = false
};

// Open dialog with pre-filled settings
Printer.ShowPrintDialog("invoice.pdf", settings);
Imports IronPrint

' Pre-configure defaults for the dialog
Dim settings As New PrintSettings With {
    .PrinterName = "HP LaserJet Pro",
    .PaperSize = PaperSize.A4,
    .PaperOrientation = PaperOrientation.Portrait,
    .Dpi = 300,
    .NumberOfCopies = 2,
    .Grayscale = False
}

' Open dialog with pre-filled settings
Printer.ShowPrintDialog("invoice.pdf", settings)
$vbLabelText   $csharpLabel

これは、アプリケーションが事前に可能性の高いプリンターまたは用紙形式を知っている場合に役立ちます。 たとえば、特定のサーマルプリンターで常にレシートを印刷するPOSシステムは、そのデバイスに PrinterName をデフォルト設定することができます。ユーザーはダイアログでそれを変更するオプションも持ち続けます。

システム上で利用可能なプリンターを発見するには、Printer.GetPrinterNames() を呼び出し、すべてのインストール済みプリンターの List<string> を返します。 同様に、Printer.GetPrinterTrays() は指定されたプリンターの利用可能な紙トレイを返します。

設定可能なプロパティの完全なリストには、PrinterName, PaperSize, PaperOrientation, Dpi, NumberOfCopies, Grayscale, PaperMargins, Flatten (PDF フォームフィールド用)、および Tray が含まれます。 印刷設定の操作方法 では、各プロパティをコード例とともに説明しています。 PrintSettings で設定されていないプロパティは、選択したプリンターの標準設定にデフォルトします。

ダイアログを非同期で表示するにはどのようにするか?

Printer.ShowPrintDialogAsync() メソッドは Task を返し、await と互換性があります。 これにより、UIスレッドのブロックを防ぎます — このような場合は WPF、MAUI、およびユーザーインターフェイスが凍結すると悪いユーザー体験を生むアプリケーションにとって不可欠です。

:path=/static-assets/print/content-code-examples/how-to/print-with-dialog/print-with-dialog-show-print-dialog-async.cs
using IronPrint;

// Non-blocking dialog — the UI remains responsive
await Printer.ShowPrintDialogAsync("report.pdf");
Imports IronPrint

' Non-blocking dialog — the UI remains responsive
Await Printer.ShowPrintDialogAsync("report.pdf")
$vbLabelText   $csharpLabel

ShowPrintDialogAsync() は同期バージョンと同じパラメータを受け取ります:ファイルパスまたはバイト配列、さらにオプションの PrintSettings オブジェクト。 非同期パターンは現代 for .NET開発全体で使われる タスクベースの非同期パターン に従います。

IronPrint は WinForms、WPF、MAUI、およびコンソールアプリケーション全体で動作します。 ダイアログの外観はホストプラットフォームとOSバージョンに適応し、ユーザーは常に期待されるネイティブ印刷ウィンドウを見ます。

ダイアログを使用する場合とサイレント印刷する場合

選択は、印刷ジョブに対するユーザーの制御の必要性に依存します。

基準 ダイアログで印刷 サイレント印刷
ユーザーの操作 ユーザーがプリンター、コピー、ページ範囲を選択 操作なし — すぐに印刷
最適な用途 デスクトップアプリ、一度きりの印刷、ユーザー向け機能 バッチジョブ、バックグラウンドサービス、キオスクアプリ
プリンタの選択 ユーザーがダイアログから選択 プログラムで PrintSettings を通して設定
IronPrint メソッド Printer.ShowPrintDialog() Printer.Print()
非同期バリアント ShowPrintDialogAsync() PrintAsync()

印刷する前にユーザーが設定を確認または変更する必要がある場合にはダイアログを使用してください — レポートエクスポート、請求書印刷、または間違ったプリンターでページを無駄にする可能性のあるシナリオ。 アプリケーションがジョブ全体を制御し、人間の判断が不要な場合には、サイレント印刷 を使用します。 印刷ドキュメントチュートリアル で両方のアプローチを並べて示しています。

ドキュメント 印刷ダイアログはどのファイル形式をサポートしていますか?

Printer.ShowPrintDialog()サイレント印刷 と同じ形式をサポートします:PDF、 PNG、 TIFF、 JPEG、 GIF、 HTML、 BMP。形式にかかわらずファイルパスを渡し、IronPrint がレンダリングおよび印刷スプーラーとの通信を処理します。 ファイルデータが byte[] としても受け入れられ、これはドキュメントがメモリ内で生成されたり、データベースから取得された場合に便利です。

:path=/static-assets/print/content-code-examples/how-to/print-with-dialog/print-with-dialog-print-dialog-image-and-byte-array.cs
using IronPrint;

// Print an image with the dialog
Printer.ShowPrintDialog("product-photo.png");

// Print from a byte array
byte[] reportData = File.ReadAllBytes("monthly-report.pdf");
Printer.ShowPrintDialog(reportData);
Imports IronPrint

' Print an image with the dialog
Printer.ShowPrintDialog("product-photo.png")

' Print from a byte array
Dim reportData As Byte() = File.ReadAllBytes("monthly-report.pdf")
Printer.ShowPrintDialog(reportData)
$vbLabelText   $csharpLabel

コード例のページ は、形式に特化したシナリオを示しています。 PDF 特有のワークフロー、すなわち PDF を生成してすぐに印刷する場合、IronPDF は IronPrint と自然に組み合わせられます。 IronPrint 対 IronPDF の比較 では、どちらをいつ使用するかを説明しています。

次のステップ

ダイアログを使用した印刷は2つのメソッドに帰着します:同期呼び出し用に Printer.ShowPrintDialog() と、ブロッキングを回避する Printer.ShowPrintDialogAsync()PrintSettings でデフォルトを設定し、そこからユーザーが調整します。 どちらの方法も IronPrint のドキュメント形式のすべてをサポートし、WinForms、WPF、MAUI、コンソールプロジェクト全体で動作します。

IronPrint チュートリアルでは、フルウォークスルー、Printer クラス API リファレンス では利用可能なすべてのメソッド、または印刷設定の操作方法 で高度な設定を調査してください。 チェンジログ は最近の改善や新しい特徴を追跡します。

トライアルライセンスで無料の30日間トライアルを開始するして、ライブプロジェクトでダイアログ印刷をテストします — クレジットカードは不要です。 出荷の準備が整ったら、ライセンスオプション を $749 から開始してみてください。

カーティス・チャウ
テクニカルライター

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

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

準備はできましたか?
Nuget ダウンロード 38,930 | バージョン: 2026.4 リリース
Still Scrolling Icon

まだスクロールしていますか?

すぐに証拠が欲しいですか? PM > Install-Package IronPrint
サンプルを実行する プリンターに出力されるドキュメントを見る。