Adobe Acrobat pro生成PDF模版
最近做了一个关于动态生成PDF合同的需求 java生成PDF 网络上随便一搜遍有了
不要用手动在代码里面输入合同中的文字这种方式 如这样的方式 http://blog.csdn.net/justinytsoft/article/details/53320225
需求的多变,那天需要修改一下字体的颜色,或者字体, 增加一行字,等等其他奇葩要求,上面这个博客的方式都得修改代码
使用itext使用pdf模版的方式,就不需要修改代码了.
这里用的是itext生成PDF
maven依赖
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.5.6</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext-asian</artifactId>
<version>5.2.0</version>
</dependency> 参考以下博客 ,但是该中还是有一些问题,PDF模版
http://blog.csdn.net/top__one/article/details/65442390 \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
以下都是踩过的坑,希望能帮助后来的人
原始pdf

word模版转PDF后 导入Adobe Acrobat pro 如果pdf中 甲方:_______ 姓名:_____ 之类的下划线,,他会自动生成表单
导入之后

上图中的黑框 就是表单了 双击

重点关注表单中的名称 这个就是以后再代码分钟动态填充的
坑来了

这里可以看到表单的字体和大小
实际上自动生成的表单, 我们在往里面填充内容的时候会有问题的.
如果需要填充的内容包含中文 一点要删掉默认生成的表单域 然后重新添加 注意字体
小塚明朝Pr6N字体(Kozuka Mincho Pr6N R)
填充汉字的时候有些汉字会显示不出来 比如 军 ,资 ,肯定还有很多字不能显示出来
第一感觉就是更换字体 然后换成微软雅黑

