java springboot实现pdf在线盖章,签字的功能
实现pdf在线盖章,签字的功能
- 为什么要使用pdf签章
- 什么插件能实现pdf签章功能
- spirngboot如果集成pageOffice并实现pdf签章呢
- 最终效果
为什么要使用pdf签章
pdf在办公过程中,做矢量文档工具,使用比较广范。
在文档审批和发布过程中,也要求最后要pdf有效的签名或者印章,以示文档的重要性。
什么插件能实现pdf签章功能
卓正软件公司的pageOffice,专门实现办公文档的在线编辑,在办公文档编辑领域,提供的插件比较丰富。为做办公系统的程序员节约了大量时间。最新的5.0版本,推出了pdf的在线签章功能。
实现了pdf签发的全流程处理。
spirngboot如果集成pageOffice并实现pdf签章呢
本程序员实现了一个最简单的pdf签章的功能。
项目的结构如下图
第一步
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.4.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.example</groupId><artifactId>demo</artifactId><version>0.0.1-SNAPSHOT</version><name>PDFseal</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><!-- 添加Sqlite依赖(可选:如果不需要使用印章功能的话,不需要添加此依赖 )--><dependency><groupId>org.xerial</groupId><artifactId>sqlite-jdbc</artifactId><version>3.7.2</version></dependency><!-- 添加PageOffice依赖(必须) --><dependency><groupId>com.zhuozhengsoft</groupId><artifactId>pageoffice</artifactId><version>5.1.0.2</version></dependency></dependencies></project>
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=<encoding> 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*/@Beanpublic 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*/@Beanpublic 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 = "/index", method = RequestMethod.GET)public ModelAndView showIndex() {ModelAndView mv = new ModelAndView("Index");return mv;}
//盖章功能@RequestMapping(value = "/AddSeal", method = RequestMethod.GET)public ModelAndView showWord(HttpServletRequest request, Map<String, Object> map) {PDFCtrl pdfCtrl1 = new PDFCtrl(request);pdfCtrl1.setServerPage(request.getContextPath() + "/poserver.zz"); //此行必须//设置保存页面pdfCtrl1.setSaveFilePage("/AddSeal/save");// Create custom toolbarpdfCtrl1.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 = "AddSign", method = RequestMethod.GET)public ModelAndView showWord11(HttpServletRequest request, Map<String, Object> map) {PDFCtrl pdfCtrl1 = new PDFCtrl(request);pdfCtrl1.setServerPage(request.getContextPath() + "/poserver.zz"); //此行必须//设置保存页面pdfCtrl1.setSaveFilePage("/AddSign/save");// Create custom toolbarpdfCtrl1.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的模板
index.html
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org"xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3">
<head><title>Index</title><script type="text/javascript" src="pageoffice.js" ></script></head><body>
<h1 th:inline="text">PageOffice 集成效果演示</h1><div style="width: 49%;float: left "><a href="javascript:POBrowser.openWindowModeless('AddSeal','fullscreen=yes;');">打开pdf盖章 </a><br><a href="javascript:POBrowser.openWindowModeless('AddSign','fullscreen=yes;');">打开pdf签字</a><br></div></body>
</html>
templates\AddSeal\PDF1.html
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org"xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3">
<head>
</head>
<body style="overflow:hidden">
<!--************** 卓正 PageOffice 客户端代码开始 ************************-->
<script language="javascript" type="text/javascript">function Save() {document.getElementById("PDFCtrl1").WebSave();}function InsertSeal() {try {document.getElementById("PDFCtrl1").ZoomSeal.AddSeal();//如果使用ZoomSeal中的USBKEY方式盖章,第一个参数不能为盖章用户登录名,只能为null或者空字符串} catch(e) {}}</script>
<div style="height:850px;width:auto;" th:utext="${pageoffice}"></div>
</body></html>
templates\AddSign\PDF1.html
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org"xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3">
<head>
</head>
<body style="overflow:hidden">
<!--************** 卓正 PageOffice 客户端代码开始 ************************-->
<script language="javascript" type="text/javascript">function Save() {document.getElementById("PDFCtrl1").WebSave();}function AddHandSign() {try {document.getElementById("PDFCtrl1").ZoomSeal.AddHandSign();} catch(e) {}}</script>
<div style="height:850px;width:auto;" th:utext="${pageoffice}"></div>
</body>
</html>
代码写完后,配置环境
1电脑创建d:/lic/ 这个目录,里面添加pageOffice自带的数据库。
2创建
目录结构,每个目录放入一个test1.pdf的pdf文档。
3启动服务
最终效果
index页面打开效果
点 打开pdf盖章
盖章后的效果
签字后的效果
git项目地址为
https://github.com/qingxue0606/PDFseal
需要的,数据库文档,和pdf文档都在data目录中。
有问题可访问 http://www.zhuozhengsoft.com/
java springboot实现pdf在线盖章,签字的功能相关推荐
- Java 实现word pdf在线预览
Java 实现word pdf在线预览 最近项目有这个需求,查找了一些资料,在这整理一下. 首先,pdf的文件,浏览器本身支持预览,不需要做什么处理. controller: 简单说下思路:就是利用i ...
- Java springBoot项目整合海康威视摄像头抓拍车辆功能
Java springBoot项目整合海康威视摄像头抓拍获取车辆信息功能 这篇文字写于去年的11月份,项目部署上去一段时间后,被反应有自动停止抓拍的BUG,我在代码中的解决办法是写了一个定时任务, 让 ...
- 基于Java+SpringBoot+Thymeleaf+Mysql在线电子书阅读系统学习系统设计与实现
项目背景和意义 目的:本课题主要目标是设计并能够实现一个基于web网页的电子书阅读系统,整个网站项目使用了B/S架构,基于java的springboot框架下开发:管理员通过后台录入信息.管理信息,设 ...
- 基于Java+SpringBoot+Thymeleaf+Mysql在线教育视频点播学习系统设计与实现
项目背景和意义 目的:本课题主要目标是设计并能够实现一个基于java的视频点播系统,系统整体使用了基于浏览的java+MySql的B/S架构,技术上使用了基于java的springboot框架:使用浏 ...
- Java+SpringBoot+vue+elementui在线答疑网站系统mysql maven毕业设计
一.源码描述 这是一款javaEE的前后端分离的Springboot和vue源码,前端vue.js,采用javaweb,基于B/S模式,idea或者eclipse为开发工具,功能也比较全面,毕业设 ...
- 基于Java+SpringBoot+Thymeleaf+Mysql在线考试系统设计与实现
项目背景和意义 目的:本课题主要目标是设计并能够实现一个在线考试的java系统,整体使用了基于浏览器的B/S架构,技术上使用了基于java的springboot框架:使用浏览器,通过后台添加考试题目, ...
- Java+SpringBoot+JSP实现在线心理评测与咨询系统
文末获取源码 开发语言:Java 框架:SpringBoot 技术:JSP JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7/8.0 数据库工具:Navicat11 开发软 ...
- springboot整合pdf.js实现在线预览pdf文件
今天在项目中实现pdf在线预览的功能的如图, 通过百度,查询合适的方法,最为简单的的是通过pdf.js的插件在前台展示.本以为是挺容易实现的,但都有莫名其妙的错误. 第一步:下载源码https://g ...
- 基于javaweb的在线嘿嘿网盘系统设计和实现(java+springboot+ssm+mysql)
基于javaweb的在线嘿嘿网盘系统设计和实现(java+springboot+ssm+mysql) 运行环境 Java≥8.MySQL≥5.7 开发工具 eclipse/idea/myeclipse ...
- java 查看pdf_Java中实现pdf在线查看和下载
Java中实现PDF的在线查看和下载,可以以servlet来实现. /** * 支持在线打开和下载 * * @param filePath * @param response * @param isO ...
最新文章
- PHP与SQL数据库交互中文乱码怎么办
- redis internal【转】
- Linux内核中流量控制(4)
- 一文搞懂*argv和**kwargs
- C# DllImport的用法
- Qt 实现控件抖动 动画窗口抖动 QQ抖动
- keil注册机激活的方法
- F检验 matlab
- ChinaMode评选:2010最受瞩目的45个初创公司/产品
- 关于AndEngine显示全屏问题
- C语言 | 数组升序排列(冒泡排序法)
- VFS(virtual File System) 虚拟文件系统
- 哪个免费查重系统会更靠谱呢?
- 87: 企业监控系统部署 、 搭建Harbor私有仓库 、 总结和答疑
- 60V输入电压LDO,MST56XXB
- 图片中的alt标签和title标签
- Windows下默认远程下载
- 【应用实战】各种串口转USB转串口方案参考2020-3-18
- 【观察】ObjectScale:重新定义下一代对象存储,戴尔科技的重构与创新
- [考研经验]2018年南京大学【计算机技术专硕】考试准备过程与经验小述