1、导入需要的jar包:itext-asian-5.2.0.jar itextpdf-5.5.11.jar。

2、新建word文档,创建模板,将文件另存为pdf,并用Adobe Acrobat DC打开编辑,点击右侧【准备表单】后点击【开始】

3、在需要插入数据的空白处,右击,点击【文本域】,将文本域拖放到你想要的位置,更改域名称为你传入的变量名。

4、保存文件,将文件放到项目中。生成pdf代码如下:

public static void creatPdf(Map map,String filePath) {

try {

BaseFont bf = BaseFont.createFont("c://windows//fonts//simsun.ttc,1", BaseFont.IDENTITY_H,

BaseFont.EMBEDDED);

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

PdfReader reader = new PdfReader(TemplateToWord.class.getResource("/com/cn/business/templates/report.pdf"));// 读取pdf模板

ByteArrayOutputStream bos = new ByteArrayOutputStream();

PdfStamper stamper = new PdfStamper(reader, bos);

stamper.setFormFlattening(true);

AcroFields form = stamper.getAcroFields();

// 文字类的内容处理

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

form.addSubstitutionFont(bf);

for (String key : datemap.keySet()) {

String value = datemap.get(key);

form.setField(key, value);

}

// 图片类的内容处理

Map imgmap = (Map) map.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);

}

// 表格类

Map>> listMap = (Map>>) map.get("list");

for (String key : listMap.keySet()) {

List> lists = listMap.get(key);

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

PdfContentByte pcb = stamper.getOverContent(pageNo);

Rectangle signRect = form.getFieldPositions(key).get(0).position;

//表格位置

int column = lists.get(0).size();

int row = lists.size();

PdfPTable table = new PdfPTable(column);

float tatalWidth = signRect.getRight() - signRect.getLeft() - 1;

int size = lists.get(0).size();

float width[] = new float[size];

for(int i=0;i

if(i==0){

width[i]=60f;

}else{

width[i]=(tatalWidth-60)/(size-1);

}

}

table.setTotalWidth(width);

table.setLockedWidth(true);

table.setKeepTogether(true);

table.setSplitLate(false);

table.setSplitRows(true);

Font FontProve = new Font(bf, 10, 0);

//表格数据填写

for(int i=0;i

List list = lists.get(i);

for(int j=0;j

Paragraph paragraph = new Paragraph(String.valueOf(list.get(j)), FontProve);

PdfPCell cell = new PdfPCell(paragraph);

cell.setBorderWidth(1);

cell.setVerticalAlignment(Element.ALIGN_CENTER);

cell.setHorizontalAlignment(Element.ALIGN_CENTER);

cell.setLeading(0, (float) 1.4);

table.addCell(cell);

}

}

table.writeSelectedRows(0, -1, signRect.getLeft(), signRect.getTop(), pcb);

}

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

stamper.close();

Document doc = new Document();

PdfCopy copy = new PdfCopy(doc, out);

doc.open();

int pageNum = reader.getNumberOfPages();

for(int i = 1;i <= pageNum;i++){

PdfImportedPage importPage = copy.getImportedPage(new PdfReader(bos.toByteArray()), i);

copy.addPage(importPage);

}

doc.close();

} catch (IOException e) {

System.out.println(e);

} catch (DocumentException e) {

System.out.println(e);

}

}

参数:

//文字类

Map dataMap = new HashMap();

dataMap.put("title", title+time);

//图片

String knowImgPath = "D:\\upload\\report\\knowImg.png";

Map imgMap = new HashMap();

imgMap.put("knowImg", knowImgPath);

//表格 一行数据是一个list

List list = new ArrayList();

list.add("日期");

list.add("金额");

List list2 = new ArrayList();

list2.add("2018-01-01");

list2.add("100");

List> List = new ArrayList>();

List.add(list);

List.add(list2);

Map>> listMap = new HashMap>>();

listMap.put("eventList", List);

Map o = new HashMap();

o.put("datemap", dataMap);

o.put("imgmap", imgMap);

o.put("list", listMap);

String knowImgPath = "D:\\upload\\report\\report.pdf";

creatPdf(o,filePath);

java根据模板生成pdf

