Java調用打印機打印PDF文檔的兩種方法

最近,由於項目需求,需要增加系統調用打印機打印PDF文檔功能。以前在Asp.Net項目中做過套打,但是現在的需求直接文檔打印,下面是實現代碼調用打印機的兩種方法。

1.Java Print Service
Java Print Service是Java自帶的打印框架,所在的包javax.print.PrintService;。這種方案侷限性比較大,只能打印PNG文件(廉價打印機不支持打印PDF)

2.Apache PDFBox
它的打印實現也是封裝了Java Service Print框架的打印功能,支持性比較好。

第一步,引入maven

<dependency>
    <groupId>org.apache.pdfbox</groupId>
    <artifactId>pdfbox</artifactId>
    <version>2.0.8</version>
</dependency>

第二步,複製下面代碼

// 使用打印機的名稱
String printName = "Win32 Printer : Microsoft Print to PDF";
String pdfPath = "D:\test.pdf";
File file = new File(pdfPath);
// 讀取pdf文件
PDDocument document = PDDocument.load(file);
// 創建打印任務
PrinterJob job = PrinterJob.getPrinterJob();
// 遍歷所有打印機的名稱
for (PrintService ps : PrinterJob.lookupPrintServices()) {
    String psName = ps.toString();
    // 選用指定打印機
    if (psName.equals(printerName)) {
        isChoose = true;
        job.setPrintService(ps);
        break;
    }
}
 
job.setPageable(new PDFPageable(document));
 
Paper paper = new Paper();
// 設置打印紙張大小
paper.setSize(598,842); // 1/72 inch
// 設置打印位置 座標
paper.setImageableArea(0, 0, paper.getWidth(), paper.getHeight()); // no margins
// custom page format
PageFormat pageFormat = new PageFormat();
pageFormat.setPaper(paper);
// override the page format
Book book = new Book();
// append all pages 設置一些屬性 是否縮放 打印張數等
book.append(new PDFPrintable(document, Scaling.ACTUAL_SIZE), pageFormat, 1);
job.setPageable(book);
// 開始打印
job.print();

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章