当前位置: 移动技术网 > IT编程>开发语言>Java > Java开发使用 itextpdf 输出 pdf文件

Java开发使用 itextpdf 输出 pdf文件

2020年08月01日  | 移动技术网IT编程  | 我要评论
有时候我们需要用java制作pdf,制作pdf每个人有不同的方法,我一般使用的是itextpdf。下面介绍制作输出pdf的流程。

有时候我们需要用java制作pdf,制作pdf每个人有不同的方法,我一般使用的是itextpdf。
我制作pdf流程:
1、声明字体和文件格式:
我们可以预先声明多个字体和文件格式,这里我一般是直接声明一个中文的文字格式,因为如果不声明中文的文字格式,下面如果使用到了中文,可能就不会显示。一般代码如下:
BaseFont bfChinese = BaseFont.createFont(“STSong-Light”, “UniGB-UCS2-H”, BaseFont.NOT_EMBEDDED);
Font title = new Font(bfChinese, 20, Font.BOLD);
2、建立pdf文件
建立pdf文件和建立其他类型的文件一样
File f = File.createTempFile(“name”, “.pdf”);
如果你需要文件的位置可以使用f.getAbsolutePath(),这个是详细位置,如果只想要名字就是用f.getName()
这样你就建立一个空白的pdf文件。
3、往文件里放入纸张
我们如果想要在pdf文件书写内容,那我们必须往pdf里放入纸张

 //设置纸张大小对象
            Rectangle rectangle = new Rectangle(PageSize.A4);
            //创建一页纸
            Document document = new Document(rectangle); 

经过上述操作,你可以加入一张纵向的A4大小纸张,当然你也可以用Document document = new Document(rectangle.rotate());插入一张横向的纸张
4、建立书写器
有了纸张我们还不可以在pdf里书写,因为我们还缺少一支笔,所以我们还需要创建一个书写器
PdfWriter.getInstance(document, new FileOutputStream(pdfUrl));
document.open();
上述代码可以邦之我们创建一个在pdf里书写的书写器。
5、书写内容
有了纸笔我们就可以进行书写,不同人有不同的书写习惯,我一般是创建一个列表将所有的内容放入列表,因为这样方便管理,但是你也可以直接写,这个看个人习惯,就以我的习惯来讲。
我一般会创建一个table,并对其定义好,例如:
PdfPTable tablePlace = new PdfPTable(8);
tablePlace.setWidthPercentage(100);
tablePlace.setSpacingBefore(10f);
tablePlace.setSpacingAfter(10f);
有了表格我就可以很轻松地添加内容。
PdfPCell cell= new PdfPCell(new Phrase(“text”));
tablePlace.addCell(cell);
这是声明一格并往表格里添加的内容的代码,在将cell加入table之前我们可以对其进行修饰,例如cell.setHorizontalAlignment(Element.ALIGN_CENTER);则是居中,cell.disableBorderSide(15);这是没有边框,(其中的15=1+2+4+8,1、2、4、8分别代表一条边),cell.setColspan(3);这是合并3个单元格,同时在声明单元格的使用你可以加上字体和样式,比如PdfPCell cell= new PdfPCell(new Phrase(“text”,title));就是将title代表的样式加进来(title是我自己设置的,如何设置看1)(直接加文本与加表格不同,具体为Paragraph test = new Paragraph(“销售票”, title);这里的title同样为样式)(加入表格里有一个十分坑的地方不满一行就不显示,一定要记住这一点)。
6、将表格放入纸上
document.add(tablePlace);
7、关上书写器
document.close();

小提示:如果你检查了几遍代码发现没有错但不能执行,有可能是你导入包导致的,我当初导入了一个加密包导致程序执行有问题,后来删了包就好了,但是不知道为什么。

上面就是我自己的流程如果有什么不对的地方,请大佬们指出来。

本文地址:https://blog.csdn.net/m0_47369944/article/details/108239136

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网