原文链接:https://www.cnblogs.com/wangpeng00700/p/8418594.html 在网上看了一些Java生成pdf文件的,写的有点乱,有的不支持写入中文字体,有的不支 ...

Java利用模板生成pdf并导出

1.准备工作 (1)Adobe Acrobat pro软件:用来制作导出模板 (2)itext的jar包 2.开始制作pdf模板 (1)先用word做出模板界面 (2)文件另存为pdf格式文件 (3) ...

java通过freemarker模板导出pdf

需求:将网页内容导出为pdf文件,其中包含文字,图片,echarts图 原理:利用freemarker模板与数据渲染所得到的html内容,通过ITextRenderer对象解析html内容生成pdf ...

Itextpdf &plus; Adobe Acrobat DC填充模板生成pdf快速入门

Itextpdf + Adobe Acrobat DC填充模板生成pdf快速入门 生成pdf有很多种方法,如通过freemarker,或 使用itextpdf.本文将使用itextpdf生成pdf 1 ...

根据PDF模板生成PDF文件&lpar;基于iTextSharp&rpar;

根据PDF模板生成PDF文件,这里主要借助iTextSharp工具来完成.场景是这样的,假如要做一个电子协议,用过通过在线填写表单数据,然后系统根据用户填写的数据,生成电子档的协议.原理很简单,但是每 ...

使用word模板生成pdf文件

使用word模板生成pdf文件 源码:UserWord

Word模板生成PDF文件目录出现&OpenCurlyDoubleQuote;错误!未定义书签!”的解决办法

通过程序读取Word文档模板生成PDF时,所有目录的页码全部变为“错误!未定义书签!”,后来经过仔细研究,发现是“域”的问题. 解决办法:全选(Crtl+A),按下Crtl+F11,再打印或者另存为P ...

java 处理word文档 (含图片,表格内容)

因为本人长期从事Oa相关项目的开发,所以处理word文档,Pdf,Excel等是在所难免的. 1.需求      处理Excel 能够用jxl        或者poi 2需求     用户在系统上填 ...

C&num;操作word模板插入文字、图片及表格详细步骤

c#操作word模板插入文字.图片及表格 1.建立word模板文件 person.dot用书签 标示相关字段的填充位置 2.建立web应用程序 加入Microsoft.Office.Interop.W ...

随机推荐

PHP判断SESSION过期的方法

在公共函数function.php中添加如下方法,即可控制用户登录的SESSION有效期 //封装SESSION过期判断方法function start_session($expire = 0){ $ ...

&period;NET项目版本号的小随笔

[题外话] 一直以来都对.NET项目中的几个版本号(AssemblyVersion.AssemblyFileVersion.AssemblyInformationalVersion)以及版本号中的Re ...

Javascript的ArrayBuffer从Utf8ArrayToString

由于项目需要,需要从一个已知的ArrayBuffer中读取出字符串,虽然环境是typescript,但最终还是用的js的代码改了一下解决, public Utf8ArrayToStr(array):s ...

LoadRunner11&period;00入门教程

安装成功后,根据教程,有自带的应用程序供新手快速掌握Loadrunner的使用.测试应用是一个基于web的旅行社应用程序,也就是供用户在线预订机票的应用.根据教程和操作,重新总结一下测试流程以及遇到的 ...

tomat 欢迎页面设置在WEB-INF目录下时不显示问题

