实现pdf在线盖章,签字的功能
- 为什么要使用pdf签章
-
- 什么插件能实现pdf签章功能
- spirngboot如果集成pageOffice并实现pdf签章呢
- 最终效果
为什么要使用pdf签章 pdf在办公过程中,做矢量文档工具,使用比较广范。
在文档审批和发布过程中,也要求最后要pdf有效的签名或者印章,以示文档的重要性。
什么插件能实现pdf签章功能 卓正软件公司的pageOffice,专门实现办公文档的在线编辑,在办公文档编辑领域,提供的插件比较丰富。为做办公系统的程序员节约了大量时间。最新的5.0版本,推出了pdf的在线签章功能。
实现了pdf签发的全流程处理。
spirngboot如果集成pageOffice并实现pdf签章呢 本程序员实现了一个最简单的pdf签章的功能。
项目的结构如下图
文章图片
第一步
pom.xml
4.0.0 org.springframework.boot
spring-boot-starter-parent
2.3.4.RELEASE
com.example
demo
0.0.1-SNAPSHOT
PDFseal
Demo project for Spring Boot 1.8
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-thymeleaf
org.xerial
sqlite-jdbc
3.7.2
com.zhuozhengsoft
pageoffice
5.1.0.2
2appplication.properties 文档的设置。
########################################################
###PageOffice
########################################################
posyspath=d:/lic/
popassword=111111
########################################################
###THYMELEAF (ThymeleafAutoConfiguration)
########################################################
spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.suffix=.html
#spring.thymeleaf.mode=HTML5
#spring.thymeleaf.encoding=UTF-8
# ;
charset= is added
#spring.thymeleaf.content-type=text/html
# set to false for hot refreshspring.thymeleaf.cache=false
3写入pageOffice定义的bean
DemoController.java
package com.example.demo;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.util.ResourceUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;
import java.io.FileNotFoundException;
/**
* @author Administrator
*/
@RestController
public class DemoController {
@Value("${posyspath}")
private String poSysPath;
@Value("${popassword}")
private String poPassWord;
/**
* 添加PageOffice的服务器端授权程序Servlet(必须)
* @return
*/
@Bean
public ServletRegistrationBean servletRegistrationBean() {
com.zhuozhengsoft.pageoffice.poserver.Server poserver = new com.zhuozhengsoft.pageoffice.poserver.Server();
poserver.setSysPath(poSysPath);
//设置PageOffice注册成功后,license.lic文件存放的目录
ServletRegistrationBean srb = new ServletRegistrationBean(poserver);
srb.addUrlMappings("/poserver.zz");
srb.addUrlMappings("/posetup.exe");
srb.addUrlMappings("/pageoffice.js");
srb.addUrlMappings("/jquery.min.js");
srb.addUrlMappings("/pobstyle.css");
srb.addUrlMappings("/sealsetup.exe");
return srb;
//
}/**
* 添加印章管理程序Servlet(可选)
* @return
*/
@Bean
public ServletRegistrationBean servletRegistrationBean2() {
com.zhuozhengsoft.pageoffice.poserver.AdminSeal adminSeal = new com.zhuozhengsoft.pageoffice.poserver.AdminSeal();
adminSeal.setAdminPassword(poPassWord);
//设置印章管理员admin的登录密码
adminSeal.setSysPath(poSysPath);
//设置印章数据库文件poseal.db存放的目录
ServletRegistrationBean srb = new ServletRegistrationBean(adminSeal);
srb.addUrlMappings("/adminseal.zz");
srb.addUrlMappings("/sealimage.zz");
srb.addUrlMappings("/loginseal.zz");
return srb;
//
}
}
4开始写后端业务代码。
PDFInsertSealController.java
package com.example.demo;
import com.zhuozhengsoft.pageoffice.FileSaver;
import com.zhuozhengsoft.pageoffice.PDFCtrl;
import org.springframework.util.ResourceUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.FileNotFoundException;
import java.util.Map;
@RestController
public class PDFInsertSealController {@RequestMapping(value = "https://www.it610.com/index", method = RequestMethod.GET)
public ModelAndView showIndex() {
ModelAndView mv = new ModelAndView("Index");
return mv;
}
//盖章功能
@RequestMapping(value = "https://www.it610.com/AddSeal", method = RequestMethod.GET)
public ModelAndView showWord(HttpServletRequest request, Map, Object> map) {
PDFCtrl pdfCtrl1 = new PDFCtrl(request);
pdfCtrl1.setServerPage(request.getContextPath() + "/poserver.zz");
//此行必须
//设置保存页面
pdfCtrl1.setSaveFilePage("/AddSeal/save");
// Create custom toolbar
pdfCtrl1.addCustomToolButton("保存", "Save()", 1);
pdfCtrl1.addCustomToolButton("加盖印章", "InsertSeal()", 2);
//此处路径为服务器端文档路径
pdfCtrl1.webOpen("D:\\doc\\AddSeal\\test1.pdf");
map.put("pageoffice", pdfCtrl1.getHtmlCode("PDFCtrl1"));
ModelAndView mv = new ModelAndView("/AddSeal/PDF1");
return mv;
}//签字功能
@RequestMapping(value = "https://www.it610.com/article/AddSign", method = RequestMethod.GET)
public ModelAndView showWord11(HttpServletRequest request, Map, Object> map) {
PDFCtrl pdfCtrl1 = new PDFCtrl(request);
pdfCtrl1.setServerPage(request.getContextPath() + "/poserver.zz");
//此行必须
//设置保存页面
pdfCtrl1.setSaveFilePage("/AddSign/save");
// Create custom toolbar
pdfCtrl1.addCustomToolButton("保存", "Save()", 1);
pdfCtrl1.addCustomToolButton("签字", "AddHandSign()", 3);
//此处路径为服务器端文档路径
pdfCtrl1.webOpen("D:\\doc\\AddSign\\test1.pdf");
map.put("pageoffice", pdfCtrl1.getHtmlCode("PDFCtrl1"));
ModelAndView mv = new ModelAndView("/AddSign/PDF1");
return mv;
}@RequestMapping("/AddSeal/save")
public void save(HttpServletRequest request, HttpServletResponse response) {
FileSaver fs = new FileSaver(request, response);
//此处路径为服务器端文档路径
fs.saveToFile("D:/doc/AddSeal/" + fs.getFileName());
fs.close();
}@RequestMapping("/AddSign/save")
public void save2(HttpServletRequest request, HttpServletResponse response) {
FileSaver fs = new FileSaver(request, response);
//此处路径为服务器端文档路径
fs.saveToFile("D:/doc/AddSign/" + fs.getFileName());
fs.close();
}}
最后
写上三个对应的thymleleaf的模板
【java|java springboot实现pdf在线盖章,签字的功能】
文章图片
index.html
Index - 锐客网
type="text/javascript" src="https://www.it610.com/article/pageoffice.js" >
PageOffice 集成效果演示
templates\AddSeal\PDF1.html
language="javascript" type="text/javascript">
function Save() {
document.getElementById("PDFCtrl1").WebSave();
}function InsertSeal() {
try {
document.getElementById("PDFCtrl1").ZoomSeal.AddSeal();
//如果使用ZoomSeal中的USBKEY方式盖章,第一个参数不能为盖章用户登录名,只能为null或者空字符串
} catch(e) {}
}
templates\AddSign\PDF1.html
language="javascript" type="text/javascript">
function Save() {
document.getElementById("PDFCtrl1").WebSave();
}function AddHandSign() {
try {
document.getElementById("PDFCtrl1").ZoomSeal.AddHandSign();
} catch(e) {}
}
代码写完后,配置环境
1电脑创建d:/lic/ 这个目录,里面添加pageOffice自带的数据库。
2创建
文章图片
目录结构,每个目录放入一个test1.pdf的pdf文档。
3启动服务
最终效果
文章图片
index页面打开效果
点 打开pdf盖章
文章图片
盖章后的效果
文章图片
签字后的效果
git项目地址为
https://github.com/qingxue0606/PDFseal
文章图片
需要的,数据库文档,和pdf文档都在data目录中。
有问题可访问 http://www.zhuozhengsoft.com/
推荐阅读
- java|java webstart 自动升级_Java web start--基于jnlp的软件更新
- php|html5 canvas实现的手机端签字板
- java|java web实训任务书,课程设计任务书模板-《JavaWeb程序设计》.doc
- java|Mybatis-plus 的 @Version注解
- javaWEb|黑马程序( 12、Filter 过滤器 ,Listener监听器)
- SpringMVC|SpringMVC 域对象共享数据
- Java|SpringBoot实现Excel导入导出,性能爆表,用起来够优雅,
- mall学习教程|SpringBoot实现Excel导入导出,性能爆表,用起来够优雅~
- Android开发实践|深入理解Java Lambda表达式,匿名函数,闭包