PDF模版制作以及用iText生成PDF

最近有个需求,下载PDF类型的文件,故需要实现如下功能:

1、制作PDF模版

2、使用iText下载pdf


制作pdf模版,我是下载的Adobe Acrobat Pro DC制作的,当然网上也有,但是好多图片没显示,看的很着急,所以自己整理一份。

对于新手来说,这个软件使用还是需要一番摸索的,来说一下我的制作流程:

1.1、现有一个模版,用Adobe调模版还是挺麻烦的,所以还是使用word来制作模版,制作好模版之后,转成pdf格式。文件-另存为-保存为PDF的格式。


1.2、用Adobe打开刚才导出的PDF。

右侧工具栏里选择 准备表单 ,然后从菜单里拉出 添加“文本”域 ,在你想要填充的地方设置填充的name。也可以双击弹出文本域属性,可以设置名称,字体,大小等。


2.1、pdf模版制作好之后,就可以使用啦。用iText导出pdf,需要引入相关jar包。

compile group: 'com.itextpdf', name: 'itextpdf', version: '5.5.11'
compile group: 'com.itextpdf', name: 'itext-asian', version: '5.2.0' 
2.2、导出pdf
@Test
    public void fromPDFTempletToPdf() {
        String fileName = "/Users/jennifer/Downloads/test.pdf"; //pdf模版
        FileOutputStream fos = null;
        try {
            PdfReader reader = new PdfReader(fileName);
            fos = new FileOutputStream("/Users/jennifer/Downloads/test_out.pdf"); //生成pdf的位置
            PdfStamper ps = new PdfStamper(reader, fos);

            AcroFields s = ps.getAcroFields();
//            BaseFont bf = BaseFont.createFont("STSong-Light","UniGB-UCS2-H",BaseFont.NOT_EMBEDDED);
//            s.setFieldProperty("entpName","textfont",bf,null); //设置中文格式
            s.setField("Text3", "2011-04-05");

            ps.setFormFlattening(true);
            ps.close();
            reader.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }  finally {
            try {
                if (fos != null) {
                    fos.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

    }

说明下,如果pdf填充值有中文的话,则需要设置中文格式。但是我个人感觉这个中文格式设置之后,英文的显示不好看。
所以我是在设置文本域的时候,在文本域属性的 外观-字体 里设置的字体:简-宋。导出的pdf字体效果就正常了。


Adobe Acrobat Pro DC软件下载地址:https://ardownload2.adobe.com/pub/adobe/acrobat/mac/DLM/Trial/acrobatproDC_00000000000000000000000804.dmg


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值