java 调用打印机打印PDF文件

1.Java Print Service

Java Print Service是Java自带的打印框架,所在的包javax.print.PrintService;。

这种方案局限性比较大,只能打印PNG文件(廉价打印机不支持打印PDF)

 

2.Apache PDFBox

它的打印实现也是封装了Java Service Print框架的打印功能,支持性比较好

引入maven

<dependency>
    <groupId>org.apache.pdfbox</groupId>
    <artifactId>pdfbox</artifactId>
    <version>2.0.8</version>
</dependency>

代码

// 使用打印机的名称
String printName = "Win32 Printer : Microsoft Print to PDF";
String pdfPath = "D:\test.pdf";
File file = new File(pdfPath);
// 读取pdf文件
PDDocument document = PDDocument.load(file);
// 创建打印任务
PrinterJob job = PrinterJob.getPrinterJob();
// 遍历所有打印机的名称
for (PrintService ps : PrinterJob.lookupPrintServices()) {
String psName = ps.toString();
    // 选用指定打印机
    if (psName.equals(printerName)) {
        isChoose = true;
        job.setPrintService(ps);
        break;
    }
}

job.setPageable(new PDFPageable(document));

Paper paper = new Paper();
// 设置打印纸张大小
paper.setSize(598,842); // 1/72 inch
// 设置打印位置 坐标
paper.setImageableArea(0, 0, paper.getWidth(), paper.getHeight()); // no margins
// custom page format
PageFormat pageFormat = new PageFormat();
pageFormat.setPaper(paper);
// override the page format
Book book = new Book();
// append all pages 设置一些属性 是否缩放 打印张数等
book.append(new PDFPrintable(document, Scaling.ACTUAL_SIZE), pageFormat, 1);
job.setPageable(book);
// 开始打印
job.print();

 

 

 

 

 

 

 

  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值