使用java导出pdf文件

  • itext
    • itext的使用
  • JasperReports
    • JasperReports与itext的区别
    • Jaspersoft Studio
      • 工具简介
      • Jaspersoft Studio的下载安装
      • Jaspersoft Studio的使用
        • Static Text
        • Image
        • Parameters
        • Fields
    • Jaspersoft Studio创建模板结合Java
      • 使用JDBC数据源方式填充数据
      • JavaBean数据源方式填充数据

itext

Apache iText 是一个开源 Java 库,支持 PDF 文档的开发和转换。itext是一个很好的工具,对于pdf的创建编辑很灵活,但是也很繁琐,所以也是简单的介绍一下itext

itext的使用

导入maven坐标

<dependency><groupId>com.lowagie</groupId><artifactId>itext</artifactId><version>4.2.2</version>
</dependency>

案例

 Document document = new Document();PdfWriter.getInstance(document, new FileOutputStream("test.pdf"));document.open();document.add(new Paragraph("hello itext"));document.close();

执行代码会在指定的位置输出一个test.pdf的文件,然后文件的内容就是代码中输入的内容

指定文件位置输出的test.pdf文件


test.pdf

这就是itext的介绍了,当然itext的功能远不止于此,如果想继续学习查看itext的功能,可以转到https://www.cnblogs.com/fonks/p/15090635.html,这篇博客对itext的使用有详细的介绍

JasperReports

JasperReport是一个强大、灵活的报表生成工具,能够展示丰富的页面内容,并将之转换成PDF,HTML,或者XML格式。该库完全由Java写成,可以用于在各种Java应用程序,包括J2EE,Web应用程序中生成动态内容。

JasperReports与itext的区别

本篇重点介绍的是JasperReports,那么对于JasperReports与itext的区别是什么呢

Jasper是一个使用iText生成PDF的PDF库。 iText是一个用于创建和操作PDF的库。如果您的目的是生成报告,我会坚持使用Jasper。但是,如果您希望生成更多不是报告的PDF,可以查看iText库。

JasperReports更多的是需要结合工具来一起使用,使用工具Jaspersoft Studio来生成一个报表的模板文件,然后JasperReports往这个模板文件中填充数据,相比于iText简化了很多的流程与步骤。

Jaspersoft Studio

在介绍JasperReports与itext的区别的时候强调了JasperReports需要和Jaspersoft Studio工具结合起来一起使用,先介绍一下Jaspersoft Studio。

工具简介

Jaspersoft Studio是JasperReports库和JasperReports服务器的基于Eclipse的报告设计器; 它可以作为Eclipse插件或作为独立的应用程序使用。Jaspersoft Studio允许您创建包含图表,图像,子报表,交叉表等的复杂布局。您可以通过JDBC,TableModels,JavaBeans,XML,Hibernate,大数据(如Hive),CSV,XML / A以及自定义来源等各种来源访问数据,然后将报告发布为PDF,RTF, XML,XLS,CSV,HTML,XHTML,文本,DOCX或OpenOffice。

Jaspersoft Studio的下载安装

官网下载链接: https://community.jaspersoft.com/project/jaspersoft-studio/resources

下载安装完成打开之后,就是这样一个页面

熟悉eclipse的伙伴可能会觉得眼熟了,确实是这样的,不能说毫无关系吧,只能说一摸一样了

Jaspersoft Studio的使用

首先就是先创建一个模板文件

然后选择一个空白的文件即可

创建出来的文件就是一个空白的模板文件了

看红色的介绍文字可能看不明白,不打紧,这个得对照起来看才能清晰

Static Text

Static Text是一个不会变动得文本格式,可以作用与标题,我们可以把这个元素拖动到这个标题区域中来

编辑文字,字体,字号,对齐方式

然后就可以预览一下了

怎么样,是不是已经学会了呢。

Image

和上面得操作如出一辙,还是把Image元素拖到想要得位置去,然后会弹出一个框吗,我们选择URL方式呈现图片,然后把URL填入之后会加载图片,点击OK即可


可以改变大小,然后点击预览查看一下添加的图片吧


这里可能会引起大家的不适,主要是我做的这个模板太丑了,相信大家会做个比我好很多,好的,基本元素就介绍这些,还有很多需要大家去自己尝试一下,接下来创建的是动态元素

