Java填充PDF并返回填充后PDF文件及对应base64码
一、安装Adobe Acrobat 9 Pro
Adobe Acrobat 9 Pro-PDF编辑软件
链接:https://pan.baidu.com/s/1TnA_0WguWXvBd05wRv0S4Q?pwd=JBKL
提取码:JBKL
1.鼠标右击,全部解压缩
2.右击,点击以管理员身份运行
3.点击安装
4.点击下一步
5.自定义用户名,填写下方序号,点击下一步
1118-4018-6583-4956-2486-7805
6.勾选自定义,点击下一步
7.点击更改,选择自己想要安装的路径地址,点击确定
8.点击下一步
9.点击安装
10.等待安装
11.安装成功,点击完成
12.双击打卡安装好的快捷方式
13.点击接受
14.点击以后注册
15.成功进入软件
16.开始使用吧,创建空白页面(也可以使用编辑好的模板保存为PDF打开使用)
17.点击表单-添加或编辑域
18.点击文件,另存为pdf格式
二、java代码
1.引入依赖
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.5.13.2</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext-asian</artifactId>
<version>5.2.0</version>
</dependency>
2.java方法
@RequestMapping("templateController.do")
public String execute() throws Exception {
//获取模板路径
PdfReader reader = new PdfReader("D:\\zhuomian\\1.pdf");
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PdfStamper stamper = new PdfStamper(reader, baos);
AcroFields form = stamper.getAcroFields();
BaseFont bf = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
form.addSubstitutionFont(bf);
form.setField("name", "姓名");
form.setField("userid", "123321");
form.setField("loginid", "名称");
stamper.setFormFlattening(true);
stamper.close();
reader.close();
// 将ByteArrayOutputStream的内容写入文件 保存新增文件路径名称
try (FileOutputStream fos = new FileOutputStream("D:\\zhuomian\\5.pdf")) {
fos.write(baos.toByteArray());
}
// 将ByteArrayOutputStream的内容转换为Base64字符串
byte[] pdfBytes = baos.toByteArray();
// 获取Base64编码器实例
Base64.Encoder encoder = Base64.getEncoder();
// 将pdfBytes编码成Base64字符串
String base64EncodedPdf = encoder.encodeToString(pdfBytes);
// base64EncodedPdf即为加密后的字符串,可以根据需要进行输出或存储
System.out.println(base64EncodedPdf);
// 返回Base64字符串
HttpServletRequest request = getRequest();
request.setAttribute("base64",base64EncodedPdf);
return "/archives/common/collection/test";
}
三、前端页面
<html>
<head>
<title>pdf页面</title>
<%
String base64 = request.getAttribute("base64").toString().replaceAll("\r","").replaceAll("\n","");
%>
</head>
<body style="padding:10px" class="no-scrollbar">
<div style="width:100%;height:100%">
<embed src=" " style="width:100%;height:100%;text-align:center"></img>
</div>
</body>
</html>
<script type="text/javascript">
window.onload=function () {
var base64 = "<%=base64%>";
document.getElementsByTagName("embed
")[0].src = "data:application/pdf;base64,"+base64;
}
</script>
前端页面效果展示