0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

C# で Word 文書を印刷する – 実践的な 4 つの方法

Posted at

Word 文書はビジネス、教育、行政など多くの場面で不可欠な存在です。例えば契約書への署名、プレゼン資料の配布、報告書の提出といった「物理的な文書が必要なケース」や、「PDFとして保存して共有する」「1枚の紙に複数ページをまとめて印刷して節約する」といったニーズに応えるため、本稿では C# を使用した Word 文書の印刷・出力方法を 4 種類詳しく解説し、各シーンのニーズに的確に対応する実践的なガイドを提供します。

目次

事前準備:無料 .NET Word ライブラリの導入

C# で Word 文書の印刷機能を実現するには、Free Spire.Doc for .NET(無料版)をプロジェクトに導入する必要があります。このライブラリは Word ファイルの読み込み、編集、印刷をサポートしていますが、無料版では10ページ以下の文書に対応する点に注意してください。

導入方法(2種類)

  1. NuGet からインストール(推奨)
    Visual Studio を開き、対象プロジェクトを右クリックした後、「NuGet パッケージの管理」を選択します。
    検索欄に「FreeSpire.Doc」を入力し、検索結果から「インストール」をクリックすると、ライブラリが自動的にプロジェクトに参照されます。

  2. 手動で 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文書処理機能の詳細については、以下を参照してください:

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?