java根据模板生成PDF文件


1,首先下载,安装 Adobe Acrobat DC

  步骤方法:https://jingyan.baidu.com/article/c14654138d7a9c0bfcfc4ce9.html

2,新建一个Word模板,转成PDF格式

3,通过 Adobe Acrobat DC工具打开保存好的PDF文件

4,点击右边准备表单

 

 

过程一

 

 *** (模板中的fell_*,这些变量需要删除重新写一遍,不然数据存不进去)

过程二

4.准备好模板以后开始写Java代码

  首先导入所需jar包

  过程四

 

5.具体代码实现

  1,模板

    private static final String TEMPLATE_PATH="/template/XXX.pdf";

  2.读取模板位置

    //Award award=数据对象;

    //===award==为要导出的对象数据

    PdfReader reader=new PdfReader(TEMPLATE_PATH);

    ByteArrayOutputStream bos=new ByteArrayOutPutStream();

    PdfStamper ps=new PdfStamper(reader,bos);

    AcroFields s=ps.getAcroFields();

    //=====解决中文不显示的问题,注意需要引入itext-asian.jar包

    BaseFont bf=BaseFont.createFont("STSong-Lignt","UniGB-USC2-H",BaseFont.Not_EMBEDDEL);

    //====填充PDF

    //姓名

    s.setFieldProperty("fill_1","testfont",bf,null);

    if(award,getName()!=null){

      s.setField("fill_1",award.getName());

    }

 

    //性别

    s.setFieldProperty("fill_2","testfont",bf,null);

    if(award.getSex()!=null){

      if(award.getSex()==0){

        s.setField("fill_2","男");

      }else if(award.getSex()==1){

        s.setField("fill_2:,"女");

       }

     }

     //身份证号

      s.setFieldProperty("fill_3","testfont",bf,null);

     if(award.getNumberID() != null) {

        s.setField("fill_3",award.getNumberID());

     }

     //模板中的图片的位置--图片

     AcroFields from=ps.getAcroFields();

    String imgpath=declaration.getFilePath();

    int pageNo=from.getFieldPositions("Text1").get(0).page;

    Rectangle signRect=from.getFieldPosition("Text1").get(0).position;

    float x=signRect.getLeft();

    float y=signRect.getBottom();

    //根据路径读取图片

    Image image=Image.getInstance(imgpath);

    //获取图片页面

    PdfContentByte under=ps.getOverContent(pageNo);

    //图片大小自适应

    image.scaleToFit(signRect.getWidth(),signRect.getHeight());

    //添加图片

    image.setAbsolutePostion(x,y);

    unser.addImage(image);

 

    ps.setFormFlattening(true);

    ps.close();

 

    //收尾--重新生成PDF

    File file=new File(Contants.ROOT_PATH+Contants.BASE_PATH+declaration.getDocumentPath();

    if(!file.exists()) {

      file.mkdirs();

    }

    String path=Contants.ROOT_PATH+Contants.BASE_PATH+

    declaration.getDocumentPath()+File.separatorChar+declaaaration.getName()+".pdf";

    FileOutputStream fos=new FileOutputStream(path);

    fos.write(bos.toByteArray());

    fos.flush();

    fos.close();

    return path;

 

  修改字体大小方式

  打开Adobe acrobat pro dc ,双击表单字段

  图三


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM