Java中操作pdf模板生成pdf
【java】 iText使用PDF模板生成输出PDF
项目需求涉及到操作pdf模板,根据生成好的模板向里面填充数据
用到的jar包是iText-5.0.6.jar 和iTextAsian.jar
pdf模板效果如下:
importjava.io.ByteArrayOutputStream;
importjava.io.FileOutputStream;
importjava.io.IOException;
importjava.io.OutputStream;
importjava.util.ArrayList;
importjava.util.HashMap;
importjava.util.Map;
importcom.lowagie.text.DocumentException;
importcom.lowagie.text.pdf.AcroFields;
importcom.lowagie.text.pdf.BaseFont;
importcom.lowagie.text.pdf.PdfContentByte;
importcom.lowagie.text.pdf.PdfReader;
importcom.lowagie.text.pdf.PdfStamper;
publicclassTest {
publicstaticvoidmain(String[] args)throwsException {
test();
System.out.println("success");
}
publicstaticvoidtest()throwsIOException, DocumentException {
String fileName = "F:/zxing/zs/zsTemp.pdf";// pdf模板
PdfReader reader = newPdfReader(fileName);
ByteArrayOutputStream bos = newByteArrayOutputStream();
/* 将要生成的目标PDF文件名称 */
PdfStamper ps = newPdfStamper(reader, bos);
PdfContentByte under = ps.getUnderContent(1);
/* 使用中文字体 */
BaseFont bf = BaseFont.createFont("STSong-Light","UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
ArrayList<BaseFont> fontList = newArrayList<BaseFont>();
fontList.add(bf);
/* 取出报表模板中的所有字段 */
AcroFields fields = ps.getAcroFields();
fields.setSubstitutionFonts(fontList);
fillData(fields, data());
/* 必须要调用这个,否则文档不会生成的 */
ps.setFormFlattening(true);
ps.close();
OutputStream fos = newFileOutputStream("F:/zxing/zs/zsResult.pdf");
fos.write(bos.toByteArray());
fos.flush();
fos.close();
bos.close();
}
publicstaticvoidfillData(AcroFields fields, Map<String, String> data)
throwsIOException, DocumentException {
for(String key : data.keySet()) {
String value = data.get(key);
fields.setField(key, value); // 为字段赋值,注意字段名称是区分大小写的
}
}
publicstaticMap<String, String> data() {
Map<String, String> data = newHashMap<String, String>();
data.put("name","test:");
data.put("bianhao","xx第10000001号");
data.put("amount","1000");
data.put("date","2015年7月7日");
returndata;
}
}
java 操作pdf模板(向指定域添加文本内容和图片)
publicstaticvoidmain(String[] args)
{
try
{
String TemplatePDF = "e:/F-3.pdf";//魔板路径
String outFile = "e:/test.pdf";//生成新的pdf的路径
PdfReader reader = newPdfReader(TemplatePDF);
PdfStamper ps = newPdfStamper(reader,newFileOutputStream(outFile));// 生成的输出流
AcroFields s = ps.getAcroFields();
// 插入文字
insertText(ps, s);
// 插入图片
insertImage(ps, s);
ps.close();
reader.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
/**
* 插入图片
*
* @param ps
* @param s
* @author WangMeng
* @date 2016年6月16日
*/
publicstaticvoidinsertImage(PdfStamper ps, AcroFields s)
{
try
{
List<AcroFields.FieldPosition> list = s.getFieldPositions("QR_CODE");
Rectangle signRect = list.get(0).position;
Image image = Image.getInstance("e:/pdf.jpg");
PdfContentByte under = ps.getOverContent(2);
floatx = signRect.getLeft();
floaty = signRect.getBottom();
System.out.println(x);
System.out.println(y);
image.setAbsolutePosition(x, y);
image.scaleToFit(signRect.getWidth(), signRect.getHeight());
under.addImage(image);
}
catch(Exception e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 创建Chunk
*
* @return
* @author WangMeng
* @date 2016年6月16日
*/
publicstaticChunk CreateChunk()
{
BaseFont bfChinese;
Chunk chunk = null;
try
{
bfChinese = BaseFont.createFont("STSong-Light","UniGB-UCS2-H", BaseFont.EMBEDDED);
Font fontChinese = newFont(bfChinese,10*4/3);
chunk = newChunk("张三", fontChinese);
}
catch(Exception e)
{
e.printStackTrace();
}
returnchunk;
}
/**
* 插入文本
*
* @return
* @author WangMeng
* @date 2016年6月16日
*/
publicstaticvoidinsertText(PdfStamper ps, AcroFields s)
{
List<AcroFields.FieldPosition> list = s.getFieldPositions("CONNECT_NAME");
Rectangle rect = list.get(0).position;
PdfContentByte cb = ps.getOverContent(1);
PdfPTable table = newPdfPTable(1);
floattatalWidth = rect.getRight() - rect.getLeft() -1;
table.setTotalWidth(tatalWidth);
PdfPCell cell = newPdfPCell(newPhrase(CreateChunk()));
cell.setFixedHeight(rect.getTop() - rect.getBottom() - 1);
cell.setBorderWidth(0);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setLeading(0, (float)1.1);
table.addCell(cell);
table.writeSelectedRows(0, -1, rect.getLeft(), rect.getTop(), cb);
}
Java中操作pdf模板生成pdf相关推荐
- java 制作pdf模板,Java-pdf模板制作流程-使用pdf 模板生成pdf文件
Java 使用pdf 模板生成pdf文件 --制作流程 1. 使用工具 adobe acrobat dc.word 2015 2. 使用 word 繪制一個 3*5 的表格並保存, ...
- itextpdf通过pdf模板生成pdf文件
itextpdf通过pdf模板生成pdf文件,设置粗体字体 1.创建pdf模板 2.使用模板生成pdf 3.itext自带的字体列表 4.遇到的坑 1.创建pdf模板 可以使用PDFFescape网站 ...
- java pdf工具类_Java PDF工具类(一)| 使用 itextpdf 根据PDF模板生成PDF(文字和图片)...
Java PDF工具类(一)| 使用 itextpdf 根据设置好的PDF模板填充PDF(文字和图片) 相关文章: Java PDF工具类(二)| 使用 wkhtmltox 实现 HTML转PDF(文 ...
- Java使用Adobe Acrobat DC根据PDF模板生成PDF文件
制作模板 首先需要安装Adobe Acrobat DC来制作模板 打开dc工具-->准备表单,然后打开你需要制作的pdf源文件 将文本域拖到你需要代码替换的位置 你可以双击文本域修改当前文本域的 ...
- java 根据PDF模板生成PDF文件并导出
1.准备操作的maven包 <dependency><groupId>com.itextpdf</groupId><artifactId>itextpd ...
- java itextpdf使用HTML模板生成pdf文件,并设置table
我们这里是maven项目,导入相应jar包: <dependency><groupId>org.freemarker</groupId><artifactId ...
- Java按照固定pdf模板生成pdf文件——itext
第一步:生成pdf模板 先用word写好固定格式的文档,再利用wps将文档转成pdf文件,然后利用Adobe Acrobat DC(此工具是收费的,可以百度搜索进行破解)进行表单域编辑(如下图),编辑 ...
- java pdf stamper_java 通过pdf模板,生成PDF,并下载到本地-Go语言中文社区
注意:本例子是从向模板定义的变量赋值,而不是从无到有的来生成pdf 直接就能用 maven依赖: com.lowagie itext 4.2.1 工具类: package com.upincar.pd ...
- android手机生成pdf格式文件,Android根据pdf模板生成pdf文件
1 public voidFillPdfTemplate(String id) {2 android.icu.text.SimpleDateFormat simpleDateFormat = 3 ne ...
最新文章
- 计算机辅助焊接过程控制,重型车辆计算机辅助焊接工艺自动设计系统.pdf
- 关于量子计算,你应该知道的七个事实
- 智能车竞赛技术报告 | 智能车视觉 - 首都师范大学 - 首师智能视觉
- opentracing
- 图像的放大与缩小(2)——双线性插值放大与均值缩小
- 如何使用.NET配置文件(一)
- elasticsearch mapping之index
- 二叉树构建及双向链表
- C# 获取进程或线程的信息
- 3 张图带你走近蚂蚁mPaaS音视频通话组件
- 查阅 arXiv 论文新神器,一行代码比较版本差别,Github 新开源!
- 视觉SLAM笔记(9) Eigen
- mysql connector放在哪_关于MySQL Connector/C++那点事儿
- 关于word中插入知网e-study插件问题
- PHP 利用CURL抓取页面内容
- 华硕aura完全卸载_AURA神光同步是什么意思?AURA SYNC神光同步教程
- 嵌入式驱动工程师开发学习路线
- NTC热敏电阻的主要技术参数
- Linux获取外网IP
- R语言学习-复杂网络中心度计算
热门文章
- 互联网时代真的人人都是产品经理吗?
- x86架构与ARM架构(AGX、TX2、NX等)下配置带ROS插件的QtCreator(Qt+ROS+ubuntu18)(源码编译安装方式)
- vue解决ios不能自动唤起手机数字键盘问题
- 微信公众号markdown编辑器
- 信息安全技能树(SecWiki中Web安全工程师职位建议)
- 内蒙古大学计算机考研资料汇总
- 匝间短路故障学习历程(六) -- 批处理问题
- 浅谈RFID 智能柜系统
- 【机器学习】集成学习投票法:投票回归器(VotingRegressor) 投票分类器(VotingClassifier)
- 【小米oj】 小米兔的轨迹