java通过PDF模板填写PDF表单
本⽂实例为⼤家分享了java通过PDF模板填写PDF表单的具体代码,包括图⽚,供⼤家参考,具体内容如下需要⽤到的java包:
itext.jar、iTextAsian.jar的JAR包。这个包⾥⾯定义了与中⽂输出相关的⼀些⽂件。
编写的表单如下:
import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import DocumentException;
import Image;
import Rectangle;
import pdf.AcroFields;
import pdf.BaseFont;
import pdf.PdfContentByte;
import pdf.PdfReader;
import pdf.PdfStamper;
/**
* pdf⼯具类
* @author MOSHUNWEI
* @since 2018-02-01
*/
public class PDFUtil {
/**
* 根据模板⽣成pdf
* @param data Map(String,Object)
* @return
*/
public static boolean createPDF(String path,Map<String, Object> data) {
PdfReader reader = null;
AcroFields s = null;
PdfStamper ps = null;
ByteArrayOutputStream bos = null;
try {
reader = new PdfReader("D:\\test.pdf");
bos = new ByteArrayOutputStream();
ps = new PdfStamper(reader, bos);
s = ps.getAcroFields();
/**
* 使⽤中⽂字体使⽤ AcroFields填充值的不需要在程序中设置字体,在模板⽂件中设置字体为中⽂字体 Adobe 宋体 std L
*/
BaseFont bfChinese = ateFont("STSongStd-Light", "UniGB-UCS2-H", false);
/**
* 设置编码格式
*/
s.addSubstitutionFont(bfChinese);
// 遍历data 给pdf表单表格赋值
for (String key : data.keySet()) {
s.setField((key).toString());
}
// 如果为false那么⽣成的PDF⽂件还能编辑,⼀定要设为true
ps.setFormFlattening(true);
/**
* 添加图⽚
*/
String imgpath="D:/n5.jpg";
int pageNo = s.getFieldPositions("img").get(0).page;
Rectangle signRect = s.getFieldPositions("img").get(0).position;
float x = Left();
float y = Bottom();
// 读图⽚
Image image = Instance(imgpath);
// 获取操作的页⾯
PdfContentByte under = ps.getOverContent(pageNo);
// 根据域的⼤⼩缩放图⽚
image.Width(), Height());
/
/ 添加图⽚
image.setAbsolutePosition(x, y);
under.addImage(image);
@SuppressWarnings("resource")
FileOutputStream fos = new FileOutputStream("d:\\shouju_fb.pdf");
fos.ByteArray());
return true;
} catch (IOException | DocumentException e) {
System.out.println("读取⽂件异常");
e.printStackTrace();
return false;
}finally {
try {
bos.close();
ps.close();
reader.close();
} catch (IOException | DocumentException e) {
System.out.println("关闭流异常");
e.printStackTrace();
}
}
}
public static void main(String[] args) {
java和jspMap<String, Object> data = new HashMap<String, Object>();
data.put("id", "12312321");
data.put("name", "⼩帅哥");
data.put("sex", "男");
data.put("age", "21");
}
}
还有相应的编辑pdf表单的⼯具,默认⽤Adobe Acrobat。
以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论