实现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在线盖章,签字的功能相关推荐

  1. Java 实现word pdf在线预览

    Java 实现word pdf在线预览 最近项目有这个需求,查找了一些资料,在这整理一下. 首先,pdf的文件,浏览器本身支持预览,不需要做什么处理. controller: 简单说下思路:就是利用i ...

  2. Java springBoot项目整合海康威视摄像头抓拍车辆功能

    Java springBoot项目整合海康威视摄像头抓拍获取车辆信息功能 这篇文字写于去年的11月份,项目部署上去一段时间后,被反应有自动停止抓拍的BUG,我在代码中的解决办法是写了一个定时任务, 让 ...

  3. 基于Java+SpringBoot+Thymeleaf+Mysql在线电子书阅读系统学习系统设计与实现

    项目背景和意义 目的:本课题主要目标是设计并能够实现一个基于web网页的电子书阅读系统,整个网站项目使用了B/S架构,基于java的springboot框架下开发:管理员通过后台录入信息.管理信息,设 ...

  4. 基于Java+SpringBoot+Thymeleaf+Mysql在线教育视频点播学习系统设计与实现

    项目背景和意义 目的:本课题主要目标是设计并能够实现一个基于java的视频点播系统,系统整体使用了基于浏览的java+MySql的B/S架构,技术上使用了基于java的springboot框架:使用浏 ...

  5. Java+SpringBoot+vue+elementui在线答疑网站系统mysql maven毕业设计

    一.源码描述   这是一款javaEE的前后端分离的Springboot和vue源码,前端vue.js,采用javaweb,基于B/S模式,idea或者eclipse为开发工具,功能也比较全面,毕业设 ...

  6. 基于Java+SpringBoot+Thymeleaf+Mysql在线考试系统设计与实现

    项目背景和意义 目的:本课题主要目标是设计并能够实现一个在线考试的java系统,整体使用了基于浏览器的B/S架构,技术上使用了基于java的springboot框架:使用浏览器,通过后台添加考试题目, ...

  7. Java+SpringBoot+JSP实现在线心理评测与咨询系统

    文末获取源码 开发语言:Java 框架:SpringBoot 技术:JSP JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7/8.0 数据库工具:Navicat11 开发软 ...

  8. springboot整合pdf.js实现在线预览pdf文件

    今天在项目中实现pdf在线预览的功能的如图, 通过百度,查询合适的方法,最为简单的的是通过pdf.js的插件在前台展示.本以为是挺容易实现的,但都有莫名其妙的错误. 第一步:下载源码https://g ...

  9. 基于javaweb的在线嘿嘿网盘系统设计和实现(java+springboot+ssm+mysql)

    基于javaweb的在线嘿嘿网盘系统设计和实现(java+springboot+ssm+mysql) 运行环境 Java≥8.MySQL≥5.7 开发工具 eclipse/idea/myeclipse ...

  10. java 查看pdf_Java中实现pdf在线查看和下载

    Java中实现PDF的在线查看和下载,可以以servlet来实现. /** * 支持在线打开和下载 * * @param filePath * @param response * @param isO ...

最新文章

  1. PHP与SQL数据库交互中文乱码怎么办
  2. redis internal【转】
  3. Linux内核中流量控制(4)
  4. 一文搞懂*argv和**kwargs
  5. C# DllImport的用法
  6. Qt 实现控件抖动 动画窗口抖动 QQ抖动
  7. keil注册机激活的方法
  8. F检验 matlab
  9. ChinaMode评选:2010最受瞩目的45个初创公司/产品
  10. 关于AndEngine显示全屏问题
  11. C语言 | 数组升序排列(冒泡排序法)
  12. VFS(virtual File System) 虚拟文件系统
  13. 哪个免费查重系统会更靠谱呢?
  14. 87: 企业监控系统部署 、 搭建Harbor私有仓库 、 总结和答疑
  15. 60V输入电压LDO,MST56XXB
  16. 图片中的alt标签和title标签
  17. Windows下默认远程下载
  18. 【应用实战】各种串口转USB转串口方案参考2020-3-18
  19. 【观察】ObjectScale:重新定义下一代对象存储,戴尔科技的重构与创新
  20. [考研经验]2018年南京大学【计算机技术专硕】考试准备过程与经验小述

热门文章

  1. 算法篇:最长公共子串(牛客)
  2. android 应用市场发布以及流程(非原创)
  3. echart 地图 某个地区_一个让echarts中国地图包含省市轮廓的技巧
  4. 教你划分必要开支和非必要开支
  5. plsql:导出数据到excel
  6. 什么是python的内置函数_python 内置函数
  7. ESP8266WiFi模块资料整理
  8. 深度解析工业机器人主流离线编程软件
  9. java 贝叶斯抠图_毕业论文 基于贝叶斯算法的自动抠图程序设计与实现.doc
  10. 解决hash冲突的三种方法