java 控制打印机打印PDF

mac2024-03-25  32

package com.str.str.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.*; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.net.URL; public class PrintTest { public static void printFile(String fileUrl, PrintService printService, String jobName) throws Exception { File url = new File(fileUrl); // 读取pdf文件 PDDocument document = PDDocument.load(url); // 创建打印任务 PrinterJob job = PrinterJob.getPrinterJob(); job.setPageable(new PDFPageable(document)); job.setPrintService(printService); //设置打印页面 job.print(); } /** * printerName 指定打印机名称 * * @Author: Robert·Ran * @CreateTime: 2019/5/17 11:59 * @Description: 指定打印机, 若无指定打印机则调用默认打印机 */ 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; // 遍历所有打印机如果没有选择打印机或找不到该打印机则调用默认打印机 for (PrintService printService2 : printService) { String svcName = printService2.toString(); if (svcName.contains(printerName)) { myPrinter = printService2; break; } } if (myPrinter == null) { myPrinter = PrintServiceLookup.lookupDefaultPrintService(); } return myPrinter; } }

main函数调用:

public static void main(String[] args) { try { PrintTest.printFile("D:\\AAA.PDF",PrintTest.specifyPrinter("aaa"),"222"); }catch (Exception e){ System.out.println(e.getMessage()); } }
最新回复(0)