好吧,.现在汉字都显示不出来了,只显示数字
试了很多字体.都不行
最后,删除了自动生成的表单.手动往需要 动态添加内容的地方 添加表单域
实际测试 这种方法可行
itext 代码案例
//PdfTemplate类里面定义了所有表单域的名称 这里只举例子了两个表单域//上面提到了表单域的名称
public static void fillTemplate(PdfTemplate pdfTemplate) throws BusinessException{
// 模板路径
String templatePath = "/pdf/xxxx.pdf";
// 填充模版文件后生成的待签署的合同路径
//TODO 地址
// 文件名BORROWPROTOCOL+协议编号
String newPDFPath = TEMP_PDF_LOCATION+pdfTemplate.getContract_no()+EXPANDEDNAME;
PdfReader reader;
FileOutputStream out;
ByteArrayOutputStream bos;
PdfStamper stamper;
try {
out = new FileOutputStream(newPDFPath);
// 读取pdf模板
reader = new PdfReader(templatePath);
bos = new ByteArrayOutputStream();
stamper = new PdfStamper(reader, bos);
AcroFields form = stamper.getAcroFields();
//往pdf合同模版里面设置值 //mock
//合同编号
form.setField("contract_no", pdfTemplate.getContract_no());
//甲方
form.setField("first_user_name", pdfTemplate.getFirst_user_name());
//...需要填充的其他表单域
// 如果为false那么生成的PDF文件还能编辑,一定要设为true
stamper.setFormFlattening(true);
stamper.close();
Document doc = new Document();
PdfCopy copy = new PdfCopy(doc, out);
doc.open();
//pdf模版的页数
int pagecount= reader.getNumberOfPages();
for(int i=1 ;i<pagecount+1;i++){
PdfImportedPage importPage = copy.getImportedPage(new PdfReader(bos.toByteArray()), i);
copy.addPage(importPage);
}
doc.close();
} catch (IOException e) {
throw new BusinessException("生成合同模版失败,合同编号:"+pdfTemplate.getContract_no());
} catch (DocumentException e) {
throw new BusinessException("生成合同模版失败,合同编号:"+pdfTemplate.getContract_no());
}
}
Adobe Acrobat pro生成PDF模版的更多相关文章
- 【转】adobe acrobat pro修改pdf文字
原文网址:http://zhidao.baidu.com/link?url=7MTeEu5IM49lNIISNQMcZLyLAwMPsRQWF5WAwQPfvkPsbbZLHSQE43MWaIxxVm ...
- Adobe Acrobat Pro 修改背景色
Adobe Acrobat Pro 如何修改背景色 CreateTime--2017年8月1日10:05:58Author:Marydon 参考:百度经验 在菜单栏选择“编辑”,下拉栏中选择最后一 ...
- Adobe Acrobat Pro 2021 for mac安装教程,完美使用!!!
adobe acrobat是最优秀的PDF编辑软件,有了它用户可以随时随地的进行签署.支持创建PDF.编辑PDF.导出PDF.合并文件等各种管理PDF文件的实用的功能,非常好用,可以说是PDF转换的必 ...
- Acrobat pro Dc 2018破解版|Adobe Acrobat pro Dc 2018中文破解版下载(附序列号/免破解)
Acrobat pro Dc 2018破解版是由Adobe公司开发的一款PDF编辑软件,它可以以PDF格式制作和保存用户的文档,以此方便浏览和打印,或使用更高级的功能,且PDF格式的文档可如实地保留原 ...
- Adobe Acrobat Ⅺ Pro安装激活
1.注意一定要断网安装,如果你有防火墙拦截亦可(注意:系统自带那防火墙不行). 2.将AcrobatPro_11_Web_WWMUI.exe解压到一个目录下,找到目录下的setup.exe安装,安装时 ...
- adobe acrobat pro 9破解方法
方法一:(经常没用,不推荐) 尝试一下部分常见序列号: 网上搜 方法二: (能找到文件的,推荐) 1.到 C:\Program Files\Common Files\Adobe\Adobe PCD\c ...
- Adobe Acrobat Pro DC破解
下载amtemu 点击 在AMT Emulator界面,下拉选择Adobe Acrobat DC; 然后点击右下角Install安装破解补丁. 点击Install后在弹出窗口中手动找到并选择软件安装目 ...
- Adobe Premiere Pro生成峰值文件假死
一.正文 使用Adobe的Premiere Pro CC进行视频剪辑制作的时候,有的时候在右下角总会出现一个“自动生成峰值文件”的提示符,并跟随一个进度条: 大部分时候,这并不会引起什么问题.虽然我也 ...
- Adobe Acrobat Pro 9破解
(转载,Window8.1/64bit系统亲测可用) 1.删除C:\Program Files\Common Files\Adobe\Adobe PCD\cache\cache.db和C:\Docum ...
随机推荐
- Struts2学习笔记整理(二)
这里是重点. Action接口 struts2 的Action可以是POJO 为了让用户开发的Action更加规范struts2提供了一个Action接口 ActionSupport基类 Struts ...
- oracle 主键自增 设置----杜恩德
<div id="topicList"> <div class="forFlow"> <div class = "pos ...
- 采用Opserver来监控你的ASP.NET项目系列(三、监控你的服务器状态)
前言 之前有过2篇关于如何监控ASP.NET core项目的文章,有兴趣的也可以看看. 今天我们主要来介绍一下,如何使用Opserver监控我们的服务器状态. Opserver的功能其实很强大,他可以 ...
- iOS 网络状态判断方案(支持iOS11和iPhoneX)
在之前的iPhone中.我们可以根据导航栏上方的网络状态view.来判断网络状态.(这种方案本来就不太好) 这种方案在iPhone X 手机上.不可使用. 我们可以通过 Reachability 来 ...
- JS如何实现导航栏的智能浮动
<script language="javascript"> function smartFloat(obj) { var obj = docu ...
- 【WebGL】《WebGL编程指南》读书笔记——第2章
一.前言 最近看了<WebGL编程指南>这本书,发现还是很有意思的,故每章阅读后做个笔记. 二.正文 Example1:在canvas中绘制矩形 <!DOCTYPE html> ...
- java进程脱离终端运行
关于 java 进程脱离终端放入后台运行的问题,首先想到是使用nohup命令: 研究了一下tomcat启动脚本.jenkins.war启动方式以及其他linux命令,结论是在目前的linux系统上不使 ...
- JMeter IP欺骗压测
要求:JMeter版本2.5以上 IP欺骗其实是LR自带的一个非常有用的功能. 为什么会用到IP欺骗? 1)当某个IP的访问过于频繁,或者访问量过大是,服务器会拒绝访问请求,这时候通过IP欺骗可以增加 ...
- Linux的编码及编码转换
如果你需要在Linux中操作windows下的文件,那么你可能会经常遇到文件编码转换的问题.Windows中默认的文件格式是GBK(gb2312),而Linux一般都是UTF-8.下面介绍一下,在Li ...
- 【liferay】3、liferay 添加spring支持
1.添加对应的spring的jar 地址:https://spring.io/projects 选中springframework 进入git源码的地方,看简介 我们需要编译好的jar 当然也可以自己 ...