Java 使用pdf 模板生成pdf文件

——制作流程

1.      使用工具

adobe acrobat dc、word 2015

2.      使用 word 繪制一個 3*5 的表格並保存,如下:

3.      將文檔另存為pdf格式

注:不要使用“另存為adobe pdf ”選項,這樣保存出來的文檔比較大(安裝 adobe acrobat dc 工具后,word中會有該選項)

4.      打開已安裝的adobe acrobat DC 工具

5.      文件->創建->創建表單,制作 pdf 模板

6.      選擇要剛剛保存的pdf文件

7.      打開后,工具自動生成“文本域”

8.      修改文本域屬性名

9.      修改文本域默認字體(選個 adobe 開頭的字體,有助於程序生成)

10.  保存pdf模板

11.  多行文本域,可以設置自動換行

12.  以下為使用IText7通過 pdf 模板生成pdf 的效果

13.  文本域默認字體對文件大小有影響

改變前

改變后

14.  使用itext7 ,通過pdf模板生成pdf的主要代碼

/**

* 使用pdf 模板生成 pdf 文件

*

* @author xxj 2017年5月24日

*/

@Test

public void fillTemplate() {// 利用模板生成pdf

// 模板路徑

String templatePath = "D:/Temp/pdf/pdf-template-form.pdf";

// 生成的新文件路徑

String fileName = StringExtend.format("itext-template-{0}.pdf", DateExtend.getDate("yyyyMMddHHmmss"));

String newPDFPath = PathExtend.Combine("D:/Temp/pdf/", fileName);

try {

// com.lowagie.text.pdf.PdfStamper.PdfStamper

// Initialize PDF document

PdfDocument pdf = new PdfDocument(new PdfReader(templatePath), new PdfWriter(newPDFPath));

PdfAcroForm form = PdfAcroForm.getAcroForm(pdf, true);

Map fields = form.getFormFields();

String maxTxt = "你好,世界!hello word!你好,世界!hello word!你好,世界!hello word!"

+ "你好,世界!hello word!你好,世界!hello word!你好,世界!hello word!"

+ "你好,世界!hello word!你好,世界!hello word!你好,世界!hello word!"

+ "你好,世界!hello word!你好,世界!hello word!你好,世界!hello word!"

+ "你好,世界!hello word!你好,世界!hello word!你好,世界!hello word!"

+ "你好,世界!hello word!你好,世界!hello word!你好,世界!hello word!";

// 處理中文問題

PdfFont font = PdfFontFactory.createFont("STSongStd-Light", "UniGB-UCS2-H", false);

String[] str = { "01.hello word!", "02.你好,世界!", "03.hello word!", "04.你好,世界!", "05.hello word!",

"06.你好,世界!", "07.hello word!", "08.你好,世界!", "09.hello word!", "10.你好,世界!", "11.hello word!",

"12.你好,世界!", "13." + maxTxt, "14." + maxTxt, };

int i = 0;

java.util.Iterator it = fields.keySet().iterator();

while (it.hasNext()) {

// 獲取文本域名稱

String name = it.next().toString();

// 填充文本域

fields.get(name).setValue(str[i++]).setFont(font).setFontSize(12);

System.out.println(name);

}

form.flattenFields();// 設置表單域不可編輯

pdf.close();

System.out.println("模板:" + templatePath);

System.out.println("pdf:" + newPDFPath);

} catch (IOException e) {

e.printStackTrace();

} catch (Exception e) {

e.printStackTrace();

}

}

15.  常見問題

異常描述

java.lang.NullPointerException

atcom.itextpdf.kernel.pdf.PdfDocument.getFont(PdfDocument.java:1479)

atcom.itextpdf.forms.fields.PdfFormField.getFontAndSize(PdfFormField.java:2442)

atcom.itextpdf.forms.fields.PdfFormField.regenerateField(PdfFormField.java:1780)

atcom.itextpdf.forms.fields.PdfFormField.setValue(PdfFormField.java:1038)

atcom.itextpdf.forms.fields.PdfFormField.setValue(PdfFormField.java:999)

解決方案:

打開pdf模板,將字體修改為 adobe 開頭的字體,如 adobe pi

