1、部署所需的jar包: itext-Asian-5.2.0.jaritextpdf-5.5.11.jar。

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

3、在要插入数据的空白区域,右键单击,单击【文本字段】,将文本字段拖动到所需位置& 放下并重命名域名称为您传递的变量名称。

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

publicstaticvoidcreatpdf (映射,字符串文件路径) {

try {

base font BF=base font.create font (c ://windows//fonts//simsun.TTC,1 ),BaseFont.IDENTITY_H,

BaseFont.EMBEDDED;

fileoutputstreamout=new文件输出流(文件路径; //输出流

pdf reader reader=new pdf reader (templatetoword.class.get resource (/com/cn/business/templates/report.pdf ‘ ) )

bytearrayoutputstreambos=newbytearrayoutputstream (;

pdfstamperstamper=newpdfstamper (reader,bos );

samper.setformflattening(true );

acrofieldsform=stamper.getacrofields (;

//文字类内容处理

mapdatemap=(map ) map.get(datemap );

FORM.addsubstitutionfont(BF;

for (string key : date map.keyset ) () ) ) )。

string value=date map.get (密钥;

FORM.setfield(key,value );

}

//图像类内容处理

mapimgmap=(map ) map.get(imgmap );

for (string key : img map.keyset ) () ) ) )。

stringvalue=imgmap.get(key;

字符串imgpath=value;

int pageno=form.getfield positions (key ).get )0).page;

rectanglesignrect=form.getfield positions (key ).get(0).position;

float x=signRect.getLeft (;

float y=signRect.getBottom (;

//根据路径读取图像

image image=image.getinstance (imgpath );

//获取图像页

pdfcontentbyteunder=stamper.getovercontent (pageno );

//图像尺寸适应

image.scaletofit (sign rect.getwidth (,signRect.getHeight ) );

//添加图像

image.setabsoluteposition(x,y );

under.addimage(image;

}

//表类

映射图=(映射)映射. get ) )列表);

for (string key : list map.keyset ) () () ) ) )。

列表列表=list map.get (key;

int pageno=form.getfield positions (key ).get )0).page;

pdfcontentbytepcb=stamper.getovercontent (pageno;

rectanglesignrect=form.getfield positions (key ).get(0).position;

//表格位置

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

int row=lists.size (;

PdfPTable table=new PdfPTa

ble(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目录下时不显示问题