日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JAVA调用打印机,打印PDF文件

發布時間:2023/12/20 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 Printer

3. 編寫工具類

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文件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。