PageOffice 开发者中心 PageOffice 开发者中心
首页
文档
  • 后端Java手册 (opens new window)
  • 后端.netcore手册 (opens new window)
  • 前端JavaScript手册 (opens new window)
下载
购买 (opens new window)
首页
文档
  • 后端Java手册 (opens new window)
  • 后端.netcore手册 (opens new window)
  • 前端JavaScript手册 (opens new window)
下载
购买 (opens new window)
  • 开始

    • 介绍
    • 快速上手

    • 升级步骤

    • 项目部署

  • 通用控制

  • Word

  • Excel

  • PDF

  • FileMaker

  • PPT

  • 更多

目录

PageOffice最简集成代码(VUE+.NetCore)

# PageOffice最简集成代码(VUE+.NetCore)

本文描述了PageOffice产品在(VUE+.NetCore)前后端分离的项目中如何集成调用。

假设开发环境电脑IP为:

192.168.1.100

# 后端.NetCore项目

  1. 新建.NetCore后端项目:netcore-back。比如,项目端口为:5000

  2. 在此项目的“依赖项-包-管理NuGet程序包”中搜索到“Zhuozhengsoft.PageOffice"程序后安装最新版本。

  3. 下载PageOffice客户端安装程序。

    • windows客户端安装程序:posetup_6.x.x.x.exe;
    • 国产操作系统客户端安装程序:对应芯片的PageOffice客户端deb安装包;

PageOffice客户端安装程序下载地址:https://www.zhuozhengsoft.com/dowm/ (opens new window)

  1. 拷贝PageOffice客户端安装程序到项目的bin目录下(项目的生成目录,比如:bin\Debug\net5.0)

  2. 修改Startup.cs文件,添加PageOffice服务器端程序的相关配置,代码如下:

  public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
  {
      ...
      app.UseMiddleware<PageOfficeNetCore.POServer.ServerHandlerMiddleware>();
  }

如果是.Net6项目,就在Program.cs文件中添加代码:app.UseMiddleware<PageOfficeNetCore.POServer.ServerHandlerMiddleware>();

  1. 在D盘根目录下准备一个有内容的test.docx文件。
  2. 新建WordController,并编写代码在线打开test.docx。WordController.cs代码如下:
public class DocController : Controller
{
    public string OpenWord()
    {
        PageOfficeNetCore.PageOfficeCtrl poCtrl = new PageOfficeNetCore.PageOfficeCtrl(Request);
        poCtrl.SaveFilePage = "/Doc/SaveFile"; //设置处理保存客户端上传文件流的Action方法
        poCtrl.WebOpen("D:\\test.docx", PageOfficeNetCore.OpenModeType.docNormalEdit, "tom");
        string poHtmlCode = poCtrl.getHtml();
        return poHtmlCode;
    }

    //接收客户端上传的文件流,并保存到文件
    public async Task<ActionResult> SaveFile()
    {
        PageOfficeNetCore.FileSaver fs = new PageOfficeNetCore.FileSaver(Request, Response);
        await fs.LoadAsync();
        fs.SaveToFile("D:\\" + fs.FileName);
        return fs.Close();
    }
}

# 前端vue项目

  1. 新建Vue前端项目:vue-front

  2. Vue配置代理。

      devServer: {
        proxy: {
          '/dev-api': { // "/dev-api"对应后端项目"http://192.168.1.100:5000"地址 
            target: 'http://192.168.1.100:5000', 
            ws: true, //v6.6+必须,启用websocket。
            changeOrigin: true, 
            pathRewrite: {
            '^/dev-api': ''   
            }
          },
        }
      }
     
    
  3. 引用js-pageoffice库。

    注意:请确保安装的js-pageoffice库版本号与后端项目pom.xml文件中引用的PageOffice JAR包版本号的前三位相同。

