pageoffice在vue+springboot前后端分离项目中的应用方法

1.因浏览器禁用插件无法使用内嵌在浏览器内部的pageoffice打开方式,需要使用4.0新增的POBrowser方式来在外部打开一个窗口去在线打开office
故下面介绍的是基于4.0在线打开文档的一种方式

2.因pageoffice提供的示例全部是基于jsp的,所以无法放在vue中使用,所以我只能在后端使用thymleaf模板去做这件事情。

首先可以去pageoffice的官网的下载中心下载最新版的office示例:

下载最新版即可

打开示例中的一个jsp文件如下:
在这里插入图片描述

JSP中这么写但是我们肯定是用的html不能这么写 我们首先在springboot
pom.xml中引入thymleaf模板,具体设置可以百度

在上面jsp中有黄色的 <% %> 的代码块很容易能看出来是后端的代码,我们要做的就是把这一块移到后台,和前面的页面分开。

我们首先在配置文件中加入几个配置,代码如下:

#########################################
####pageoffice
#########################################
#磁盘目录用来存放PageOffice注册成功之后生成的license.lic文件
posyspath: d:/lic
#设置PageOffice自带印章管理程序的登录密码
popassword: 123456

然后在后端的controller层创建一个pageofficeController,代码如下:

/**
 * @author wj
 * @version 1.0
 * @className pageofficeController
 * @description pageoffice测试
 * @date 2019/11/07 8:30
 */
@Controller
public class pageofficeController {
    @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("/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的登录密码
        //设置印章数据库文件poseal.db存放目录,该文件在当前demo的“集成文件”夹中
        adminSeal.setSysPath(poSysPath);

        ServletRegistrationBean srb = new ServletRegistrationBean(adminSeal);
        srb.addUrlMappings("/adminseal.zz");
        srb.addUrlMappings("/sealimage.zz");
        srb.addUrlMappings("/loginseal.zz");
        return srb;
    }

    /**
     * 查看word
     *
     * @param request
     * @param map
     * @return
     */
    @RequestMapping(value = "/word", method = RequestMethod.GET)
    public String showWord(HttpServletRequest request, Map<String, Object> map) {
        //--- PageOffice的调用代码 开始 -----
        PageOfficeCtrl poCtrl = new PageOfficeCtrl(request);
        poCtrl.setServerPage("/poserver.zz");//设置授权程序servlet
        poCtrl.webOpen("d:\\test.doc", OpenModeType.docAdmin, "张三");
        map.put("pageoffice", poCtrl.getHtmlCode("PageOfficeCtrl1"));
        //--- PageOffice的调用代码 结束 -----
//        ModelAndView mv = new ModelAndView("Word");
        return "readword/Word";
    }

    @RequestMapping("/newword")
    public String tonewword() {
        return "readword/jump";
    }

前端2个HTML放在一个readword文件夹下

jump.html如下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript"  src="./jquery.min.js"></script>
    <script type="text/javascript"  src="./pageoffice.js" id="po_js_main"></script>
</head >
<body >
<!--<a href="javascript: ">123123</a>-->

</body >
<script type="text/javascript">
    setTimeout(load,500);
    function load() {
        // 最新的打开方式,width和height为打开的最外部边框大小
        POBrowser.openWindowModeless('/word','width=1440px;height=860px');
    }
</script>
</html>

Word.html如下:

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript"  src="./jquery.min.js"></script>
</head>
<body>
<div style="width:auto;height:790px;margin: 0 auto;" th:utext="${pageoffice}">
</div>
</body>
<script type="text/javascript">
</script>
</html>

最后附上我的项目层次结构:
在这里插入图片描述

前端调用pageoffice只需要调用接口“/newword”即可。

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值