C#でプリンター名を指定する方法

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

IronPrintのPrinterNameプロパティを公開しています。 ターゲットプリンターの正確な名前を文字列として指定し、設定済みの PrintSettings オブジェクトを IronPrint の任意の印刷メソッドに渡すと、ドキュメントはシステムのデフォルトプリンターではなく、そのプリンターに送信されます。

このガイドは、プリンター名の設定、実行時に使用可能なプリンターの発見、および他の印刷設定とプリンター選択の組み合わせについて説明します。

クイックスタート: プリンター名の指定

  1. IronPrint をNuGetパッケージマネージャでインストール

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

    using IronPrint;
    
    // Print a document to a specific printer
    Printer.Print("report.pdf", new PrintSettings
    {
        PrinterName = "HP LaserJet Pro M404"
    });
  3. 実際の環境でテストするためにデプロイする

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

    arrow pointer

C#でプリンター名を指定するには?

PrinterName オブジェクトの PrintSettings プロパティにプリンター名を割り当てることで、対象のプリンターを指定します。 その後、そのオブジェクトを Printer.Print に渡します。

入力

invoice.pdf は、明細項目と合計金額を含む、書式設定済みの A4 サイズの B2B 請求書であり、PrintSettings.PrinterName を通じて特定の名前付きプリンターに印刷されます。

:path=/static-assets/print/content-code-examples/how-to/specify-printer-name/specify-printer-name-set-printer-name.cs
using IronPrint;

// Configure print settings with a target printer
PrintSettings settings = new PrintSettings();
settings.PrinterName = "Microsoft Print to PDF";

// Print to the specified printer
Printer.Print("invoice.pdf", settings);
Imports IronPrint

' Configure print settings with a target printer
Dim settings As New PrintSettings()
settings.PrinterName = "Microsoft Print to PDF"

' Print to the specified printer
Printer.Print("invoice.pdf", settings)
$vbLabelText   $csharpLabel

まず、PrinterName = nullで初期化されます。 その後、PrinterName を対象プリンターの正確な文字列名で上書きします。 Printer.Printを呼び出すと、IronPrintはそのジョブをそのプリンターのキューに直接送信します。

出力

請求書は名前指定されたプリンターに直接送られます。 ジョブはサイレント印刷の例と同様にプリンターキューに表示されます。

"Microsoft Print to PDF"を使用してPrinterNameに請求書出力が印刷されました。

考慮すべき2つの詳細があります。 最初に、プリンター名はオペレーティングシステムが報告する名前と正確に一致しなければなりません; この比較は大文字と小文字を区別します。"hp laserjet" ではなく "HP LaserJet" といった不一致がある場合、エラーは発生せず処理が失敗するか、エラーがスローされます。 第二に、ユーザーが ShowPrintDialog を通じてPRINTダイアログを開いた場合、そのダイアログでの選択内容がコード内で設定された PrinterName を上書きし、ユーザーに最終的な決定権が与えられます。

プリンター名が事前に知られていない場合、値をハードコードする代わりに、ランタイムでインストールされているすべてのプリンターを照会できます。

使用可能なプリンターをどうやって発見しますか?

プリンター名をハードコーディングするのではなく、Printer.GetPrinterNames を使用して実行時にシステムに問い合わせることができます。 このメソッドは、マシンにインストールされているすべてのプリンターを含む List<string> を返します。

入力

report.pdfはA4のビジネスレポートで、要約セクションとデータテーブルが含まれ、最初に動的に発見されたプリンターで印刷されます。

:path=/static-assets/print/content-code-examples/how-to/specify-printer-name/specify-printer-name-discover-printers.cs
using IronPrint;

// List every installed printer
List<string> printers = Printer.GetPrinterNames();

// Print each printer name
foreach (string name in printers)
{
    Console.WriteLine(name);
}

// Print to the first available printer
if (printers.Count > 0)
{
    Printer.Print("report.pdf", new PrintSettings
    {
        PrinterName = printers[0]
    });
}
Imports IronPrint

' List every installed printer
Dim printers As List(Of String) = Printer.GetPrinterNames()

' Print each printer name
For Each name As String In printers
    Console.WriteLine(name)
Next

' Print to the first available printer
If printers.Count > 0 Then
    Printer.Print("report.pdf", New PrintSettings With {
        .PrinterName = printers(0)
    })
End If
$vbLabelText   $csharpLabel

