java|java springboot实现pdf在线盖章,签字的功能


实现pdf在线盖章,签字的功能

  • 为什么要使用pdf签章
    • 什么插件能实现pdf签章功能
    • spirngboot如果集成pageOffice并实现pdf签章呢
    • 最终效果

为什么要使用pdf签章 pdf在办公过程中,做矢量文档工具,使用比较广范。
在文档审批和发布过程中,也要求最后要pdf有效的签名或者印章,以示文档的重要性。
什么插件能实现pdf签章功能 卓正软件公司的pageOffice,专门实现办公文档的在线编辑,在办公文档编辑领域,提供的插件比较丰富。为做办公系统的程序员节约了大量时间。最新的5.0版本,推出了pdf的在线签章功能。
实现了pdf签发的全流程处理。
spirngboot如果集成pageOffice并实现pdf签章呢 本程序员实现了一个最简单的pdf签章的功能。
项目的结构如下图
java|java springboot实现pdf在线盖章,签字的功能
文章图片

第一步
pom.xml
4.0.0org.springframework.boot spring-boot-starter-parent 2.3.4.RELEASE com.example demo 0.0.1-SNAPSHOT PDFseal Demo project for Spring Boot1.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在线盖章,签字的功能】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创建java|java springboot实现pdf在线盖章,签字的功能
文章图片

目录结构,每个目录放入一个test1.pdf的pdf文档。
3启动服务
最终效果 java|java springboot实现pdf在线盖章,签字的功能
文章图片

index页面打开效果
点 打开pdf盖章
java|java springboot实现pdf在线盖章,签字的功能
文章图片

盖章后的效果
java|java springboot实现pdf在线盖章,签字的功能
文章图片

签字后的效果
git项目地址为
https://github.com/qingxue0606/PDFseal
java|java springboot实现pdf在线盖章,签字的功能
文章图片

需要的,数据库文档,和pdf文档都在data目录中。
有问题可访问 http://www.zhuozhengsoft.com/

    推荐阅读