首页 > 编程语言 >Java操作打印机打印PDF

Java操作打印机打印PDF

时间:2024-07-21 17:57:23浏览次数:16  
标签:打印机 Java java 打印 job import PDF document PrinterJob

话不多说,直接上代码。

首先jar包依赖:

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

 用于从给定的FileInputStream中加载PDF文档,并通过打印对话框进行打印。若本地没有安装打印机服务可能会报错的哟(一般电脑都自带)。

 

package com.example.printForThis;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.printing.PDFPageable;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Date;

/**
 * @author 小蔡同学
 * @version 1.0
 * @date 2024/7/18 0:00
 */
public class print {
   

    public static void printWithDialog( FileInputStream inputStream){
        PDDocument document = null;
        try {
            //打印字节流文件
            document = PDDocument.load(inputStream);
            //打印本地文件
            //document = PDDocument.load(new File(filePath));
        
            PrinterJob job = PrinterJob.getPrinterJob();
            job.setPrintService(PrinterJob.lookupPrintServices()[0]);
            job.setPageable(new PDFPageable(document));
            job.setJobName("测试打印API");
            job.setCopies(1);

            if (job.printDialog()) {
                job.print();
            }
        } catch (IOException e) {
            e.printStackTrace();
        } catch (PrinterException e) {
            e.printStackTrace();
        }finally {
            //关闭文档流
                try {
                    inputStream.close();
                    if (document != null) document.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
        }
    }
}

 关于以上方法的一些解释:

  • 使用PrinterJob.getPrinterJob()获取一个打印任务实例。
  • 使用job.setPrintService(PrinterJob.lookupPrintServices()[0]);设置默认的打印服务。这里只选择了第一个打印服务,但在实际应用中,你可能需要让用户选择第几个打印机。
  • 使用job.setPageable(new PDFPageable(document));设置要打印的页面内容。
  • 使用job.setJobName("测试打印API"+new Date());设置打印任务的名称。
  • 使用job.setCopies(1);设置打印份数为1。

标签:打印机,Java,java,打印,job,import,PDF,document,PrinterJob
From: https://blog.csdn.net/weixin_59862030/article/details/140591019

相关文章

  • Java计算机毕业设计家庭装修套餐消费管理(开题报告+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着人们生活水平的提高,家庭装修已成为现代家庭生活中不可或缺的一部分。然而,传统的家庭装修过程往往繁琐复杂,涉及多个环节和众多参与者,导致信息不对......
  • Java计算机毕业设计老来福平台(开题报告+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着老龄化社会的加速到来,如何为老年人提供高质量、个性化的养老服务成为亟待解决的问题。传统的养老模式已难以满足老年人日益增长的需求,特别是在信......
  • Java计算机毕业设计浪漫屋婚纱影楼管理系统(开题报告+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着婚礼文化的日益丰富与个性化需求的不断增长,婚纱影楼行业迎来了前所未有的发展机遇与挑战。传统的人工管理模式已难以满足高效、精准、个性化的服......
  • 推荐大家学习JAVA结合Al
    AI辅助下的Java学习计划目标设定-**初级阶段**:掌握Java基础语法,理解面向对象编程思想。-**进阶阶段**:熟练运用集合、多线程、网络编程等高级特性。-**实战项目**:完成至少两个综合项目,利用AI辅助提升代码质量和开发效率。-**理论深化**:深入学习Java虚拟机(JVM)原理、设......
  • JAVA中的方法
    什么是方法方法就是函数,由代码片段构成,用于实现特定的功能。方法的定义及调用方法包括两个部分:方法头和方法体。修饰符返回值类型方法名(参数类型参数名){​ 方法体​ return返回值;}publicstaticvoidmain(){max(10,20);}publicstaticintmax(inta,int......
  • java基于ssm+vue 药品网购平台
    1用户前台功能模块1.1前台首页前台首页详情页面:首页、药品信息、疫情常识、保健品推荐、个人中心、后台管理、购物车等操作。程序效果图如下图1所示:前台页面等内容,如图1所示。 1.2个人中心在前台页面查看个人中心用户注册、登录,程序效果图如下图2所示:图2个人中心信息......
  • Java 多线程
    文章目录一、概念二、实现方式2.1Thread类2.2Runnable接口三、常用方法3.1基本方法3.2线程优先级3.3守护线程3.4礼让线程3.5插队线程四、线程安全问题4.1同步代码块4.2同步方法4.3lock()五、线程生命周期一、概念在Java中,多线程是指在一个程序中同......
  • Java 网络编程
    文章目录一、概念二、网络编程三要素三、UDP通信3.1发送端3.2接收端3.3运行结果四、TCP通信4.1发送端4.2接收端4.3运行结果五、三次握手、四次挥手5.1三次挥手(建立连接)5.5四次挥手(数据完整)一、概念在Java中,网络编程指的是计算机之间通过网络来进行通......
  • JAVA:异常
      一.异常概述1.异常体系根类:子类描述java.lang.Throwabljava.lang.ErrorError:严重错误Error,无法通过处理的错误,只能事先避免,例如:栈内存溢出错误,服务器宕机,数据库崩溃...好比绝症。java.lang.Exception(常用)Exception:表示异常,异常产生后程序员可以通过代码的方式纠正......
  • C++ PDF PoDoFo库使用教程
    #include<podofo/podofo.h>#include<iostream>//AllPoDoFoclassesarememberofthePoDoFonamespace.//usingnamespacestd;usingnamespacePoDoFo;PdfFont*getFont(PdfDocument&doc);//Base14+othernon-Base14fontsforcomparis......