Java实现PDF文件生成并且打印pdf文件(附demo)

Java实现PDF生成并且打印pdf文件(附demo)

目录:
		0. 效果预览
		1. 准备环境
		2. Java如何调用打印机进行打印
		3. Java如何生成pdf打印文件
		4. 实现pdf内数据动态填充(可按需求改变数据,有一个模板就行)
效果预览:
  • 说明:以下是根据不同用户数据和自己生成的pdf模板,动态生成的pdf文件,可直接调用打印机打印。
  • 数据可从数据库动态获取并且填充
    在这里插入图片描述
环境准备:
1. java标准开发环境
2. 打印机一台(确保已和设备连接),测试的时候要用,开发没有打印机也行
3. 相关jar包
	- pdfbox
	- itextpdf
	- commons-logging.jar
实现Java调用打印机进行打印文件

之前写过一篇,多种方式,有兴趣的可以看看。点击这里查看

这里使用的是PDFBox方式实现打印,引入PDFBox.jar和commons-logging.jar,嫌麻烦地可以在文章底部下载demo,我把所有相关的jar,源码都放进去了

传入文件对象即可进行打印,打印前请确认打印机是否正常连接!!!!

/**
 * 打印实现类
 * createTime:2018-08-01
 * 
 * @author Jason
 *
 */
public final class JHPrintor {
   
	
	/** 日志记录对象 */
	private static Logger log = Logger.getLogger(JHPrintor.class);

	/** 私有构造器 */
	private JHPrintor() {
   
		
	}
	
	
	/**
	 * 打印pdf文件
	 * 
	 * @param file 需打印的pdf文件
	 */
	public static void print(File file) {
   
		
		try {
   
			
			PDDocument document = PDDocument.load(file);
			// 加载成打印文件
			PDFPrintable printable = new PDFPrintable(document,Scaling.ACTUAL_SIZE);
			PrinterJob job = PrinterJob.getPrinterJob();
			job.setPrintable(printable);
			job.defaultPage();
			job.print();
		} catch (InvalidPasswordException e) {
   
			log.error("打印异常:文档初始化密码失败!");
			PromptUtil.error("初始化文档密码异常,打印失败!");
			e.printStackTrace();
		} catch (IOException e) {
   
			log.error("打印异常!");
			PromptUtil.error("打印异常,请关闭后重试!");
			e.printStackTrace();
		} catch (PrinterException e) {
   
			log.error("未正常连接打印机");
			PromptUtil.error("请检查打印机是否正常连接!");
			e.printStackTrace();
		}
	}
	
}
Java如何生成pdf文件

这个比较复杂,涉及到单元格,表,段落,标题等内容
慢慢来,一步一步讲解一下

/**
 * 生成pdf文件的工具类
 * createTime:2018-08-01
 * 
 * @author Jason
 *
 */
public class JHCreatePDF {
   

	// 日志记录对象
	public static Logger log = Logger.getLogger(JHCreatePDF.class);
	// 系统字体文件在 Windows/Fonts目录下,将其粘到src下即可
	public static final String CHARACTOR_FONT_CH_FILE = "/SIMSUN.TTC,1";  //宋体 常规  
    // 纸张尺寸
    public static final Rectangle PAGE_SIZE = PageSize.A4;   
    // 边距
    public static final float MARGIN_LEFT = 50;   
    public static final float MARGIN_RIGHT = 50;   
    public static final float MARGIN_TOP = 50;   
    public static final float MARGIN_BOTTOM = 50;  
    
    public static final float SPACING = 20;   
       
    // 文件对象   
    private Document document = null;   
    
    private File file;
    
    /**  
     * 功能:创建导出数据的目标文档  
     * @return
     */  
    public void createDocument() {
   
    	// 创建pdf文件
    	FileOutputStream out = null;  
        document = new Document(PAGE_SIZE, MARGIN_LEFT, MARGIN_RIGHT, MARGIN_TOP, MARGIN_BOTTOM);  
		try {
   
			file = File.createTempFile("temp", ".pdf");
		} catch (IOException e1) {
   
			Log.error("创建临时打印文件失败!");
			PromptUtil.error("创建临时打印文件失败,请关闭重试");
			e1.printStackTrace();
			return; // 结束后续运行
		}
         
   
        try {
      
            out = new FileOutputStream(file);   
            PdfWriter.getInstance(document, out);   
            
        } catch (FileNotFoundException e) {
      
            e.printStackTrace(
  • 12
    点赞
  • 63
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值