itext 生成pdf 输出特殊符号_Java组件生成PDF文件

d96860b641a00920b48a8128f3c8ec9e.png

Java组件生成PDF文件

前言

最近和一位朋友聊自己微信小程序的事情,朋友的建议将小程序的文章给去掉,增加一个新的功能,他说我写的文章很鸡肋。自己听完之后内心及其犹豫,一方面自己也很清楚自己的文字的功底确实不行,写的技术文章没多少人看,但是一直想这个能锻炼出来。另一方面虽然文章没人看,但是文章的功能是自己一点一点写出来的,让我隐藏起来,我确实有点不想接受。

犹豫几天,还是决定去除这个功能,刚好最近对于后台的重构也在进行,所以决定来一个大的改版(估计需要一段时间才能真正上线新的功能)。

今天的文章,也就是在准备的过程中实现的一个功能-导出PDF。

组件选用

在日常的工作中,利用POI导出Excel的功能需求自己做了不少,但是导出PDF确实是第一次做,在百度上进行一番查阅,发现大家基本都是使用Abode的iText组件来生成PDF

所以这里也随大流,选用iText,官网上iText已经到7了,但是百度搜索的案例中,大多用的都是iText5,这里考虑自己对iText不熟悉,所以还是根据案例也选用5,一方面,入手快有现成的代码可以复制,另一方面用的人多,对于一些常见的坑,填的人也会多,自己就不用一点点摸索了

当然了,如果愿意摸索,可以去官网看案例和API,下面附上官网地址:https://itextpdf.com/en

开发记录

引入依赖文件

com.itextpdfitextpdf5.5.13com.itextpdfitext-asian5.2.0

创建Document对象,三种方式:

Document document =new Document(); // 默认页面大小是A4

Document document =new Document(PageSize.A4); // 指定页面大小为A4

Document document =new Document(PageSize.A4,50,50,30,20); // 指定页面大小为A4,且自定义页边距(marginLeft、marginRight、marginTop、marginBottom)

创建PdfWriter对象

第一个参数是对文档对象的引用

第二个参数是需要写入的PDF文件的实际路径。我们也可以使用字节数组流实现。

 //实际文件 File file = new File("/Users/chenlong/Documents/test.pdf"); PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(file)); //字节数组流 ByteArrayOutputStream baos = null; baos = new ByteArrayOutputStream();//构建字节输出流 PdfWriter.getInstance(doc,baos);//将PDF文档对象写入到流

Write对象创建完的操作

首先打开documet(这个过程就像我们创建一个空的pdf文件,然后打开来创作一样)

然后开始写入数据

设置文档属性

最后关闭

 document.open(); document.addTitle("标题"); document.addAuthor("每天学Java"); document.addSubject("测试报表"); document.addKeywords("关键字"); document.addCreator("陈龙"); new PDFUtil().generatePDF(document, reportVO); document.close();

而generatePDF方法是自定义的方法,对于文档内容的填充。

通常我们会用到的内容内容类有:

段落Paragraph表格table单元格内容样式cell 直线 LineSeparator点线 DottedLineSeparator超链接 Anchor添加图片 Image定位 Anchor水印功能Watermark内部类,需要继承 PdfPageEventHelper类writer.setPageEvent(new Watermark());

里面的详细属性这里就不在说了,我们只看简单的段落

 //字体大小,粗细,颜色 Font titlefont = new Font(bfChinese, 16, Font.BOLD,, BaseColor.RED); //段落 Paragraph paragraph = new Paragraph("测试报表
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值