一、在pom文件中引入对应的包:
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>2.0.6</version>
</dependency>
二、在项目中添加代码:
public static void printPDFFile(String fileName) throws Exception {
File file = new File(fileName);
PDDocument document = null;
try {
document = PDDocument.load(file);
PrinterJob printJob = PrinterJob.getPrinterJob();
printJob.setJobName(file.getName());
//查找所有的可用打印服务
PrintService[] printServices = PrinterJob.lookupPrintServices();
if (printServices == null || printServices.length == 0) {
throw new CustomException(123, "未找到可用打印机,请检查!");
}
//定位默认的打印服务
PrintService defaultService = PrintServiceLookup.lookupDefaultPrintService();
printJob.setPrintService(defaultService);
//设置纸张及缩放
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();
} finally {
if (document != null) {
try {
document.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
public static Paper getPaper() {
Paper paper = new Paper();
// 默认为A4纸张,对应像素宽和高分别为 595, 842
int width = 595;
int height = 842;
// 设置边距,单位是像素,10mm边距,对应 28px
int 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;
}
public static void main(String[] args) throws Exception {
printPDFFile("D:\\测试文档.pdf");
}
关于打印时PDF缩放的问题:
package org.apache.pdfbox.printing;
public enum Scaling {
//实际大小
ACTUAL_SIZE,
//缩小
SHRINK_TO_FIT,
//拉伸
STRETCH_TO_FIT,
//自适应
SCALE_TO_FIT;
private Scaling() {
}
}