更新時(shí)間:2022-04-21 11:16:06 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽6045次
Java調(diào)用打印機(jī)的步驟是怎樣的?動(dòng)力節(jié)點(diǎn)小編來(lái)告訴大家。
1.獲取PrinterJob
一般都用PrinterJob.lookupPrintServices()來(lái)獲取本地配置的打印機(jī)列表
public static PrinterJob getPrintServiceByName(String printerName) throws Exception{
PrinterJob job = PrinterJob.getPrinterJob();
// 遍歷查詢(xún)打印機(jī)名稱(chēng)
boolean flag = false;
for (PrintService ps : PrinterJob.lookupPrintServices()) {
String psName = ps.toString();
// 選用指定打印機(jī),需要精確查詢(xún)打印機(jī)就用equals,模糊查詢(xún)用contains
if (psName.contains(printerName)) {
flag = true;
job.setPrintService(ps);
break;
}
}
if(!flag){
throw new RuntimeException("打印失敗,未找到名稱(chēng)為" + printerName + "的打印機(jī),請(qǐng)檢查。");
}
return job;
}
2.設(shè)置PrinterJob紙張樣式
public static void setPageStyle(PDDocument document, PrinterJob job) {
job.setPageable(new PDFPageable(document));
Paper paper = new Paper();
int width = 215;
int height = 170;
// 設(shè)置打印紙張大小
paper.setSize(width,height); // 1/72 inch
// 設(shè)置邊距,單位是像素,10mm邊距,對(duì)應(yīng) 28px
int marginLeft = 1;
int marginRight = 0;
int marginTop = 10;
int marginBottom = 0;
// 設(shè)置打印位置 坐標(biāo)
paper.setImageableArea(marginLeft, marginRight, width - (marginLeft + marginRight), height - (marginTop + marginBottom));
// custom page format
PageFormat pageFormat = new PageFormat();
pageFormat.setPaper(paper);
// override the page format
Book book = new Book();
// append all pages 設(shè)置一些屬性 是否縮放 打印張數(shù)等
book.append(new PDFPrintable(document, Scaling.ACTUAL_SIZE), pageFormat, 1);
job.setPageable(book);
}
3.打印PDF
public static PDDocument printPdf(String pdfPath, String printerName) throws Exception {
File file = new File(pdfPath);
PDDocument document = PDDocument.load(file);
PrinterJob job = getPrintServiceByName(printerName);
setPageStyle(document, job);
// 開(kāi)始打印
job.print();
return document;
}
相關(guān)閱讀
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話(huà)與您溝通安排學(xué)習(xí)