Word 文書はビジネス、教育、行政など多くの場面で不可欠な存在です。例えば契約書への署名、プレゼン資料の配布、報告書の提出といった「物理的な文書が必要なケース」や、「PDFとして保存して共有する」「1枚の紙に複数ページをまとめて印刷して節約する」といったニーズに応えるため、本稿では C# を使用した Word 文書の印刷・出力方法を 4 種類詳しく解説し、各シーンのニーズに的確に対応する実践的なガイドを提供します。
目次
- 事前準備:無料 .NET Word ライブラリの導入
- 方法1:物理プリンターで Word 文書を印刷
- 方法2:サイレント印刷で Word 文書を自動出力
- 方法3:仮想プリンターで Word を PDF に変換
- 方法4:1枚の紙に複数ページを印刷
- まとめ:各方法の適用シナリオ
事前準備:無料 .NET Word ライブラリの導入
C# で Word 文書の印刷機能を実現するには、Free Spire.Doc for .NET(無料版)をプロジェクトに導入する必要があります。このライブラリは Word ファイルの読み込み、編集、印刷をサポートしていますが、無料版では10ページ以下の文書に対応する点に注意してください。
導入方法(2種類)
-
NuGet からインストール(推奨)
Visual Studio を開き、対象プロジェクトを右クリックした後、「NuGet パッケージの管理」を選択します。
検索欄に「FreeSpire.Doc」を入力し、検索結果から「インストール」をクリックすると、ライブラリが自動的にプロジェクトに参照されます。 -
手動で DLL を追加
公式サイト から「Free Spire.Doc for .NET」のパッケージをダウンロードして解凍し、「Bin」フォルダ内の「Spire.Doc.dll」をプロジェクトに追加します。
方法1:物理プリンターで Word 文書を印刷
適用シナリオ:契約書、申請書など「署名が必要な実体文書」を印刷する場合。
Free Spire.Doc の PrintDocument クラスを使用すると、プリンターの指定や、印刷するページ範囲、部数、用紙サイズを細かく設定できます。
C# コード:
using Spire.Doc;
using System.Drawing.Printing;
namespace PrintWordDocument
{
class Program
{
static void Main(string[] args)
{
// Word 文書を読み込む
Document doc = new Document();
doc.LoadFromFile("sample.docx");
// PrintDocument オブジェクトを取得する
PrintDocument printDoc = doc.PrintDocument;
// プリンター名を指定する
printDoc.PrinterSettings.PrinterName = "プリンター名";
// 印刷するページ範囲を指定する
printDoc.PrinterSettings.FromPage = 1;
printDoc.PrinterSettings.ToPage = 10;
// 印刷部数を設定する
printDoc.PrinterSettings.Copies = 1;
// 用紙サイズを指定する
printDoc.DefaultPageSettings.PaperSize = new PaperSize("カスタム", 500, 800);
// 文書を印刷する
printDoc.Print();
}
}
}
プリンター名は「デバイスとプリンター」で確認した名前と完全に一致させてください。
方法2:サイレント印刷で Word 文書を自動出力
適用シナリオ:バッチ処理(例:毎朝定時にレポートを印刷)や、ユーザー操作を介さず自動印刷する場合。
サイレント印刷では「印刷ダイアログ」が表示されず、プログラム内の設定に基づいて自動的に印刷が実行されます。
C# コード:
using Spire.Doc;
using System.Drawing.Printing;
namespace SilentlyPrintWord
{
class Program
{
static void Main(string[] args)
{
// Word 文書を読み込む
Document doc = new Document();
doc.LoadFromFile("sample.docx");
// PrintDocument オブジェクトを取得する
PrintDocument printDoc = doc.PrintDocument;
// プリンター名を指定する
printDoc.PrinterSettings.PrinterName = "プリンター名";
// PrintController プロパティを StandardPrintController に設定し、印刷プロセスを非表示にする
printDoc.PrintController = new StandardPrintController();
// 文書を印刷する
printDoc.Print();
}
}
}
サイレント印刷中はユーザーが設定を確認・修正できないため、事前にテスト印刷を実施し、プリンターの状態(用紙の有無、インク残量)と設定を確認してください。
方法3:仮想プリンターで Word を PDF に変換
適用シナリオ:Word 文書を「PDF として共有・保存」したい場合(紙を消費しません)。
仮想プリンターは「物理的な印刷」ではなく、文書を指定形式(ここでは PDF)の電子ファイルとして保存します。Windows に標準搭載されている「Microsoft Print to PDF」を使用できます。
C# コード:
using Spire.Doc;
using System.Drawing.Printing;
namespace PrintWordToPdf
{
class Program
{
static void Main(string[] args)
{
// Word 文書を読み込む
Document doc = new Document();
doc.LoadFromFile("sample.docx");
// PrintDocument オブジェクトを取得する
PrintDocument printDoc = doc.PrintDocument;
// ファイルに印刷出力する
printDoc.PrinterSettings.PrintToFile = true;
// 仮想プリンター名を指定する
printDoc.PrinterSettings.PrinterName = "Microsoft Print to PDF";
// 出力ファイルのパスと名前を指定する
printDoc.PrinterSettings.PrintFileName = @"C:\Users\Administrator\Desktop\ToPDF.pdf";
// 文書を印刷する
printDoc.Print();
}
}
}
Adobe Acrobat PDF Printer など他の仮想プリンターを使用する場合は、
PrinterNameをそのプリンター名に置き換えます。
方法4:1枚の紙に複数ページを印刷
適用シナリオ:資料の概要を一括確認したり、印刷用紙を節約したりする場合(例:議事録の下書き、参考資料の一覧)。
PrintMultipageToOneSheet() メソッドを使用すると、1枚の紙に 2ページ、4ページなどをまとめて印刷できます。
C# コード:
using Spire.Doc;
using Spire.Doc.Printing;
using System.Drawing.Printing;
namespace PrintMultiplePagesOnOneSheet
{
internal class Program
{
static void Main(string[] args)
{
// Word 文書を読み込む
Document doc = new Document();
doc.LoadFromFile("sample.docx");
// PrintDocument オブジェクトを取得する
PrintDocument printDoc = doc.PrintDocument;
// 片面印刷を有効にする
printDoc.PrinterSettings.Duplex = Duplex.Simplex;
// 指定したページ数を 1 ページに印刷する
doc.PrintMultipageToOneSheet(PagesPreSheet.TwoPages, false);
}
}
}
注意点:
-
PagesPreSheetで指定できるページ数は、プリンターの性能によって制限される場合があります(一般的には最大 16ページまで)。 - 1枚に印刷するページ数が多くなるほど文字サイズが小さくなるため、可読性を確認して設定してください。
まとめ:各方法の適用シナリオ
| 印刷方法 | 適用シナリオ | メリット | 注意点 |
|---|---|---|---|
| 物理プリンター印刷 | 実体文書(契約書、申請書)の印刷 | ページ範囲や部数を細かく設定できます | プリンターの接続状態を事前に確認する |
| サイレント印刷 | 自動バッチ処理、定時印刷 | ユーザー操作が不要で自動化できます | 事前テストとエラーログの保存が必要です |
| 仮想プリンター(PDF変換) | 電子ファイルの保存・共有 | 紙を消費しないため経済的で、共有も容易です | 出力フォルダを事前に作成しておく必要があります |
| 1枚紙に複数ページ印刷 | 資料の一括確認、紙節約 | 印刷コストを削減でき、閲覧効率も向上します | ページ数が多いと文字が小さくなるため可読性を確認 |
以上の方法を活用することで、C# による Word 文書の印刷ニーズをほぼカバーできます。実際の開発においては、「どのシナリオで使用するか」に合わせて適切な方法を選択し、必ずテスト印刷を実施して安定性を確認してください。
C#でのWord文書処理機能の詳細については、以下を参照してください: