JAVA调用打印机,打印PDF文件
生活随笔
收集整理的這篇文章主要介紹了
JAVA调用打印机,打印PDF文件
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. 導入maven依賴
<dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</artifactId><version>2.0.6</version></dependency>2. .yml文件中配置匹配打印機
file:printerName: Brother DCP-L2550DW series Printer3. 編寫工具類
import lombok.extern.slf4j.Slf4j; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.printing.PDFPrintable; import org.apache.pdfbox.printing.Scaling;import javax.print.PrintService; import javax.print.attribute.HashPrintRequestAttributeSet; import javax.print.attribute.standard.Sides; import java.awt.print.Book; import java.awt.print.PageFormat; import java.awt.print.Paper; import java.awt.print.PrinterJob; import java.io.File; import java.io.IOException;/*** 類描述:TODO* 打印機工具類* @author HBO* @date 2022-12-02 13:59**/ @Slf4j public class PrintUtlis {public static void PDFprint(File file, String printerName) throws Exception {PDDocument document = null;try {document = PDDocument.load(file);PrinterJob printJob = PrinterJob.getPrinterJob();printJob.setJobName(file.getName());if (printerName != null) {// 查找并設置打印機//獲得本臺電腦連接的所有打印機PrintService[] printServices = PrinterJob.lookupPrintServices();if (printServices == null || printServices.length == 0) {log.info("打印失敗,未找到可用打印機,請檢查。");return;}PrintService printService = null;//匹配指定打印機for (int i = 0; i < printServices.length; i++) {if (printServices[i].getName().contains(printerName)) {System.out.println(printServices[i].getName());printService = printServices[i];break;}}if (printService != null) {printJob.setPrintService(printService);} else {log.info("打印失敗,未找到名稱為" + printerName + "的打印機,請檢查。");return;}}//設置紙張及縮放PDFPrintable pdfPrintable = new PDFPrintable(document, Scaling.ACTUAL_SIZE);//設置多頁打印Book book = new Book();PageFormat pageFormat = new PageFormat();//設置打印方向pageFormat.setOrientation(PageFormat.PORTRAIT);//縱向pageFormat.setPaper(getPaper());//設置紙張book.append(pdfPrintable, pageFormat, document.getNumberOfPages());printJob.setPageable(book);printJob.setCopies(1);//設置打印份數//添加打印屬性HashPrintRequestAttributeSet pars = new HashPrintRequestAttributeSet();pars.add(Sides.DUPLEX); //設置單雙頁printJob.print(pars);} finally {if (document != null) {try {document.close();} catch (IOException e) {e.printStackTrace();}}}}public static Paper getPaper() {Paper paper = new Paper();// 默認為A4紙張,對應像素寬和高分別為 595, 842int width = 595;int height = 842;// 設置邊距,單位是像素,10mm邊距,對應 28pxint marginLeft = 10;int marginRight = 0;int marginTop = 10;int marginBottom = 0;paper.setSize(width, height);// 下面一行代碼,解決了打印內容為空的問題paper.setImageableArea(marginLeft, marginRight, width - (marginLeft + marginRight), height - (marginTop + marginBottom));return paper;} }4.控制類設置調用
//連接打印機打印文件try {PrintUtlis.PDFprint(new File(s1), printerName);} catch (Exception e) {return AjaxResult.error("打印失敗");}5.效果圖
總結
以上是生活随笔為你收集整理的JAVA调用打印机,打印PDF文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 将多个文件合并为一个文件
- 下一篇: 弹球打砖块游戏java,Unity 弹球