使用 Java 轻松搞定 Word 文档打印

10 阅读2分钟

在 Java 应用程序中实现 Word 文档的直接打印功能是许多企业级应用的需求。本文将详细介绍如何使用 Spire.Doc for Java 库结合 Java 标准库中的 java.awt.print 包,实现从加载 Word 文档到指定打印机打印的完整解决方案。

准备工作

首先,确保您的项目中已经引入了必要的依赖。Spire.Doc for Java是一个强大的Word文档处理库,支持文档的创建、编辑、转换和打印。您可以通过Maven或手动下载方式添加该库。同时,java.awt.print是Java标准库的一部分,无需额外安装。

<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url>https://repo.e-iceblue.com/nexus/content/groups/public/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.doc</artifactId>
        <version>14.1.3</version>
    </dependency>
</dependencies>

接下来,确保你的系统可以识别要使用的打印机,可以通过打印机控制面板进行测试。

代码实现

以下是一个完整的示例代码,展示了如何使用 Java 打印一个 Word 文档:

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(00, pageFormat.getWidth(), pageFormat.getHeight());
        pageFormat.setPaper(paper);

        // 创建文档对象
        Document document = new Document();

        // 从文件中加载 Word 文档
        document.loadFromFile("C:\Users\Administrator\Desktop\Input.docx");

        // 设置打印文档的格式
        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;
    }
}

代码解释

  1. 创建 PrinterJob 对象 :

    • 使用 PrinterJob.getPrinterJob() 初始化一个默认打印作业。

  2. 查找打印服务 :

    findPrintService 方法循环遍历系统中所有的打印服务,并匹配指定的打印机名称。

  3. 定义纸张格式 :

    • 使用 PageFormatPaper 类来设置纸张的大小和可打印区域。

  4. 加载 Word 文档 :

    • 使用 Spire.Doc 的 Document 类加载指定路径的 Word 文档。

  5. 打印文档 :

    • 使用 printerJob.print() 执行打印操作。同时,对可能抛出的 PrinterException 进行异常处理。

结论

通过以上步骤,你可以轻松地在 Java 应用程序中集成打印功能。利用 Spire.Doc for Javajava.awt.print 库,你可以实现对 Word 文档的自动打印,提升用户体验和工作效率。在开发过程中,务必确保打印机连接正常,以及文件路径的正确性,以避免运行时错误。