栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java 创建pdf

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java 创建pdf

一、常用根据模板创建pdf两种方式
  1. (创建**.ftl模板**)文本复制到word -> 转html -> 写好模板参数 -> 转成.ftl
    (使用模板)获取.ftl文件 -> 填充参数 -> 转html -> 创建pdf

    将要生成pdf的文本复制到word,在要填充参数的地方写上${}(FTL语法),再转换成html(这里注意不要用word自带的另存为转成html,会出现字符编码、缺少标签等很多的问题),将html文件的后缀改成.ftl,这样这个.ftl文件就是搞好的pdf模板了。

  2. 直接创建pdf模板,使用Adobe Acrobat DC工具给pdf填充文本域,保存后即为模板。(使用模板)获取pdf模板 -> 填充参数 -> 创建pdf

这篇文章就先只介绍方式2(pdf模板创建pdf)


二、使用pdf模板创建pdf 1.创建PDF模板

工具资源https://download.csdn.net/download/qq_43647116/46414910

我使用的是Adobe Acrobat DC工具,以下操作为该软件的流程。
1.将要制作为模板的pdf用Adobe Acrobat DC打开,如下界面。

2.找到并点击准备表单,工具 ->表单和签名->准备表单,点击后选择开始即可。


3.添加文本域
工具会自动查找需要添加文本域的地方,还是挺智能的,也可以手动添加。如果添加图片,也要使用文本域,虽然有个图片域,但是使用图片域添加图片不能对图片进行缩放。

4.保存后就是项目中要用的pdf模板啦。

Java实现代码

所需依赖


            com.itextpdf
            itextpdf
            5.5.13.2
        
        
        
            com.itextpdf
            itext-asian
            5.2.0
        

代码

public class CreatePdf {
    public static void main(String[] args) throws Exception {
        createPdf();
    }

    
    public static void createPdf() throws Exception {
        // 填充创建pdf
        PdfReader reader = null;
        PdfStamper stamp = null;
        String pdfTemplatePath = "D:\idea\workspace\project\project_1\project\test\src\main\resources\template.pdf";
        String createPath = "D:\idea\workspace\project\project_1\project\test\src\main\resources\";
        try {
            reader = new PdfReader(pdfTemplatePath);
            String time = new SimpleDateFormat("dd-HH-mm-ss").format(new Date());
            // 创建生成报告名称
            File stampFile = new File(createPath, time + ".pdf");
            stamp = new PdfStamper(reader, new FileOutputStream(stampFile));
            // 取出报表模板中的所有字段
            AcroFields form = stamp.getAcroFields();
            // 填充数据,对应文本域名称
            // form.setField("fill_1", "张三");
            // form.setField("fill_2", "21");
            form.setField("fill_3", "2021");
            form.setField("fill_4", "21");
            form.setField("fill_5", "91");
            // 实际项目中可以遍历map装入数据
            // for (Entry entry : map.entrySet()) {
            //     form.setField(entry.getKey(), entry.getValue());
            // }
            // 插入图片
            int pageNo = form.getFieldPositions("image").get(0).page;
            Rectangle signRect = form.getFieldPositions("image").get(0).position;
            float x = signRect.getLeft();
            float y = signRect.getBottom();
            // 图片路径,url或绝对路径都可
            Image image = Image.getInstance("https://pics1.baidu.com/feed/f2deb48f8c5494ee9189fe82cd246ff89b257ede.jpeg?token=e5fe9ba1fd2d2324f8981468d8ad329a");
            // 获取操作的页面
            PdfContentByte under = stamp.getOverContent(pageNo);
            // 根据域的大小缩放图片
            image.scaleToFit(signRect.getWidth(), signRect.getHeight());
            // 添加图片
            image.setAbsolutePosition(x, y);
            under.addImage(image);

            // 这里true表示pdf可编辑
            stamp.setFormFlattening(true);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (stamp != null) {
                stamp.close();
            }
            if (reader != null) {
                reader.close();
            }
        }
    }

}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/584355.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号