JavaでWord文書印刷機能を実装する方法

広く使われているプログラミング言語であるJavaは、エンタープライズ・アプリケーション開発において重要な役割を果たしている。 ビジネスプロセスの自動化の必要性が高まるにつれ、Word文書の印刷をプログラムで直接制御することの重要性が高まっています。 これは、効率を向上させ、人的ミスを減らすだけでなく、レポートのバッチ生成後の自動印刷や、ユーザーアクションに基づく特定の文書の即時出力のトリガーなど、特定のシナリオにおけるカスタマイズのニーズにも応えます。 **JavaプログラムでWord文書を印刷する方法**をマスターすることは、開発者がより豊かで便利なサービス体験をユーザーに提供できることを意味する。 この記事では、**JavaアプリケーションでWord文書を印刷する方法**を紹介します。

この記事で使用する方法では、[Spire.Doc for Java](https://jp.e-iceblue.com/introduce/spire-doc-for-java.html)を使用する必要があります。

[無料ライセンスのお申し込み](https://www.e-iceblue.com/TemLicense.html)

## デフォルトプリンターでWord文書を印刷する（Java）

デフォルトプリンターでWord文書を印刷する方法は簡単で便利です。この方法は、特に特定のプリンター設定が必要ない場合や、ユーザーがプリンターのデフォルト設定を使用したい場合に適しています。

- PrinterJobオブジェクトを作成し、そこからメソッドを呼び出して印刷ジョブを設定します。
- Documentオブジェクトを作成し、Document.LoadFromFile()メソッドを使用してWord文書をロードします。
- PrinterJob.setPrintable()メソッドを使用して、文書の各ページを指定された形式でレンダリングします。
- PrinterJob.print()メソッドを呼び出して印刷を実行します。

```java
import com.spire.doc.Document;
import java.awt.print.PageFormat;
import java.awt.print.Paper;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;

public class PrintWithDefaultPrinter {
    public static void main(String[] args) {
        // Documentオブジェクトを作成
        Document document = new Document();
        
        // Wordファイルを読み込む
        document.loadFromFile("C:\\Users\\Administrator\\Desktop\\Input.docx");
        
        // PrinterJobオブジェクトを作成
        PrinterJob printerJob = PrinterJob.getPrinterJob();
        
        // PageFormatオブジェクトを作成し、デフォルトのサイズと向きに設定
        PageFormat pageFormat = printerJob.defaultPage();
        
        // このPageFormatに関連付けられたPaperオブジェクトのコピーを取得
        Paper paper = pageFormat.getPaper();
        
        // このPaperの印刷可能領域を設定
        paper.setImageableArea(0, 0, pageFormat.getWidth(), pageFormat.getHeight());
        
        // 印刷する部数を設定
        printerJob.setCopies(1);
        
        // このPageFormatにPaperオブジェクトを設定
        pageFormat.setPaper(paper);
        
        // 指定された形式でページをレンダリングするためのpainterを呼び出す
        printerJob.setPrintable(document, pageFormat);
        
        // ドキュメントを印刷
        try {
            printerJob.print();
        } catch (PrinterException e) {
            e.printStackTrace();
        }
    }
}
```

## 指定したプリンターでWord文書を印刷する（Java）

指定したプリンターでWord文書を印刷する方法では、特定のプリンターを選んで印刷タスクを処理します。複数のプリンターが利用可能な場合に、特定のプリンターに出力を送る際に便利です。

- PrinterJobオブジェクトを作成し、メソッドを使用して印刷ジョブを設定します。
- カスタムメソッドfindPrintService()を使用して、プリンター名から印刷サービスを探します。
- PrinterJob.setPrintService()メソッドを使用して、印刷サービスを適用します。
- Documentオブジェクトを作成し、Document.LoadFromFile()メソッドでWord文書をロードします。
- PrinterJob.setPrintable()メソッドを使用して、文書の各ページを指定された形式でレンダリングします。
- PrinterJob.print()メソッドを呼び出して印刷を実行します。

```java
import com.spire.doc.Document;
import javax.print.PrintService;
import java.awt.print.PageFormat;
import java.awt.print.Paper;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;

public class PrintWithSpecifiedPrinter {
    public static void main(String[] args) throws PrinterException {
        // 最初はデフォルトのプリンタと関連付けられたPrinterJobオブジェクトを作成
        PrinterJob printerJob = PrinterJob.getPrinterJob();
        
        // プリンタ名を指定
        PrintService myPrintService = findPrintService("\\\\192.168.1.104\\HP LaserJet P1007");
        printerJob.setPrintService(myPrintService);
        
        // PageFormatインスタンスを作成し、デフォルトのサイズと向きに設定
        PageFormat pageFormat = printerJob.defaultPage();
        
        // このPageFormatに関連付けられたPaperオブジェクトのコピーを取得
        Paper paper = pageFormat.getPaper();
        
        // このPaperの印刷可能領域を設定
        paper.setImageableArea(0, 0, pageFormat.getWidth(), pageFormat.getHeight());
        
        // このPageFormatにPaperオブジェクトを設定
        pageFormat.setPaper(paper);
        
        // Documentオブジェクトを作成
        Document document = new Document();
        
        // Wordファイルを読み込む
        document.loadFromFile("C:\\Users\\Administrator\\Desktop\\Input.docx");
        
        // 指定された形式でページをレンダリングするためのpainterを呼び出す
        printerJob.setPrintable(document, pageFormat);
        
        // ドキュメントを印刷
        try {
            printerJob.print();
        } catch (PrinterException e) {
            e.printStackTrace();
        }
    }

    // プリントサービスを見つける
    private static PrintService findPrintService(String printerName) {
        PrintService[] printServices = PrinterJob.lookupPrintServices();
        for (PrintService printService : printServices) {
            if (printService.getName().equals(printerName)) {
                return printService;
            }
        }
        return null;
    }
}
```

## 印刷ダイアログボックスでWord文書を印刷する（Java）

印刷ダイアログボックスを使用すると、ユーザーはプリンターを選択し、印刷設定をカスタマイズしてから印刷を開始できます。これにより、ユーザーは印刷操作を柔軟に制御できるようになります。

- PrinterJobオブジェクトを作成し、メソッドを呼び出して印刷ジョブを設定します。
- Documentオブジェクトを作成し、Document.LoadFromFile()メソッドを使用してWord文書をロードします。
- PrinterJob.setPrintable()メソッドを使用して、文書の各ページを指定された形式でレンダリングします。
- PrinterJob.printDialog()メソッドを呼び出して印刷ダイアログボックスを表示します。
- PrinterJob.print()メソッドを呼び出して印刷を実行します。

```java
import com.spire.doc.Document;
import java.awt.print.PageFormat;
import java.awt.print.Paper;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;

public class PrintWithDialogBox {
    public static void main(String[] args) {
        // 最初はデフォルトのプリンタと関連付けられたPrinterJobオブジェクトを作成
        PrinterJob printerJob = PrinterJob.getPrinterJob();
        
        // PageFormatオブジェクトを作成し、デフォルトのサイズと向きに設定
        PageFormat pageFormat = printerJob.defaultPage();
        
        // このPageFormatに関連付けられたPaperオブジェクトのコピーを取得
        Paper paper = pageFormat.getPaper();
        
        // このPaperの印刷可能領域を設定
        paper.setImageableArea(0, 0, pageFormat.getWidth(), pageFormat.getHeight());
        
        // このPageFormatにPaperオブジェクトを設定
        pageFormat.setPaper(paper);
        
        // Documentオブジェクトを作成
        Document document = new Document();
        
        // Wordファイルを読み込む
        document.loadFromFile("C:\\Users\\Administrator\\Desktop\\Math.docx");
        
        // 指定された形式でページをレンダリングするためのpainterを呼び出す
        printerJob.setPrintable(document, pageFormat);
        
        // 印刷ダイアログを表示
        if (printerJob.printDialog()) {
            try {
                // ドキュメントを印刷
                printerJob.print();
            } catch (PrinterException e) {
                e.printStackTrace();
            }
        }
    }
}
```

## 指定したページ範囲を印刷するWord文書（Java）

Word文書のページ範囲を指定して印刷することは、特定のページのみを印刷したい場合に便利です。これにより、長い文書や特定のセクションだけを印刷することができます。

- PrinterJobオブジェクトを作成し、メソッドを使用して印刷ジョブを設定します。
- Documentオブジェクトを作成し、Document.LoadFromFile()メソッドでWord文書をロードします。
- PrinterJob.setPrintable()メソッドを使用して、文書の各ページを指定された形式でレンダリングします。
- PrintRequestAttributeSetオブジェクトを作成し、印刷範囲を属性セットに追加します。
- PrinterJob.print()メソッドを呼び出して指定したページ範囲を印刷します。

```java
import com.spire.doc.Document;
import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.print.attribute.PrintRequestAttributeSet;
import javax.print.attribute.standard.PageRanges;
import java.awt.print.PageFormat;
import java.awt.print.Paper;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;

public class PrintPageRange {
    public static void main(String[] args) {
        // Documentオブジェクトを作成
        Document document = new Document();
        
        // Wordファイルを読み込む
        document.loadFromFile("C:\\Users\\Administrator\\Desktop\\Input.docx");
        
        // PrinterJobオブジェクトを作成
        PrinterJob printerJob = PrinterJob.getPrinterJob();
        
        // PageFormatオブジェクトを作成し、デフォルトのサイズと向きに設定
        PageFormat pageFormat = printerJob.defaultPage();
        
        // このPageFormatに関連付けられたPaperオブジェクトのコピーを取得
        Paper paper = pageFormat.getPaper();
        
        // このPaperの印刷可能領域を設定
        paper.setImageableArea(0, 0, pageFormat.getWidth(), pageFormat.getHeight());
        
        // 印刷する部数を設定
        printerJob.setCopies(1);
        
        // このPageFormatにPaperオブジェクトを設定
        pageFormat.setPaper(paper);
        
        // 指定された形式でページをレンダリングするためのpainterを呼び出す
        printerJob.setPrintable(document, pageFormat);
        
        // PrintRequestAttributeSetオブジェクトを作成
        PrintRequestAttributeSet attributeSet = new HashPrintRequestAttributeSet();
        
        // 印刷範囲を設定
        attributeSet.add(new PageRanges(1, 5)); // 1ページ目から5ページ目までを印刷
        
        // ドキュメントを印刷
        try {
            printerJob.print(attributeSet);
        } catch (PrinterException e) {
            e.printStackTrace();
        }
    }
}
```

## 両面印刷でWord文書を印刷する（Java）

両面印刷（または二重面印刷）は、1枚の紙の表と裏に自動的に印刷できる機能です。長いレポートやプレゼンテーション資料など、紙の節約と印刷効率を向上させるのに役立ちます。

- PrinterJobオブジェクトを作成し、メソッドを使用して印刷ジョブを設定します。
- Documentオブジェクトを作成し、Document.LoadFromFile()メソッドでWord文書をロードします。
- PrinterJob.setPrintable()メソッドを使用して、文書の各ページを指定された形式でレンダリングします。
- PrintRequestAttributeSetオブジェクトを作成し、両面印刷モードを属性セットに追加します。
- PrinterJob.print()メソッドを呼び出して印刷を実行します。

```java
import com.spire.doc.Document;
import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.print.attribute.PrintRequestAttributeSet;
import javax.print.attribute.standard.Sides;
import java.awt.print.PageFormat;
import java.awt.print.Paper;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;

public class PrintInDuplexMode {
    public static void main(String[] args) {
        // Documentオブジェクトを作成
        Document document = new Document();
        
        // Wordファイルを読み込む
        document.loadFromFile("C:\\Users\\Administrator\\Desktop\\Input.docx");
        
        // 最初はデフォルトのプリンタと関連付けられたPrinterJobオブジェクトを作成
        PrinterJob printerJob = PrinterJob.getPrinterJob();
        
        // PageFormatオブジェクトを作成し、デフォルトのサイズと向きに設定
        PageFormat pageFormat = printerJob.defaultPage();
        
        // このPageFormatに関連付けられたPaperオブジェクトのコピーを取得
        Paper paper = pageFormat.getPaper();
        
        // このPaperの印刷可能領域を設定
        paper.setImageableArea(0, 0, pageFormat.getWidth(), pageFormat.getHeight());
        
        // このPageFormatにPaperオブジェクトを設定
        pageFormat.setPaper(paper);
        
        // 指定された形式でページをレンダリングするためのpainterを呼び出す
        printerJob.setPrintable(document, pageFormat);
        
        // PrintRequestAttributeSetオブジェクトを作成
        PrintRequestAttributeSet attributeSet = new HashPrintRequestAttributeSet();
        
        // 双面印刷モードを有効化（短辺反転）
        attributeSet.add(Sides.TWO_SIDED_SHORT_EDGE); // 長辺反転の場合にはSides.TWO_SIDED_LONG_EDGEを使用
        
        // ドキュメントを印刷
        try {
            printerJob.print(attributeSet);
        } catch (PrinterException e) {
            e.printStackTrace();
        }
    }
}
```

この記事では、Javaを使ってWord文書を印刷する方法について説明します。