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 + Adobe Acrobat DC填充模板生成pdf快速入门
Itextpdf + Adobe Acrobat DC填充模板生成pdf快速入门 生成pdf有很多种方法,如通过freemarker,或 使用itextpdf.本文将使用itextpdf生成pdf 1 …
根据PDF模板生成PDF文件(基于iTextSharp)
根据PDF模板生成PDF文件,这里主要借助iTextSharp工具来完成.场景是这样的,假如要做一个电子协议,用过通过在线填写表单数据,然后系统根据用户填写的数据,生成电子档的协议.原理很简单,但是每 …
使用word模板生成pdf文件
使用word模板生成pdf文件 源码:UserWord
Word模板生成PDF文件目录出现“错误!未定义书签!”的解决办法
通过程序读取Word文档模板生成PDF时,所有目录的页码全部变为“错误!未定义书签!”,后来经过仔细研究,发现是“域”的问题. 解决办法:全选(Crtl+A),按下Crtl+F11,再打印或者另存为P …
java 处理word文档 (含图片,表格内容)
因为本人长期从事Oa相关项目的开发,所以处理word文档,Pdf,Excel等是在所难免的. 1.需求 处理Excel 能够用jxl 或者poi 2需求 用户在系统上填 …
C#操作word模板插入文字、图片及表格详细步骤
c#操作word模板插入文字.图片及表格 1.建立word模板文件 person.dot用书签 标示相关字段的填充位置 2.建立web应用程序 加入Microsoft.Office.Interop.W …
随机推荐
PHP判断SESSION过期的方法
在公共函数function.php中添加如下方法,即可控制用户登录的SESSION有效期 //封装SESSION过期判断方法function start_session($expire = 0){ $ …
.NET项目版本号的小随笔
[题外话] 一直以来都对.NET项目中的几个版本号(AssemblyVersion.AssemblyFileVersion.AssemblyInformationalVersion)以及版本号中的Re …
Javascript的ArrayBuffer从Utf8ArrayToString
由于项目需要,需要从一个已知的ArrayBuffer中读取出字符串,虽然环境是typescript,但最终还是用的js的代码改了一下解决, public Utf8ArrayToStr(array):s …
LoadRunner11.00入门教程
安装成功后,根据教程,有自带的应用程序供新手快速掌握Loadrunner的使用.测试应用是一个基于web的旅行社应用程序,也就是供用户在线预订机票的应用.根据教程和操作,重新总结一下测试流程以及遇到的 …
tomat 欢迎页面设置在WEB-INF目录下时不显示问题