java 制作pdf模板,Java-pdf模板制作流程-使用pdf 模板生成pdf文件相关推荐

  1. 深度学习制作数据集的部分代码实现(解压zip、生成json文件)

    1.当数据集是压缩包时,需要解压成图片文件 import zipfile def unzip_data(src_path,target_path):'''解压原始数据集,将src_path路径下的zi ...

  2. python制作相册_《自拍教程73》Python 自动生成相册文件夹

    这里将告诉您<自拍教程73>Python 自动生成相册文件夹,具体操作过程:案例故事: 接Python mediainfo批量重命名图片文件,测试图片是批量重命名好了, 但是将测试图片放于 ...

  3. word转pdf的java实现_java使用jacob实现word转pdf

    背景:日常开发ERP系统,会有一些工单或者合同之类需要填写打印.我们就会将其word模板来通过系统自动化填写并转换为PDF格式(PDF文件打印可保证文件质量,是一种通用的格式.文件不易去修改,比较稳定 ...

  4. springboot 基于.ftl模板生成pdf文件

    目录 Demo前置简述 生成pdf内容 项目结构 主要实现 api测试 完整代码地址 Demo前置简述 实现功能:用户个人信息测试数据加上ftl模板得到html字符串,然后根据html字符串生成pdf ...

  5. Java 使用itext生成pdf以及下载

    使用方法: 1.需要两个jar包: iText-5.0.6.jar    //必须使用该版本,否则缺少相关的方法 TextAsian.jar //是为了文档中正常显示中文所必须引用的包 TextAsi ...

  6. 使用PHP将Word文档转化为pdf文件(用户提交数据到Word模板并修改部分内容,再将Word转为PDF)

    需要实现的功能: 1.用户提交信息,例如:名称,年龄,电话等等 2.将这些信息填充到固定好的word模板中. 3.将生成的word转化为PDF. 4.使用的语言PHP 开始demo.docx文件中的内 ...

  7. 生成的url无法显示_快速生成PDF文档~~

    官方文档:https://pypi.org/project/pdfkit/ 1.安装并配置环境 1)安装python-pdfkit:$ pip install pdfkit2)安装wkhtmltopd ...

  8. 2021-11-11 itext html生成pdf 内容过长分页问题

    项目场景: 在公司用itext 生成html 并保存为PDF,html中有个div很长很长,导致生成完PDF之后,页面有大量空白 html样式: 生成PDF之后: 解决方案: 计算好一整页有多少行数据 ...

  9. 读取SolidWorks文档中的属性,生成PDF(工具开发)

    工作中,三维模型中的属性需要填写,其他地方也又需要填写,比如,我们公司买外购件需要填写外购卡. 比较懒,所以弄个小工具,直接从三维模型中提取属性数据,填写到响应的条目,根据物料编号,生成PDF. 读取 ...

  10. 图片如何生成pdf格式?图片怎么生成pdf格式文件?

    图片如何生成pdf格式?平时的工作中我们在处理pdf文件的时候,难免会遇到各种各样的问题.有时候我们需要把图片生成pdf.可能还有些小伙伴不知道该怎么做,图片生成pdf其实很简单,下面给大家分享一个图 ...

最新文章

  1. Clipboard还能玩出花
  2. 3.1_ 4连续分配管理方式
  3. linux django搭建网站,Linux下搭建Django站点一
  4. 信息学奥赛一本通(1324:【例6.6】整数区间)
  5. Hibernate 系列 02 - Hibernate介绍及其环境搭建
  6. python中 if __name__ == ‘__main__‘
  7. 菜鸟学习笔记:Java基础篇4(面向对象三大特征)
  8. python中a%b_Python中的a+=b和a=a+b之间的区别是什么?
  9. linux下grep文件内容搜索工具及基本正则表达式详解
  10. apache 访问控制
  11. TCP 协议学习小结
  12. 电商网站主动取消客户已支付成功订单感想
  13. 使用Crash工具查看一个TCP listen sock内存布局实例
  14. 博文视点卓越书单丨Python技术成长加油站
  15. 生物信息学研究生课程-1
  16. 知识图谱与推荐系统之《Multi-Task Feature Learning for Knowledge Graph Enhanced Recommendation》MKR
  17. 数学文化 卢卡斯数列和黄金分割
  18. Java计算两个日期相差的月数
  19. respberry pi 树莓派系统设置返回英文English
  20. 安装计算机软件系统过程,计算机软件系统安装.ppt

热门文章

  1. 做ppt课件直播(课堂直播)使用云课堂直播软件的教程
  2. DY(抖音)、KS(快手)、西瓜、知乎等批量去水印小程序版本可视化版本
  3. nginx修改响应头(可屏蔽后端服务器的信息:IIS,PHP等)
  4. 教你如何提取别人QQ头像的图片
  5. 【 rbx1翻译 第七章、控制移动基座】第八节、使用里程计进行往返运动
  6. 【Python爬虫】爬取新浪微博评论看网友如何评价NBA季后赛火箭VS爵士G3
  7. 2020年个人年终工作总结报告及2021年工作计划怎么利用敬业签历史记录 利用云便签备忘录及待办事项的任务清单有效解决2020年终总结报告的撰写
  8. 荣耀卖掉会有鸿蒙系统吗,华为为什么要把荣耀卖掉 荣耀卖掉之后依然还是那个荣耀吗?...
  9. 让word从第二页开始标记页脚
  10. 2018乌镇峰会 -- 完美世界萧泓论道互联网与文化交流