|
Robert·Ran 訂閱專欄 package com.xxx.wxzf.util; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.printing.PDFPageable; import org.apache.pdfbox.printing.PDFPrintable; import org.apache.pdfbox.printing.Scaling; import javax.print.DocFlavor; import javax.print.PrintService; import javax.print.PrintServiceLookup; import javax.print.attribute.HashPrintRequestAttributeSet; import java.awt.print.Book; import java.awt.print.PageFormat; import java.awt.print.Paper; import java.awt.print.PrinterJob; import java.io.InputStream; import java.net.URL; fileUrl 文件鏈接 printService 指定打印機 @Author: Robert·Ran @CreateTime: 2019/5/17 11:59 @Description: 打印方法 public class Print { public static void printFile(String fileUrl, PrintService printService, String jobName) throws Exception { URL url = new URL(fileUrl); InputStream is = url.openStream(); 讀取pdf文件 PDDocument document = PDDocument.load(is); 創(chuàng)建打印任務 PrinterJob job = PrinterJob.getPrinterJob(); job.setJobName("文件_" + jobName); job.setPrintService(printService); job.setPageable(new PDFPageable(document)); Paper paper = new Paper(); 設置打印紙張大小 paper.setSize(595, 842); // 值為點 1 = 1/72 inch 設置打印位置與坐標 paper.setImageableArea(0, 0, paper.getWidth(), paper.getHeight()); // no margins PageFormat pageFormat = new PageFormat(); pageFormat.setPaper(paper); Book book = new Book(); 實際大小 ACTUAL_SIZE, 縮小 SHRINK_TO_FIT, 拉伸 STRETCH_TO_FIT, 適應 SCALE_TO_FIT; book.append(new PDFPrintable(document, Scaling.SCALE_TO_FIT), pageFormat, 1); job.setPageable(book); job.print(); printerName 指定打印機名稱 @Author: Robert·Ran @CreateTime: 2019/5/17 11:59 @Description: 指定打印機, 若無指定打印機則調(diào)用默認打印機 public static PrintService specifyPrinter(String printerName) { DocFlavor psInFormat = DocFlavor.INPUT_STREAM.AUTOSENSE; HashPrintRequestAttributeSet pras = new HashPrintRequestAttributeSet(); PrintService printService[] = PrintServiceLookup.lookupPrintServices(psInFormat, pras); PrintService myPrinter = null; 遍歷所有打印機如果沒有選擇打印機或找不到該打印機則調(diào)用默認打印機 for (PrintService printService2 : printService) { String svcName = printService2.toString(); if (svcName.contains(printerName)) { myPrinter = printService2; break; if (myPrinter == null) { myPrinter = PrintServiceLookup.lookupDefaultPrintService(); return myPrinter; 版權聲明:本文為CSDN博主「Robert·Ran」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權協(xié)議,轉載請附上原文出處鏈接及本聲明。 原文鏈接:https://blog.csdn.net/qq_38022616/article/details/90296045 |
|
|