Parameters

首先还是创建一个元素参数,命名为country


然后把这个元素拖到指定位置,设置字体字号对齐方式,点击预览看看效果


这个动态的元素需要填入,填入中国之后,当然在代码中不是这么填入的

接下来就看看表格的生成吧,现在先连接数据库

Fields



填好相关数据,然后引入mysql的连接jar包,然后点击Test



这就表示连接成功了

然后根据上面创建模板的方式再创建一个demo2,但是不同的是这个Data Adapter选择我们新创建的数据连接,然后添加我们需要展示查询的sql,点击next


把需要展示的列全部移动到Fields中去,然后这个动态列表数据就是数据字段的数据了

把这些元素拖到detail区域中去,然后调整一下位置,设置格式,改列名

预览一下看看吧

这种效果对格式有要求哈,要求detail区域和Column Header区域要连在一起且File元素也要连在一起,不然就会成为这样

好的,基本介绍完成之后,现在就和java结合在一起使用吧

Jaspersoft Studio创建模板结合Java

首先是完善demo1模板,这里创建Fields元素,拖动到指定位置,设置格式,完成模板


然后把demo1.jrxml,demo2.jrxml文件复制到项目的resources的文件夹中去,前面我们已经使用Jaspersoft Studio设计了两个模板文件:demo1.jrxml和demo2.jrxml。其中demo2.jrxml的动态列表数据是基于JDBC数据源方式进行数据填充,demo1.jrxml的动态列表数据是基于JavaBean数据源方式进行数据填充

项目中引入maven坐标

<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.27</version>
</dependency><dependency><groupId>net.sf.jasperreports</groupId><artifactId>jasperreports</artifactId><version>6.8.0</version>
</dependency>

使用JDBC数据源方式填充数据

Class.forName("com.mysql.cj.jdbc.Driver");
Connection connection =DriverManager.getConnection("jdbc:mysql://localhost:3306/ele_test?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai&","root","123456");
String jrxmlPath = "D:\\project\\pdf_demo\\src\\main\\resources\\demo2.jrxml";
String jasperPath = "D:\\project\\pdf_demo\\src\\main\\resources\\demo2.jasper";
JasperCompileManager.compileReportToFile(jrxmlPath,jasperPath);
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperPath,map,connection);
String pdfPath = "test2.pdf";
JasperExportManager.exportReportToPdfFile(jasperPrint,pdfPath);

效果就是

JavaBean数据源方式填充数据

Class.forName("com.mysql.cj.jdbc.Driver");
Connection connection =DriverManager.getConnection("jdbc:mysql://localhost:3306/ele_test?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai&","root","123456");
String jrxmlPath = "D:\\project\\pdf_demo\\src\\main\\resources\\demo1.jrxml";
String jasperPath = "D:\\project\\pdf_demo\\src\\main\\resources\\demo1.jasper";
JasperCompileManager.compileReportToFile(jrxmlPath,jasperPath);
List<Map> list = new ArrayList();
String sql = "select * from address";
PreparedStatement preparedStatement = connection.prepareStatement(sql);
ResultSet resultSet = preparedStatement.executeQuery();
while (resultSet.next()) {Map map1 = new HashMap();int id = resultSet.getInt("id");String address = resultSet.getString("address");BigDecimal electricityBill = resultSet.getBigDecimal("electricity_bill");Date createTime = resultSet.getDate("create_time");map1.put("id",id);map1.put("address",address);map1.put("electricityBill",electricityBill);map1.put("createTime",createTime);list.add(map1);
}
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperPath,map,new JRBeanCollectionDataSource(list));
String pdfPath = "test1.pdf";
JasperExportManager.exportReportToPdfFile(jasperPrint,pdfPath);

效果就是

感谢观看到这里

