博客 / 詳情

返回

如何在Java中實現Word文檔打印功能

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文檔。

user avatar u_16656615 頭像
1 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.