欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java开发使用 itextpdf 输出 pdf文件

程序员文章站 2022-04-15 17:45:03
有时候我们需要用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

相关标签: java itextpdf