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

实现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 refresh

spring.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 = "/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 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 = "AddSign", method = RequestMethod.GET)
    public ModelAndView showWord11(HttpServletRequest request, Map 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的模板

index.html




    Index
    




PageOffice 集成效果演示

templates\AddSeal\PDF1.html








templates\AddSign\PDF1.html








代码写完后,配置环境

1电脑创建d:/lic/ 这个目录,里面添加pageOffice自带的数据库。
2创建
目录结构,每个目录放入一个test1.pdf的pdf文档。
3启动服务

最终效果

在这里插入图片描述
index页面打开效果

点 打开pdf盖章

在这里插入图片描述
盖章后的效果

在这里插入图片描述
签字后的效果
git项目地址为

https://github.com/qingxue0606/PDFseal

在这里插入图片描述
需要的,数据库文档,和pdf文档都在data目录中。

有问题可访问 http://www.zhuozhengsoft.com/

你可能感兴趣的:(pdf,盖章,java)