使用java导出pdf文件相关推荐

  1. 咖啡汪日志——JAVA导出pdf文件加水印 文字+图片、文字

    咖啡汪日志--JAVA导出pdf文件加水印 文字和图片.文字 hello,又大家见面了! 作为一只不是在戏精就是在戏精路上的哈士奇,今天要展示给大家的就是如何快捷地给pdf文件增加各种水印.嗷呜呜,前 ...

  2. 「Java工具类」pdf导出工具类java导出pdf文件工具类

    介绍语 本号主要是Java常用关键技术点,通用工具类的分享:以及springboot+springcloud+Mybatisplus+druid+mysql+redis+swagger+maven+d ...

  3. java导出pdf文件并下载_java根据模板生成pdf文件并导出

    1.首先需要依赖包:itext的jar包,我是maven项目,所以附上maven依赖 [html] view plain copy com.itextpdf itextpdf 5.5.10 [html ...

  4. JAVA导出pdf文件

    1.实现结果(没有颜色需求) 2.引入jar包:textpdf-5.513.1.jar 3.纯手打,如果复制可能会报错,建议参考. 关键点:1.主要涉及的类 PdfpTable 和 PdfpCell两 ...

  5. java 使用itext导出PDF文件,中文不显示问题解决

    之前写的java 使用itext 导出pdf 发现有个问题,在今天使用的时候,发现一个问题,就是当单元格中写中文的时候,导出来的pdf中文不显示. java 使用itext导出PDF文件,图片文字左右 ...

  6. Java中导出pdf文件,pdf工具类demo

    最近在做导出pdf文件的功能,参考了很多资料和demo,完成了转出pdf的功能,并适合项目的pdf工具类,现贴出具体的工具类和demo,如有不对的地方欢迎指正 1.pdf工具类PdfUtil.java ...

  7. Java使用Freemarker通过模板文件导出PDF文件、横向显示

    前言: 尝试了不少通过模板文件导出pdf文件的方法,要么实现起来复杂,要么实现效果不理想,经过反复查找资料和尝试发现此方法是最理想的. 本博客又经大量网友实践及建议,经过几次完善修改,又日趋完善,在此 ...

  8. java批量导出pdf文件_java导出pdf文件

    项目中导出pdf文件,需要3个jar包iText-2.1.7.jar,iTextAsian.jar,ReportExprotPlug0.1.jar. ReportInfo info = new Rep ...

  9. JAVA根据PDF文件生成图片

    PDF文件生成图片 实现功能 根据上传的PDF文件,生成图片文件, 单页PDF,生成图片文件. 多页PDF,则生成zip压缩包. 一 : 文件生成效果 二 : 引入所需maven依赖 项目采用spri ...

最新文章

  1. 与Jeff Sutherland谈敏捷领导力
  2. Linux下运行java DES解密失败,报javax.crypto.BadPaddingException:Given final block not properly padded
  3. Linux网络安装(PXE + DHCP+TFTP+ Kickstart+ FTP)
  4. mysql-mha高可用
  5. javascript的prototype继承问题
  6. 8. Andrénalin ★ Serial
  7. mtk充电电流文件_MT2503 系列充电电流问题
  8. 小波变换matlab加密,混沌和小波变换的图像加密压缩算法
  9. 河南科技大学Oracle作业,机械制图作业集第四章答案河南科技大学.ppt
  10. 婚纱租赁APP开发功能模块解析
  11. 进制转换(简单的能看懂就够了)
  12. HFSS仿真侧馈微带天线学习笔记
  13. AD9910使用心得-fanfanStudio
  14. 射命丸文的取材之旅题解
  15. 长虹应用商店服务器连接异常,长虹电视为什么应用商店打不开,上面显示服务器或网络异常,可是网络没问题,还显示sn异常,求解……...
  16. 43、在java中一个类被声明为final类型,表示了什么意思?
  17. ACM模板 | 学习笔记 数学相关
  18. 网易云易盾关于极验所述问题的致歉和说明
  19. 读书笔记之基于龙芯的linux内核探索解析
  20. 《ZigBee学习》点播

热门文章

  1. mysql进阶:optimize table 优化表命令 Table does not support optimize, doing recreate + analyze instead
  2. 论文阅读:EfficientDet:可扩展且高效的目标检测
  3. git撤回上传版本撤多了该如何恢复
  4. java枚举类型enum用法_深入理解java枚举类型enum用法
  5. mysql efbbbf_字符集与字符编码
  6. 服务认证审查员注册常见问题
  7. Hexagon SDK之Audio APPI详解
  8. Photoshop设计精讲精练笔记(五)
  9. word怎么插入长分页符
  10. android baseadapter优化,2.4.6 BaseAdapter优化