计算机系统应用教程网站

网站首页 > 技术文章 正文

Java | 调用打印机打印PDF文件 java调用打印机打印pdf文件

btikc 2024-10-23 09:10:57 技术文章 9 ℃ 0 评论

1、功能描述

Win10系统下,在Java程序中调用指定名称的打印机打印PDF文件。

2、添加Maven依赖

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

Apache PDFBox 是一个开源的 Java 类库,用于处理 PDF 文档。它提供了一组功能丰富的 API,用于创建、修改、解析和提取 PDF 文档的内容。

3、示例代码

  • 获取系统中所有可用的打印机服务
  • 获取指定名称的打印机服务
  • 创建打印任务,并关联打印机服务
  • 创建打印配置属性
  • 加载文件输入流,创建PDDocument对象
 
 import org.apache.pdfbox.pdmodel.PDDocument;
 import org.apache.pdfbox.printing.PDFPageable;
 
 import javax.print.PrintService;
 import javax.print.PrintServiceLookup;
 import javax.print.attribute.HashPrintRequestAttributeSet;
 import javax.print.attribute.standard.Copies;
 import javax.print.attribute.standard.MediaSizeName;
 import java.awt.print.PrinterJob;
 import java.io.FileInputStream;
 import java.util.Arrays;
 import java.util.Objects;
 import java.util.Optional;
 
 public class PrinterDemo {
     public static void main(String[] args) throws Exception {
 
         // 打印机名称
         String printerName = "Brother DCP-7180DN Printer";
 
         // 获取系统中所有可用的打印机服务
         PrintService[] printServices = PrintServiceLookup.lookupPrintServices(null, null);
 
         // 根据打印机名称获取打印机服务
         Optional<PrintService> optional = Arrays.stream(printServices).filter(
                 item -> Objects.equals(printerName, item.getName())
         ).findFirst();
 
         // 如果存在名称对应的打印机服务
         if (optional.isPresent()) {
 
             // 打印机名称对应的打印机服务
             PrintService printService = optional.get();
             // 创建打印任务
             PrinterJob printerJob = PrinterJob.getPrinterJob();
             // 将新创建的打印任务与打印机服务关联起来
             printerJob.setPrintService(printService);
 
             // 创建打印配置属性
             HashPrintRequestAttributeSet attributes = new HashPrintRequestAttributeSet();
             // 设置打印份数为1份
             attributes.add(new Copies(1));
             // 设置纸张大小为A4,还可以添加更多属性,如纸张大小、方向等
             attributes.add(MediaSizeName.ISO_A4);
 
             // 创建一个文件输入流
             FileInputStream fis = new FileInputStream("F:\\blank.pdf");
             // 加载文件输入流,生成一个PDDocument对象
             PDDocument document = PDDocument.load(fis);
             // 设置打印任务的文件源
             printerJob.setPageable(new PDFPageable(document));
             // 设置打印属性
             printerJob.print(attributes);
             // 关闭文件输入流,释放资源
             fis.close();
         } else {
             System.out.println("没有找到打印机!");
         }
     }
 }



本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表