​ 使用命令安装:npm install js-pageoffice@6.5.4 --save-exact

  1. 在全局拦截器中添加PageOffice相关配置。

    import { POBrowser } from "js-pageoffice";
    // 请求拦截器
    service.interceptors.request.use(
      (config) => {
        // 在发送请求之前做些什么
        //const token = Cookies.get('token'); // 假设你的token存储在cookie中
        const token = "123";
        if (token) {
          config.headers["Authorization"] = "Bearer " + token; // 将token添加到请求头中
          // PageOffice全局配置,必须在此拦截器中定义
          //必须。设置后端代理,具体属性值以您实际开发为准,比如POBrowser.setProxyBaseAPI(process.env.VUE_APP_BASE_API);
          POBrowser.setProxyBaseAPI("/dev-api");
          //必须。向PageOffice后端请求设置header,支持多次调用setHeader()设置更多的值,具体属性名称和属性值以您实际开发为准。
          POBrowser.setHeader("Authorization", "Bearer " + token); 
          /**
           * 前端存储token的方案
           *方案1.使用Cookie
           *如果您的令牌(token)存储在Cookie中,PageOffice会默认支持通过Cookie方式保存令牌,因此您无需编写任何额外的代码。
           *方案2.使用Localstorage或者SessionStorage
           *如果令牌(token)是保存在LocalStorage或SessionStorage中,您必须调用POBrowser.setStorage()方法。
           */
          //POBrowser.setStorage("Admin-Token",getToken());//支持多次调用setStorage()设置更多的值,具体属性名称和属性值以您实际开发为准。
        }
    
        return config;
      },
      (error) => {
        // 对请求错误做些什么
        return Promise.reject(error);
      }
    );
    
  2. 新建一个Vue页面:src/views/DocView.vue,用来显示在线打开的文档。

    <template>
      <div class="doc">
        演示: 文档<br /><br />
        <!-- 此div用来加载PageOffice客户端控件 -->
        <div style="width:auto; height:900px;" v-html="poHtmlCode"></div>
      </div>
    </template>
    
    <script>
    import request from '@/utils/request'
    export default {
      name: 'DocView',
      data() {
        return {
          poHtmlCode: ''
        }
      },
      created: function () {
        // 使用window.external.UserParams获取获取父页面(此项目中为:HomeView.vue)中POBrowser.openWindow()方法的第三个参数的值,获取到的值为string类型
        let paramValue = window.external.UserParams;
        let person = JSON.parse(paramValue);
    
        // 请求后端打开文件
        this.openFile().then(response => {
    			this.poHtmlCode = response;
    		}
    		);
      },
      methods: {
        OnPageOfficeCtrlInit() {
          // PageOffice的初始化事件回调函数,您可以在这里添加自定义按钮
          pageofficectrl.AddCustomToolButton("保存", "Save", 1);
        },
        Save() {
          pageofficectrl.WebSave();
        },
        AfterDocumentOpened() {
          // PageOffice的文档打开后事件回调函数
        },
        BeforeDocumentSaved() {
          // PageOffice的文档保存前事件回调函数
        },
        AfterDocumentSaved() {
          // PageOffice的文档保存后事件回调函数
        },
        openFile(){
          //发起GET请求到后端Controller的/Doc/OpenWord路由
          return request({
          url: '/Doc/OpenWord',
          method: 'get',
        })
        }
      },
      mounted: function () {
        // 以下的为PageOffice事件的回调函数,名称不能改,否则PageOffice控件调用不到
        window.OnPageOfficeCtrlInit = this.OnPageOfficeCtrlInit;
        window.Save = this.Save;
        window.AfterDocumentOpened = this.AfterDocumentOpened;
        window.BeforeDocumentSaved = this.BeforeDocumentSaved;
        window.AfterDocumentSaved = this.AfterDocumentSaved;
      }
    }
    </script>
    
    
  3. 配置DocView.vue的访问路由。

    const routes = [
      // 其他路由配置项...
      // 下面添加DocView.vue的路由
      ,
      {
        path: '/showDoc',
        name: 'doc',
        component: () => import('../views/DocView.vue')
      }
    ]
    
  4. 在您的Vue页面(比如HomeView.vue,PageOffice中把这个页面称之为父页面)添加一个打开文件的超链接,点击超链接调用POBrowser对象的openWindow方法,弹出PageOffice浏览器(POBrowser)窗口访问DocView.vue在线打开文件,代码如下:

     <a href="#" @click.prevent="open_pageoffice()">打开文件</a>
    
    <script>
    import request from '@/utils/request'
    import { POBrowser } from 'js-pageoffice'
    export default {
      name: 'HomeView',
      data() {
        return {
        }
      },
      methods: {
        open_pageoffice() {
          let person = {};
          person.name = '张三';
          person.age = 18;
          POBrowser.openWindow('/showDoc', 'width=1150px;height=900px;', JSON.stringify(person));
        }
      }
    }
    </script>
    
  5. 启动netcore-back和vue-front项目,点击“打开文件”超链接,查看在线打开编辑保存Office文件的效果。

上次更新: 2026/01/20, 17:14:12
PageOffice | Copyright © 2013-2026 卓正软件 京ICP备12010902号-2 京公网安备 11010502019270号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式