一、创建word模板。 word模板如图:

二、将word模板转pdf模板。

三、用Adobe Acrobat Pro打开pdf模板。

四、编辑模板域,即要填写的内容。

点击表单选择添加或编辑域选项:

双击可以 修改域的变量名及样式字体的设置。

然后保存这样pdf的模板就生成了。

六、添加mawen引用:

com.itextpdf

itextpdf

5.4.3

七、生成代码:

public static void pdfout(Mapo) {//模板路径

String templatePath = "D:/模板1.pdf";//生成的新文件路径

String newPDFPath = "D:/test.pdf";

PdfReader reader;

FileOutputStream out;

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, 5, Font.NORMAL);

out= new FileOutputStream(newPDFPath);//输出流

reader = new PdfReader(templatePath);//读取pdf模板

bos = newByteArrayOutputStream();

stamper= newPdfStamper(reader, bos);

AcroFields form=stamper.getAcroFields();//文字类的内容处理

Map datemap = (Map)o.get("datemap");

form.addSubstitutionFont(bf);for(String key : datemap.keySet()){

String value=datemap.get(key);

form.setField(key,value);

}//图片类的内容处理

Map imgmap = (Map)o.get("imgmap");for(String key : imgmap.keySet()) {

String value=imgmap.get(key);

String imgpath=value;int pageNo = form.getFieldPositions(key).get(0).page;

Rectangle signRect= form.getFieldPositions(key).get(0).position;float x =signRect.getLeft();float y =signRect.getBottom();//根据路径读取图片

Image image =Image.getInstance(imgpath);//获取图片页面

PdfContentByte under =stamper.getOverContent(pageNo);//图片大小自适应

image.scaleToFit(signRect.getWidth(), signRect.getHeight());//添加图片

image.setAbsolutePosition(x, y);

under.addImage(image);

}

stamper.setFormFlattening(true);//如果为false,生成的PDF文件可以编辑,如果为true,生成的PDF文件不可以编辑

stamper.close();

Document doc= newDocument();

Font font= new Font(bf, 32);

PdfCopy copy= newPdfCopy(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);

}

}

代码测试:

public static voidmain(String[] args) {

Map map = newHashMap();

map.put("Name","张三");

map.put("Code","2565");

map.put("Number","123456789");

Map map2 = newHashMap();

map2.put("img","d:/Spring.jpg");

Map o=newHashMap();

o.put("datemap",map);

o.put("imgmap",map2);

pdfout(o);

}

原文:https://www.cnblogs.com/Revival-of-everything/p/12082814.html

java word模板生成pdf,java根据模板生成pdf相关推荐

  1. java word批注_编写Java批注

    java word批注 Java 批注的允许的属性类型刻意非常严格,但是允许的类型也可以使用一些简洁的复合批注类型. 考虑教程站点中的示例注释: package annotation; @interf ...

  2. java word转html 烟火,Java多线程制作烟花效果.doc

    Java多线程制作烟花效果 Java多线程应用实例: 制作烟花效果 本例知识点一句话讲解新学知识使用Thread类管理线程已学知识Math类产生随机数使用Color类设置颜色使用Graphics类绘制 ...

  3. java word 另存为_在java中将word文件另存为html

    我找到了Zack Macomber提示的答案,我使用宏转换word文件到html文件.我给出了该宏的编码.将宏名称保存为"saveashtml" Sub saveashtml() ...

  4. java word 乱码_java另存word时出现乱码怎么办

    java另存word时出现乱码怎么办 发布时间:2020-04-07 11:05:31 来源:亿速云 阅读:92 作者:小新 这篇文章主要为大家详细介绍了java另存word时出现乱码怎么办,文中示例 ...

  5. java word 乱码_java word 乱码怎么办,_Java_ 少侠科技

    详细内容 java word 乱码怎么办? Java另存Word并解决乱码问题* 专家意见另存word *@YaoWei *2014-6-16 下午12:09:07 * @param request ...

  6. java生成pdf(word模板转html,html再转pdf)

    场景描述: 公司需要做一个打印功能,采用生成PDF的形式.由于PDF需要动态生成某些行,不能采用制作PDF表单的形式,word文档直接转PDF的形式会导致排版不美观.由于需要部署在linux服务器,采 ...

  7. java word模板poi生成文件_利用poi读取word模板文件生成新的word文档

    利用poi读取word模板文件生成新的word文档 利用poi读取word模板文件,并回填逻辑数据,生成并导出需要的word文档源码.解决模板读取异常问题,提供wordUtils工具类(各种功能实现) ...

  8. java 生成水印,Java 用html模板生成 Pdf 加水印

    生成PDF报表是很多企业系统常见的需求, 有些对外提供报表的系统还需要对生成的pdf文件添加水印, 本文将介绍以上2个问题简单又免费的技术方案 ( 商业收费可见: 最新版ItextPdf ) 依赖 免 ...

  9. java word根据模板导出_简历不知道如何写起,推荐几个简历模板

    通常简历用 pdf 格式最好,因为pdf不可编辑,浏览器就能打开,不用担心像word那样不同操作系统的兼容问题. 1.冷熊简历是一个运行在浏览器里边的 Markdown 编辑器, 支持 Markdow ...

  10. java pdf 插入图片_java在pdf模板的指定位置插入图片

    个人感觉pdf的操作比word舒心多了 java操作pdf有个非常好用的库itextpdf,maven: com.itextpdf itextpdf 5.5.6 com.itextpdf itext- ...

最新文章

  1. C++ 向量(vector) 的使用
  2. python语言入门p-python初学者怎么入门
  3. 开服侠显示服务器已停止,蜘蛛侠:极限(已关服)无法连接服务器是什么原因...
  4. NeurIPS 2021有哪些值得读的NLP论文?
  5. LeetCode 31 下一个排列
  6. 我们正在经历一个应用疲惫时代?
  7. 我就传个图片都不通过迈
  8. php中find的函数_filter()、find()函数的区别
  9. Android自定义View之paint(一)
  10. 矩阵理论(三)向量矩阵的求导
  11. 建模没有用『灵敏度分析』,一半儿的报名费已经飞了
  12. 小程序 tab 切换点击无效
  13. 利用python多个工作簿合并到一个工作簿
  14. 【学习笔记】seckill-秒杀项目--(6)秒杀功能
  15. 寒霜朋克计算机丢失,Frostpunk寒霜朋克冰汽时代已停止工作修复补丁(Windows6.1-KB2670838-x64)...
  16. 古风排版(20 分)
  17. Titanic 泰坦尼克号预测-Tensorflow 方法-【Kaggle 比赛】
  18. MYSQL 基础篇 | 02-MYSQL基础应用
  19. 国内外网站空间优劣势
  20. Python----Hello程序

热门文章

  1. MTK-QCOM-SPRD 刷机
  2. 论文阅读《A Survey on Deeping Learning In Medical Image Analysis》
  3. 微软官方 Windows 10 更新安装失败的解决办法
  4. 离散数学及其应用第1章笔记总结
  5. ffmpeg中使用screen capture recorder录音的问题
  6. 常用的数据分析方法(聚类、因子、相关、对应、回归、方差)简述【转】
  7. 【高等数学】基本求导法则与导数公式
  8. 数字逻辑实验-交通灯控制设计
  9. 大佬们不会告诉你的史上最全的Java进阶书籍推荐
  10. 手机wap浏览器下载选哪家