使用itextpdf完成PDF模板类制作、使用


前言

大家项目中大家或多或少的有啥用到导出功能,有excel的还有pdf的,本文我们就拿pdf来说事,为啥呢,因为excel有阿里的easyExcel用起来很方便,这里就不介绍了。

一、根据公司业务人员提供的模板,生成对应的PDF文件?

二、使用步骤

1.引入库


            <dependency>
                <groupId>com.itextpdf</groupId>
                <artifactId>itextpdf</artifactId>
                <version>5.5.6</version>
            </dependency>
            <dependency>
                <groupId>com.itextpdf</groupId>
                <artifactId>itext-asian</artifactId>
                <version>5.2.0</version>
            </dependency>
正确导入依赖,采用jdk8,下面开始进入正题!

2.面向对象的正确使用方式,有了对象就等于可以为所欲为

代码如下(示例):

 1、创建文档对象Document

//其中的参数是页边距,可以根据需求添加数据!!!注意这里1厘米=28.3527磅,使用的单位是磅
Document document = new Document(PageSize.A4, 36.85f, 31.18f, 65.19f, 0);

2、创建文件对象PdfWiter

//创建文件对象,把文档对象和输出目的地添加进来
PdfWriter writer = PdfWriter.getInstance(document, outputStream);

3、创建基础字体和字体对象BaseFont和Font

//使用宋体还是黑体呢?还是其他的自行设置,不会的百度
BaseFont littleTitleFont = BaseFont.createFont("static\\font\\simsun.ttc,0","UniGB-UCS2-H",BaseFont.NOT_EMBEDDED);
//使用Font对象设置上面BaseFont字体的大小和字体使用格式
Font font = new Font(baseFont,12f,  Font.NORMAL);

4、创建段落对象Paragraph

//创建一个段落用来放你写的内容,使用自己设置好的font,对象可以设置排列方式
Paragraph elements = new Paragraph("weiweicaishen威威财神",font);

5、创建PDF页表对象

//参数表示:如果两个代表是一行两列,16和65代表列的大小,自行根据实际设置,
//对象table有了,你有可以为所欲为了,自行进入方法查看fild和method
PdfPTable table = new PdfPTable({16f, 65f});

6、这里注意PDF页表对应一个格式的,如要需要新的格式需要创建新的对象,然后为所欲为

7、创建PDF单元格PdfPCell

//使用段落对象写字,然后添加进单元格,然后个性化单元格
Paragraph paragraph = new Paragraph("身份证号", normal);
        paragraph.setSpacingBefore(4f);
        paragraph.setSpacingAfter(20f);
        cell = new PdfPCell(paragraph);
        // 设置垂直居中
        cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
        cell.setHorizontalAlignment(Element.ALIGN_CENTER);
        cell.setFixedHeight(23.1114f);
        table.addCell(cell);

8、不要忘记把每个独立的PDF页表添加进Document

9、如果公司要求水印,创建PdfGState对象

//拿到内容,从开始到结束都要水印
PdfContentByte pb = wirter.getDirectContent();
        pb .beginText();
        PdfGState gs = new PdfGState();
        gs.setFillOpacity(0.2f);
        pb .setGState(gs);
        pb .setFontAndSize(baseFont,180);
        pb .showTextAligned(Element.ALIGN_CENTER, "Hello vv", 180, 250 , 50);
        pb .endText();

总结

面向对象的概念需要细细揣摩,找到了对象就可以为所欲为了!!!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值