700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 使用java导出pdf文件

使用java导出pdf文件

时间:2020-08-09 15:28:17

相关推荐

使用java导出pdf文件

使用java导出pdf文件

itextitext的使用 JasperReportsJasperReports与itext的区别Jaspersoft Studio工具简介Jaspersoft Studio的下载安装Jaspersoft Studio的使用Static TextImageParametersFields 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的功能,可以转到/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的下载安装

官网下载链接: /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";pileReportToFile(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";pileReportToFile(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);

效果就是

感谢观看到这里

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。