C#でドキュメントをサイレント印刷する方法(pdf 印刷)
サイレント印刷は、コードから直接プリンターにドキュメントを送ります。ダイアログボックスなし、ユーザーの操作なし、中断なしです。 バッチ請求書処理、キオスクアプリケーション、Windowsサービス背景ジョブのような自動化ワークフローにおいて、印刷ダイアログを排除することは必須の要件です。 ネイティブSystem.Drawing.Printingネームスペースはサイレント印刷への道を提供しますが、チームやプロジェクト全体に拡張できないイベント駆動の雛形を要求します。
IronPrint はサイレント印刷を1つのメソッド呼び出しに簡略化します。 NuGetパッケージを1つインストールし、Printer.Print()を呼び出します。ライブラリはバックグラウンドでプリンター通信、ドキュメントのレンダリング、プリントスポーラーとのやり取りを処理します。
クイックスタート: サイレント印刷
- NuGet経由でIronPrintをインストールします:
Install-Package IronPrint using IronPrint;をファイルに追加しますPrinter.Print("filepath")を呼び出してドキュメントをデフォルトプリンターに送信しますPrintSettingsオブジェクトを渡してプリンター名、DPI、部数、用紙設定を管理します- 印刷操作が呼び出し元のスレッドをブロックしない必要がある場合は
Printer.PrintAsync()を使用します
最小限のワークフロー(5ステップ)
- IronPrint C#印刷ライブラリをインストール
- サイレント出力のために
Printer.Print("filepath")を呼び出します - カスタム設定には
PrintSettingsオブジェクトを渡します - ブロッキングされない実行のために
Printer.PrintAsync()を使用します - プロジェクトを実行してダイアログなしでサイレント印刷します
.NETでサイレント印刷はどのように機能するのか?
.NETのSystem.Drawing.Printingネームスペースには、印刷操作中にステータスダイアログを抑制するStandardPrintControllerクラスが含まれています。 デフォルトでは、.NETはStandardPrintControllerに切り替えるとそのダイアログはなくなりますが、セットアップコストは依然として大きいです。
ネイティブアプローチでサイレント印刷をするには、Print()を呼び出します。 これには1つのドキュメントの設定コードに約15~25行が必要であり、新しいドキュメントタイプやフォーマットごとにPrintPageイベント内に独自のレンダリングロジックが必要です。 特にPDFレンダリングはGraphics表面に描画するための別のPDF解析ライブラリが必要です。
IronPrintはこの全パイプラインをPrinterクラスにラップします。 Print()メソッドはファイルパスまたはバイト配列を受け入れ、ファイル形式を検出し、適切なエンジンを通じてレンダリングし、デフォルトプリンターに配送します。これらすべてがダイアログを表示せずに行われます。
:path=/static-assets/print/content-code-examples/how-to/silent-printing/silent-printing-print-pdf-and-byte-array.cs
using IronPrint;
// Print a PDF silently to the default printer
Printer.Print("quarterly-report.pdf");
// Print from a byte array (e.g., retrieved from a database or API)
byte[] pdfData = File.ReadAllBytes("shipping-label.pdf");
Printer.Print(pdfData);
Imports IronPrint
' Print a PDF silently to the default printer
Printer.Print("quarterly-report.pdf")
' Print from a byte array (e.g., retrieved from a database or API)
Dim pdfData As Byte() = File.ReadAllBytes("shipping-label.pdf")
Printer.Print(pdfData)
Print()メソッドはPDF、PNG、TIFF、JPEG、GIF、HTML、BMPファイル形式をサポートします。 ファイルパスを文字列として、または生のファイルデータをbyte[]として渡し、IronPrintが自動的にレンダリング戦略を判断します。
サイレント出力のための印刷設定をどのように設定するか?
PrintSettingsクラスは印刷ジョブを完全に制御します。 ターゲットプリンター、用紙寸法、向き、マージン、DPI、カラーモード、部数、両面印刷の動作を設定し、その設定オブジェクトをPrinter.Print()に渡します。
:path=/static-assets/print/content-code-examples/how-to/silent-printing/silent-printing-print-with-settings.cs
using IronPrint;
// Configure detailed print settings
var settings = new PrintSettings
{
PrinterName = "HP LaserJet Pro",
PaperSize = PaperSize.A4,
Orientation = PaperOrientation.Portrait,
DPI = 300,
NumberOfCopies = 2,
Grayscale = false,
PaperMargins = new Margins(10, 10, 10, 10)
};
// Print with custom settings — still silent, no dialog
Printer.Print("monthly-summary.pdf", settings);
Imports IronPrint
' Configure detailed print settings
Dim settings As New PrintSettings With {
.PrinterName = "HP LaserJet Pro",
.PaperSize = PaperSize.A4,
.Orientation = PaperOrientation.Portrait,
.DPI = 300,
.NumberOfCopies = 2,
.Grayscale = False,
.PaperMargins = New Margins(10, 10, 10, 10)
}
' Print with custom settings — still silent, no dialog
Printer.Print("monthly-summary.pdf", settings)
各プロパティは標準的なプリントスポーラー設定にマッピングされています。 DPIは出力解像度を制御し、ビジネス文書の場合は300が一般的で、ドラフト用には150が適しています。 Grayscaleはカラーが不要な場合にトナー使用量を削減します。 PaperMargins値はミリメートルで指定されます。
特定のプリンタを選択するにはどうすればよいですか?
システムにインストールされているすべてのプリンターを列挙するためにPrintSettings.PrinterNameに割り当てます。
:path=/static-assets/print/content-code-examples/how-to/silent-printing/silent-printing-select-specific-printer.cs
using IronPrint;
// List all available printers
List<string> printers = Printer.GetPrinterNames();
foreach (string name in printers)
{
Console.WriteLine(name);
}
// Target a specific network printer
var settings = new PrintSettings
{
PrinterName = printers.First(p => p.Contains("LaserJet"))
};
Printer.Print("document.pdf", settings);
Imports IronPrint
' List all available printers
Dim printers As List(Of String) = Printer.GetPrinterNames()
For Each name As String In printers
Console.WriteLine(name)
Next
' Target a specific network printer
Dim settings As New PrintSettings With {
.PrinterName = printers.First(Function(p) p.Contains("LaserJet"))
}
Printer.Print("document.pdf", settings)
PrinterNameが指定されていない場合、IronPrintはジョブをオペレーティングシステムのデフォルトプリンターにルーティングします。 複数のプリンターがある環境では—共有オフィス、倉庫、印刷室など— プリンターをプログラムで列挙し正しく選択することで、誤ったルートを防ぎます。
複数のドキュメントを一括ドキュメント 印刷するにはどうすればよいですか?
バッチ印刷はわかりやすいループパターンに従います。 一連のファイルパスを繰り返し、Printer.Print()を各ドキュメントに対して呼び出します。 各呼び出しがサイレントであるため、バッチ全体が一度のダイアログプロンプトなしで完了します。
:path=/static-assets/print/content-code-examples/how-to/silent-printing/silent-printing-batch-print.cs
using IronPrint;
string[] invoices = Directory.GetFiles(@"C:\Invoices\Pending", "*.pdf");
var settings = new PrintSettings
{
PrinterName = "Accounting Printer",
NumberOfCopies = 1,
Grayscale = true
};
int successCount = 0;
foreach (string invoice in invoices)
{
try
{
Printer.Print(invoice, settings);
successCount++;
Console.WriteLine($"Printed: {Path.GetFileName(invoice)}");
}
catch (Exception ex)
{
Console.WriteLine($"Failed: {Path.GetFileName(invoice)} — {ex.Message}");
}
}
Console.WriteLine($"Batch complete: {successCount}/{invoices.Length} documents printed.");
Imports IronPrint
Dim invoices As String() = Directory.GetFiles("C:\Invoices\Pending", "*.pdf")
Dim settings As New PrintSettings With {
.PrinterName = "Accounting Printer",
.NumberOfCopies = 1,
.Grayscale = True
}
Dim successCount As Integer = 0
For Each invoice As String In invoices
Try
Printer.Print(invoice, settings)
successCount += 1
Console.WriteLine($"Printed: {Path.GetFileName(invoice)}")
Catch ex As Exception
Console.WriteLine($"Failed: {Path.GetFileName(invoice)} — {ex.Message}")
End Try
Next
Console.WriteLine($"Batch complete: {successCount}/{invoices.Length} documents printed.")
各Print()呼び出しをtry/catchでラッピングすると、単一の破損ファイルやプリンタータイムアウトが一括全体を停止させないことを保証します。 バックグラウンドサービスで動作する大規模なバッチの場合、各結果をデータベースまたはモニタリングシステムに記録することで、運用チームが確認できる監査ル'_TRACK' を提供します。
スレッドをブロックせずに非同期で印刷するには?
awaitパターンに適合しています。 これは、ブロックする印刷呼び出しがインターフェイスをフリーズさせるUIアプリケーションや、同時操作を処理するサービスにとって不可欠です。
:path=/static-assets/print/content-code-examples/how-to/silent-printing/silent-printing-async-print.cs
using IronPrint;
// Non-blocking silent print
await Printer.PrintAsync("report.pdf");
// Async batch printing
string[] files = Directory.GetFiles(@"C:\Reports", "*.pdf");
foreach (string file in files)
{
await Printer.PrintAsync(file);
}
Imports IronPrint
' Non-blocking silent print
Await Printer.PrintAsync("report.pdf")
' Async batch printing
Dim files As String() = Directory.GetFiles("C:\Reports", "*.pdf")
For Each file As String In files
Await Printer.PrintAsync(file)
Next
PrintSettingsオブジェクトも追加可能です。 非同期オーバーロードは、大量ドキュメントが同時に印刷キューに入る高スループットシナリオでスレッドプールの枯渇を防ぎます。 これはタスクベース非同期パターンに従っており、現代 for .NET開発全般で推奨されています。
プラットフォームの考慮点
IronPrintはデスクトップおよびモバイルプラットフォーム間でサイレント印刷をサポートしますが、動作はオペレーティングシステムによって異なります。
| プラットフォーム | サイレント印刷 | ノート |
|---|---|---|
| Windows (7+) | フルサポート | ダイアログなし、フルPrintSettings制御 |
| macOS (10+) | サポート対象 | ネイティブmacOS印刷サブシステムを使用 |
| iOS (11+) | ダイアログが表示されます | Print() ではシステム印刷ダイアログが表示され続けます |
| Android (API 21+) | ダイアログが表示されます | Print() ではシステム印刷ダイアログが表示され続けます |
モバイルプラットフォームでは、オペレーティングシステムの制限により真のサイレント印刷が妨げられPrinter.Print() はネイティブ印刷ダイアログを表示します。 Androidでは、印刷操作の前にPrinter.Initialize(Android.Content.Context)呼び出しが必要です。 デスクトッププラットフォーム(WindowsとmacOS)は注意点なしで完全無人のサイレント印刷をサポートします。
ネイティブ.NET印刷との比較
ライブラリを採用するかまたはネイティブSystem.Drawing.Printingネームスペースに構築するか評価中のエンジニアリングチームの場合、トレードオフは以下のように分かれます。
| PDF/UA-1 | PDF/UA-2 | |
|---|---|---|
| 出版 | 2012 | 2024 |
| 基本仕様 | PDF 1.7 (ISO 32000-1) | PDF 2.0 (ISO 32000-2) |
| 規制対象範囲 | ADA第II編第508条、EUアクセシビリティ法 | 同じ規制との互換性 |
| 検証ツール | veraPDF、Adobe Acrobat Pro、PAC 2024 | veraPDF(サポート拡大中) |
| フォームフィールドのセマンティクス | 標準 | 強化(アクセシビリティ メタデータの強化) |
| 最適な用途 | 今日のほとんどのプロジェクト | PDF 2.0の機能を必要とする新しいシステム |
ネイティブアプローチは、チームがすでにドキュメントレンダリングインフラを持っているシンプルなシナリオに適しています。 既存のレンダリングコードなしでPDF、画像、HTMLを印刷するチームにとって、IronPrintは開発期間と継続的なメンテナンスの数週間を削減します。 5月2025年リリースで提供された30%印刷速度改善は、社内で構築した場合にはエンジニアリングサイクルを消費するであろう最適化です。
次のステップ
IronPrintでのサイレント印刷は、同期サイレント出力用PrintSettings の3つのコアメソッドに帰結します。 これらは、デスクトッププラットフォーム全体の単一ドキュメント、バッチ、および同時印刷シナリオをカバーします。
IronPrintチュートリアルで詳細なウォークスルーを調べるか、プリンタークラスAPIリファレンスで完全なメソッド表面を確認してください。 印刷設定ハウツーではトレー選択や平坦化などの追加の設定オプションをカバーしています。
無料の30日間トライアルを開始して、実環境でサイレント印刷をテストしてください—クレジットカード不要です。 配備準備が整ったら、ライセンスオプションを確認して$749から始めましょう。
Iron Softwareのエンジニアとチャットして特定の配備シナリオについて助けを求めてください。