java导出pdf 含图片_【Java】itext根据模板生成pdf(包括图片和表格)相关推荐

  1. itext 根据模板 生成pdf 多行数据

    前言:基于 html + ccs + itext + 字符串替换完成的.简单,依赖的 jar 少... 根据 pdf模板 生成 pdf , 1. 不能有循环的数据(可能有,但我并没有找到): 2. t ...

  2. itext使用模板生成pdf文件

    用pdf模板生成pdf文档很简单,首先需要手动做个pdf模板,上面有很多的类似html里的text域的东西, 给他们起好名字,在程序里填充就可以了.虽然由于不会做模板(实际上由于短时间无法去熟悉使用A ...

  3. java itext根据模板生成pdf

    很久没有更新过了,稍微闲一点,顺势总结下N久之前用到的小技巧. 这里生成pdf主要使用itext.jar.如想生成一个pdf,其实很简单的啦!第一种:全部使用代码生成:第二种:根据pdf模板生成.当前 ...

  4. itext根据数据生成PDF

    前言: 使用模板的方式开生成PDF文件 1.下载Adobe Acrobat DC,使用正式版(可以试用7天) 2.打开模板编辑表单域: 选择工具–>准备表单 3.编辑文本域属性 根据要求的模板设 ...

  5. java根据模板生成pdf文件并导出(iText)

    java根据模板生成pdf文件并导出 首先你的制作一个pdf模板: 1.先用word做出模板界面 2.文件另存为pdf格式文件 3.通过Adobe Acrobat pro软件打开刚刚用word转换成的 ...

  6. JAVA 使用Itext模板生成pdf,解决图片插入,文本域超出字体缩放,半自动换行

    1.前言 前一段时间遇到一个制作Pdf的业务,自己下来摸索了一下,基本上解决.将其中遇到的几个问题及解决方法做以记录,仅供大家参考. 首先在这里对于刚接触该类型业务的同学说明下,ItexPdf支持使用 ...

  7. Java根据模板生成pdf文件并导出

    原文地址:http://blog.csdn.net/TOP__ONE/article/details/65442390 首先你的制作一个pdf模板: 1.先用word做出模板界面 2.文件另存为pdf ...

  8. java pdf工具类_Java PDF工具类(一)| 使用 itextpdf 根据PDF模板生成PDF(文字和图片)...

    Java PDF工具类(一)| 使用 itextpdf 根据设置好的PDF模板填充PDF(文字和图片) 相关文章: Java PDF工具类(二)| 使用 wkhtmltox 实现 HTML转PDF(文 ...

  9. java导出pdf文件并下载_java根据模板生成pdf文件并导出

    1.首先需要依赖包:itext的jar包,我是maven项目,所以附上maven依赖 [html] view plain copy com.itextpdf itextpdf 5.5.10 [html ...

  10. Java使用Itext5与html模板生成pdf并支持下载

    Java使用Itext5与html模板生成pdf 文章目录 Java使用Itext5与html模板生成pdf 前言 一.引入依赖 二.相关使用说明 1.工具类 2.模板配置 3.模板的抽象类(定义了相 ...

最新文章

  1. 基于图像的三维模型重建——稠密点云重建
  2. bat脚本+vs2019编译openssl(x86 | x64) - (static | shared) - (debug | release)
  3. 【Spring MVC学习】spring mvc入门示例
  4. python累加求和_python中的变量和数据类型(一)
  5. 九个月可以做成什么事?
  6. JBuilder9+Weblogic8.1——Filter过滤器在Jbuilder9中的运用
  7. android 断开蓝牙连接,如何在android中连接和断开扬声器蓝牙
  8. zsh 主题的下载和安装
  9. 前端学习(2925):vue改变样式1
  10. 正在等待语音服务器回应,Python如何突破正在等待服务器响应的阻塞生成器?
  11. java中el是什么_java中jsp的EL的定义以及使用
  12. 服装CAD软件测试初学者,CAD服装打版基础教程
  13. OpenSSL制作自签名V3证书
  14. JS设计模式——Mixin模式
  15. 怎么使用pyd 文件
  16. 【pytest】之parameterize()参数化,实现测试方法数据化
  17. QT之SQLITE3数据库
  18. SAP中寄售信息记录税码维护缺失的清单输出实例
  19. pycharm新建项目
  20. WCF 项目应用连载[9] - 契约中的委托 事件参数处理

热门文章

  1. JFrame中添加背景音乐
  2. 【日常吐槽 · 第七期】进击的博客
  3. LigerUi的Form表单展示
  4. html实现网页多人聊天,实现websocket多人聊天,很简单(示例代码)
  5. android 源代码 毛笔,Android-毛笔的探索与开发
  6. 利用urllib读取JSON,然后将JSON解析为Python对象 —— python学习笔记
  7. 软RAID管理命令mdadm详解
  8. CRC32绕过RAR密码
  9. iOS crash分类,Mach异常、Unix 信号和NSException 异常
  10. mysql ibd文件删除_误删除MySQL数据库表的ibd文件怎么办