spring boot集成pageoffice实现对PDF文件的在线签字、盖章
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.RestController;
/**
@Package: com.zks.pageoffice
@ClassName: DemoController
@Author: ZhouKaiShun
@CreateTime: 2021/9/10 10:18
@Description:
*/
@Component
public class RegistrationBean {
@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();
//设置PageOffice注册成功后,license.lic文件存放的目录
poserver.setSysPath(poSysPath);
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();
//设置印章管理员admin的登录密码
adminSeal.setAdminPassword(poPassWord);
adminSeal.setSysPath(poSysPath);
ServletRegistrationBean srb = new ServletRegistrationBean(adminSeal);
srb.addUrlMappings(“/adminseal.zz”);
srb.addUrlMappings(“/sealimage.zz”);
srb.addUrlMappings(“/loginseal.zz”);
return srb;
}
}
[](()3、controller调用
package com.zks.pageoffice.controller;
import com.zhuozhengsoft.pageoffice.FileSaver;
import com.zhuozhengsoft.pageoffice.OpenModeType;
import com.zhuozhengsoft.pageoffice.PDFCtrl;
import com.zhuozhengsoft.pageoffice.PageOfficeCtrl;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
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.util.Map;
/**
@Package: com.zks.pageoffice
@ClassName: PDFInsertSealController
@Author: ZhouKaiShun
@CreateTime: 2021/9/10 10:19
@Description:
*/
@RestController
@Slf4j
public class PDFInsertSealController {
@Value(“${spring.profiles.active}”)
public String active;
@Value(“${signpath}”)
public String signPath;
@Value(“${sealpath}”)
private String sealPath;
@RequestMapping(value = “/”, method = RequestMethod.GET)
public ModelAndView showIndex() {
ModelAndView mv = new ModelAndView(“Index”);
return mv;
}
/**
@description:盖章功能
@return:
@author: ZhouKaiShun
@time: 2021/9/10 13:40
*/
@GetMapping(“/AddSeal”)
public ModelAndView showWord(HttpServletRequest request, Map<String, Object> map) {
log.info(“准备盖章”);
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);
//此处路径为服务器端文档路径 如果是Linux服务器上的路径,前面需要加“file://” (这个点找了好久…)
pdfCtrl1.webOpen(active.equals(“prod”) ? “file://” + sealPath : sealPath);
map.put(“pageoffice”, pdfCtrl1.getHtmlCode(“PDFCtrl1”));
ModelAndView mv = new ModelAndView(“AddSeal/PDF1”);
return mv;
}
/**
@description:签字功能
@return:
@author: ZhouKaiShun
@time: 2021/9/10 13:40
*/
@GetMapping(“AddSign”)
public ModelAndView showWord11(HttpServletRequest request, Map<String, Object> map) {
log.info(“准备签字”);
//PageOfficeCtrl pdfCtrl1 = new PageOfficeCtrl(request);
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);
//此处路径为服务器端文档路径 如果是Linux服务器上的路径,前面需要加“file://” (这个点找了好久…)
pdfCtrl1.webOpen(active.equals(“prod”) ? “file://” + signPath : signPath);
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(sealPath);
fs.close();
}
@RequestMapping(“/AddSign/save”)
public void save2(HttpServletRequest request, HttpServletResponse response) {
FileSaver fs = new FileSaver(request, response);
//此处路径为服务器端文档路径
fs.saveToFile(signPath);
fs.close();
}
}
两个主要接口,一个用于签名,一个用于盖章
[](()controller中的一些配置项
application-dev.yml
server:
port: 8080
用于存放注册的信息以及.db文件,这个db文件包含了签章的一些信息,pageoffice帮我们集成好了 我们不用管,只需要自己创建签章即可
posyspath: d:/lic/
