Java作为一种广泛使用的编程语言,在企业级应用开发中占据着重要角色。随着业务流程自动化需求的增长,直接通过程序控制Word文档的打印变得越来越重要。这不仅能够提高工作效率、减少人为错误,还能满足特定场景下的定制化需求,比如批量生成报告后自动打印,或是根据用户操作触发特定文档的即时输出。掌握如何在Java程序中实现Word文档的打印,对于开发者来说意味着能够为用户提供更加丰富且便捷的服务体验。本文将介绍如何在Java程序中打印Word文档

本文所使用的方法需要用到Spire.Doc for Java

申请免费License

使用默认打印机打印Word文档(Java)

使用默认打印机打印Word文档是一种简单且便捷的方法,适用于那些不需要特殊打印设置或用户希望使用默认配置的常规打印任务。通过这种方法,用户无需更改任何打印机设置即可快速进行打印操作。

  • 创建一个PrinterJob对象,并调用相应的方法来设置打印任务。
  • 创建一个Document对象,并通过Document.LoadFromFile()方法加载Word文档。
  • 使用PrinterJob.setPrintable()方法将文档的每一页渲染成指定格式。
  • 调用PrinterJob.print()方法来执行打印操作。

代码示例

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("Input.docx");
        
        // 创建一个PrinterJob对象
        PrinterJob printerJob = PrinterJob.getPrinterJob();
        
        // 创建PageFormat对象并设置为默认大小和方向
        PageFormat pageFormat = printerJob.defaultPage();
        
        // 返回与这个PageFormat关联的Paper对象的副本
        Paper paper = pageFormat.getPaper();
        
        // 设置这张纸的可打印区域
        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)

在Java中通过指定打印机打印Word文档,用户可以选择特定的打印设备来完成任务。这种方法在多个打印机可用的情况下尤为有用,允许用户将打印任务直接发送到指定的打印机。

  • 创建一个PrinterJob对象,并调用相关方法进行打印任务的设置。
  • 使用自定义方法findPrintService()根据打印机名称找到相应的打印服务。
  • 使用PrinterJob.setPrintService()方法应用找到的打印服务。
  • 创建Document对象,并通过Document.LoadFromFile()方法加载Word文档。
  • 使用PrinterJob.setPrintable()方法将文档的每一页渲染为指定格式。
  • 调用PrinterJob.print()方法来执行打印操作。
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");
        printerJob.setPrintService(myPrintService);
        
        // 创建PageFormat实例并设置为默认大小和方向
        PageFormat pageFormat = printerJob.defaultPage();
        
        // 返回与这个PageFormat关联的Paper对象的副本
        Paper paper = pageFormat.getPaper();
        
        // 设置这张纸的可打印区域
        paper.setImageableArea(0, 0, pageFormat.getWidth(), pageFormat.getHeight());
        
        // 为这个PageFormat设置Paper对象
        pageFormat.setPaper(paper);
        
        // 创建一个Document对象
        Document document = new Document();
        
        // 加载一个Word文件
        document.loadFromFile("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()方法进行打印。
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.setImageableArea(0, 0, pageFormat.getWidth(), pageFormat.getHeight());
        
        // 为这个PageFormat设置Paper对象
        pageFormat.setPaper(paper);
        
        // 创建一个Document对象
        Document document = new Document();
        
        // 加载一个Word文件
        document.loadFromFile("Input.docx");
        
        // 调用painter以指定格式渲染页面
        printerJob.setPrintable(document, pageFormat);
        
        // 显示打印对话框
        if (printerJob.printDialog()) {
            try {
                // 打印文档
                printerJob.print();
            } catch (PrinterException e) {
                e.printStackTrace();
            }
        }
    }
}

打印指定页数范围的Word文档(Java)

在Java中打印指定页数范围的Word文档,可以让用户只打印文档的某些特定页面,而无需打印整个文档。这对于需要打印长篇文档的用户,或仅需打印文档部分内容的用户非常有用。

  • 创建PrinterJob对象,并通过相关方法设置打印任务。
  • 创建Document对象,并通过Document.LoadFromFile()方法加载Word文档。
  • 使用PrinterJob.setPrintable()方法将文档的每一页渲染为指定格式。
  • 创建PrintRequestAttributeSet对象,并将打印范围添加到属性集中。
  • 调用PrinterJob.print()方法打印指定的页面范围。
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("Input.docx");
        
        // 创建一个PrinterJob对象
        PrinterJob printerJob = PrinterJob.getPrinterJob();
        
        // 创建PageFormat对象并设置为默认大小和方向
        PageFormat pageFormat = printerJob.defaultPage();
        
        // 返回与这个PageFormat关联的Paper对象的副本
        Paper paper = pageFormat.getPaper();
        
        // 设置这张纸的可打印区域
        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)

双面打印(即两面打印)使用户能够在纸张的正反两面进行打印,特别适用于需要打印较长报告、演示文稿或资料的场景,既能节省纸张,又提升了打印效率。

  • 创建PrinterJob对象,并通过相关方法设置打印任务。
  • 创建Document对象,并通过Document.LoadFromFile()方法加载Word文档。
  • 使用PrinterJob.setPrintable()方法将文档的每一页渲染为指定格式。
  • 创建PrintRequestAttributeSet对象,并将双面打印模式添加到属性集中。
  • 调用PrinterJob.print()方法执行打印。
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("Input.docx");
        
        // 创建一个最初与默认打印机关联的PrinterJob对象
        PrinterJob printerJob = PrinterJob.getPrinterJob();
        
        // 创建PageFormat对象并设置为默认大小和方向
        PageFormat pageFormat = printerJob.defaultPage();
        
        // 返回与这个PageFormat关联的Paper对象的副本
        Paper paper = pageFormat.getPaper();
        
        // 设置这张纸的可打印区域
        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文档。


大丸子
12 声望3 粉丝