首页 >pdf操作 > 内容

pdf生成模板

2022年12月27日 21:00
一:导入jar<dependency>   <groupId>com.itextpdf</groupId>   <artifactId>itextpdf</artifactId>   <version>5.4.3</version></dependency><!-- https://mvnrepository.com/artifact/itext/itext --><dependency>   <groupId>itext</groupId>   <artifactId>itext</artifactId>   <version>1.3</version></dependency>

二:使用Adobe Acrobat DC 编辑模板

三:编写代码

/**    *     * @param o 写入的数据    * @param out 自定义保存pdf的文件流    * @param templatePath pdf模板路径    */   // 利用模板生成pdf    public  void fillTemplate(Map<String,Object> o,ServletOutputStream out,String templatePath) {        PdfReader reader;        ByteArrayOutputStream bos;         PdfStamper stamper;        try {            BaseFont bf = BaseFont.createFont("c://windows//fonts//simsun.ttc,1" , BaseFont.IDENTITY_H, BaseFont.EMBEDDED);            Font FontChinese = new Font(bf, 2, Font.NORMAL);            reader = new PdfReader(templatePath);// 读取pdf模板            bos = new ByteArrayOutputStream();            stamper = new PdfStamper(reader, bos);            AcroFields form = stamper.getAcroFields();            java.util.Iterator<String> it = form.getFields().keySet().iterator();            form.addSubstitutionFont(bf);            while (it.hasNext()) {                String name = it.next().toString();                String value = o.get(name)!=null?o.get(name).toString():null;                form.setField(name,value);            }            stamper.setFormFlattening(true);// 如果为false那么生成的PDF文件还能编辑,一定要设为true            stamper.close();            Document doc = new Document();            PdfCopy copy = new PdfCopy(doc, out);            doc.open();            PdfImportedPage importPage = copy.getImportedPage(new PdfReader(bos.toByteArray()), 1);            copy.addPage(importPage);            doc.close();        } catch (IOException e) {            System.out.println(e);        } catch (DocumentException e) {            System.out.println(e);        }    }}

controller调用

public String  xxxController(HttpServletResponse response){//常见map集合    Map<String,Object> map = new HashMap<>();    map.put("name","名字"); /*// 设置response参数,可以打开下载页面    response.reset();    response.setCharacterEncoding("UTF-8");    // 定义输出类型    response.setContentType("application/PDF;charset=utf-8");    response.setHeader("Content-Disposition", "attachment; filename=" + "assessment.pdf");*/    try {        ServletOutputStream out = response.getOutputStream();        PdfUtil pdf = new PdfUtil();//src/main/resources/static/swagger/images/msgh.pdf   模板路径记得更换自己的,我放在项目里面了        pdf.fillTemplate(map ,out,"src/main/resources/static/swagger/images/msgh.pdf");    } catch (IOException e) {        // TODO Auto-generated catch block        e.printStackTrace();    }    return null;}


参考文章:https://blog.csdn.net/xiaohuozi_97/article/details/126968579

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时候联系我们修改或删除,在此表示感谢。

特别提醒:

1、请用户自行保存原始数据,为确保安全网站使用完即被永久销毁,如何人将无法再次获取。

2、如果上次文件较大或者涉及到复杂运算的数据,可能需要一定的时间,请耐心等待一会。

3、请按照用户协议文明上网,如果发现用户存在恶意行为,包括但不限于发布不合适言论妄图

     获取用户隐私信息等行为,网站将根据掌握的情况对用户进行限制部分行为、永久封号等处罚。

4、如果文件下载失败可能是弹出窗口被浏览器拦截,点击允许弹出即可,一般在网址栏位置设置

5、欢迎将网站推荐给其他人,网站持续更新更多功能敬请期待,收藏网站高效办公不迷路。

      



登录后回复

共有0条评论