GetPrinterNames を呼び出すことで、ローカルプリンター、ネットワークプリンター、"Microsoft Print to PDF"のような仮想プリンターを含め、オペレーティングシステムが認識しているすべてのプリンターを取得します。その後、リストを順に処理し、インデックス、名前の照合、またはアプリケーションが必要とする任意のカスタムロジックに基づいてプリンターを選択します。

出力

レポートは最初に利用可能なプリンターに送信されます。 上記のようにジョブはプリンターキューに表示されます。

GetPrinterNamesを介して最初に使用可能なプリンターにレポート出力が印刷されました。

この発見してから印刷するパターンは、異なるマシンに配備されたアプリケーションにとって必要不可欠です。 シングルマシンシナリオではプリンター名のハードコーディングが機能しますが、プロダクションアプリケーションは利用可能なプリンターをクエリし、ユーザーに選択させるか、命名規則に基づいてプログラムでプリンターを選択する必要があります。

プリンターの選択は、用紙サイズ、DPI、コピー数、余白と組み合わせて1つの設定オブジェクトにすることもできます。

プリンター名を他の設定とどうやって組み合わせますか?

PrintSettings クラスは、用紙サイズ、向き、DPI、余白、コピー枚数などのプロパティに加え、PrinterName も公開しています。 単一のオブジェクトで全てを設定します。

入力

quarterly-report.pdf は、KPIカードやチャートを含むA4サイズの四半期財務報告書であり、用紙サイズ、DPI、部数を1つの PrintSettings オブジェクトにまとめて PrinterName で印刷されます。

:path=/static-assets/print/content-code-examples/how-to/specify-printer-name/specify-printer-name-combined-settings.cs
using IronPrint;

// Configure full print settings with a named printer
PrintSettings settings = new PrintSettings
{
    PrinterName = "Office Color Printer",
    PaperSize = PaperSize.A4,
    PaperOrientation = PaperOrientation.Portrait,
    Dpi = 300,
    NumberOfCopies = 2,
    PaperMargins = new Margins(15, 15, 15, 15),
    Grayscale = false
};

// Print the quarterly report
Printer.Print("quarterly-report.pdf", settings);
Imports IronPrint

' Configure full print settings with a named printer
Dim settings As New PrintSettings With {
    .PrinterName = "Office Color Printer",
    .PaperSize = PaperSize.A4,
    .PaperOrientation = PaperOrientation.Portrait,
    .Dpi = 300,
    .NumberOfCopies = 2,
    .PaperMargins = New Margins(15, 15, 15, 15),
    .Grayscale = False
}

' Print the quarterly report
Printer.Print("quarterly-report.pdf", settings)
$vbLabelText   $csharpLabel

読みやすいようにオブジェクト初期化子構文を使用します。 PrinterName はジョブを"Office Color Printer"にルーティングし、残りのプロパティは出力形式を制御します。 Dpi を300で設定すると、鮮明なテキストとグラフィックが得られます。 PaperMargins は、Margins コンストラクタを通じてミリメートル単位の値を受け付けます。 利用可能なプロパティの全リストは、印刷設定ガイドを参照してください。

出力

四半期レポートは、名前付きプリンター、A4縦向き、300 DPI、2部、15 mmの余白で1つのジョブとして印刷されます。 上記のようにジョブはプリンターキューに表示されます。

四半期レポート出力がPrinterName、A4、300 DPI、2部、15mmの余白と共に印刷されました。

IronPrintは構成を1つのユニットとして検証し、統合設定を単一のジョブとしてプリンタードライバーに送信します。

プリンターの発見または印刷中にメインスレッドをブロックできないアプリケーションは、両操作の非同期相当を使用できます。

プリンターを選んで非同期で印刷するには?

メインスレッドをブロックできないWPFおよびWinFormsアプリでは、Printer.PrintAsyncを使用します。 どちらも Task を返し、UI の応答性を維持します。

:path=/static-assets/print/content-code-examples/how-to/specify-printer-name/specify-printer-name-async-printer-select.cs
using IronPrint;
using System.Threading.Tasks;

public class PrintService
{
    public async Task PrintToFirstAvailableAsync(string filePath)
    {
        // Discover available printers asynchronously
        List<string> printers = await Printer.GetPrinterNamesAsync();

        // Exit if no printers are installed
        if (printers.Count == 0)
        {
            Console.WriteLine("No printers found.");
            return;
        }

        // Configure settings for the first available printer
        PrintSettings settings = new PrintSettings
        {
            PrinterName = printers[0],
            Dpi = 300
        };

        // Print asynchronously
        await Printer.PrintAsync(filePath, settings);
    }
}
Imports IronPrint
Imports System.Threading.Tasks

Public Class PrintService
    Public Async Function PrintToFirstAvailableAsync(filePath As String) As Task
        ' Discover available printers asynchronously
        Dim printers As List(Of String) = Await Printer.GetPrinterNamesAsync()

        ' Exit if no printers are installed
        If printers.Count = 0 Then
            Console.WriteLine("No printers found.")
            Return
        End If

        ' Configure settings for the first available printer
        Dim settings As New PrintSettings With {
            .PrinterName = printers(0),
            .Dpi = 300
        }

        ' Print asynchronously
        Await Printer.PrintAsync(filePath, settings)
    End Function
End Class
$vbLabelText   $csharpLabel

このクラスベースの例では、プリンターの検出と印刷のロジックを再利用可能なサービスとしてカプセル化しています。UIをフリーズさせることなくプリンター一覧を取得するために GetPrinterNamesAsync を呼び出し、利用可能な最初のプリンターを PrinterName に割り当てます。 await Printer.PrintAsync 呼び出しは、ジョブを非同期で送信します。

出力

請求書は非同期で最初に発見されたプリンターに印刷されます。 上記のようにジョブはプリンターキューに表示されます。

請求書出力が非同期で最初に利用可能なプリンターに印刷されました。

本番環境では、printers[0] を、命名規則に合致するロジック(例:配送ラベル用には"Label"を含むプリンター、ブランド文書用には"Color"を含むプリンターを検索するなど)に置き換える場合があります。 IronPrintの非同期メソッドはすべて同じPrinterNameの動作は同期パスと非同期パスで同一です。

静的割り当て、ランタイム発見、設定の組み合わせ、および非同期ワークフローのすべてをカバーしたので、関連するリソースのいくつかをブックマークする価値があります。

次のステップは何ですか?

PrintSettings.PrinterName を使用したプリンター名の指定について、静的な割り当てから Printer.GetPrinterNames による動的な実行時検出まで解説しました。 重要なポイント:プリンター名は完全に一致させる必要があります(大文字小文字を区別します)。nullはOSのデフォルトプリンターに設定され、印刷ダイアログはプログラムによる選択設定を上書きします。

プリンター名取得の例はスタンドアロンの発見スニペットを提供し、印刷設定ガイドはすべての設定可能なプロパティを詳細にカバーしています。 PrinterクラスAPIリファレンスはすべての静的印刷メソッドを文書化し、PrintSettings APIリファレンスはすべてのフィールドとデフォルトをリストしています。 エンドツーエンドのウォークスルーについては、文書を印刷するチュートリアルがすべての要素をまとめます。

無料の30日間トライアルを開始して、ライブプロジェクトでプリンター選択をテストします。 準備が整いましたら、$999 から始まるライセンスオプションをご覧ください

https://ironsoftware.com/csharp/print/object-reference/api/IronPrint.PrintSettings.html https://ironsoftware.com/csharp/print/object-reference/api/IronPrint.PrintSettings.html https://ironsoftware.com/csharp/print/object-reference/api/IronPrint.Printer.html https://ironsoftware.com/csharp/print/how-to/print-settings/ https://ironsoftware.com/csharp/print/object-reference/api/IronPrint.Printer.html

よくある質問

IronPrintを使ってC#でプリンタ名を指定するにはどうすればよいですか?

IronPrintを使えば、C#でPrinterNameプロパティを設定することでプリンタ名を指定することができます。これにより、印刷タスクのために特定のプリンタをターゲットにすることができます。

IronPrintとは何か?

IronPrintは、印刷タスクを管理するためのC#アプリケーションにおいて、プリンタ名や他の印刷オプションを指定する機能を提供するIron Softwareのライブラリです。

C#で利用可能なプリンタを発見するにはどうすればよいですか?

IronPrintを使用すると、ネットワーク上の利用可能なプリンタを簡単に発見でき、印刷ジョブに対するPrinterNameを選択することができます。

PrinterNameプロパティを動的に設定することはできますか?

はい、IronPrintを使えば、C#コード内で実行時に希望するプリンタを選択するためにPrinterNameプロパティを動的に設定することができます。

IronPrintを使ってネットワークプリンタに印刷することは可能ですか?

はい、IronPrintは、C#アプリケーション内で適切なPrinterNameプロパティを設定することにより、ネットワークプリンタを指定して印刷することを可能にします。

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

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

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

準備はできましたか?
Nuget ダウンロード 41,154 | バージョン: 2026.5 just released
Still Scrolling Icon

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

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