## **POBrwoser弹窗方式的具体使用**
Chrome浏览器从45版本开始彻底关闭插件调用接口,网页中的任何插件(包括网银插件)都无法在Chrome浏览器中运行。Firefox从52版本开始所有网页中的插件也都不能运行了。Edge浏览器从诞生以来就不支持插件。这些目前市面上流行的浏览器停止对插件支持的原因主要有两点,第一是因为这两个浏览器中的插件技术都是基于NPAPI技术接口标准的,这种技术接口的缺陷是开发的插件很不稳定,所以大家在使用Chrome和Firefox的时候如果网页中使用了插件(包括Flash)就会经常出现浏览器崩溃的现象;第二点是现在HTML5技术的日益完善和推广,已经可以解决网页中播放视频的需求(网页中使用频率最高的插件就是Flash ,目的就是为了播放视频),所以从苹果公司率先放弃Flash改用HTML5开始,Chrome和Firefox也放弃了对插件的支持。PageOfficeV4.0及以上版本则采用POBrowser技术完美解决了这个问题,Chrome和Firefox等浏览器都可以继续运行PageOffice进行在线Office文档操作。
#### **POBowser的原理及具体使用**
POBrwoser弹出窗口打开的页面是调用客户端本地的IE内核打开页面的。POBrowser在PageOffice中是一个JS类,这个JS类封装在了pageoffice.js文件中,pageoffice.js文件打包在了pageoffice的jar(Java语言的程序包),pageoffice.dll(Asp.Net语言的程序包),PageOfficeNetCore.dll(Asp.Net Core语言的程序包)文件中,通过肉眼直接观察pageoffice的程序包是无法看到具体的pageoffice.js文件的。那么具体如何引用pageoffice.js文件并调用POBrowser呢?
## **1.Java语言:**
**(1)SpringMvc框架的项目:**
第一步:在web.xml中配置pageoffice.js的具体引用地址,一般配置到当前项目的根目录下。
```
<!-- PageOffice Begin -->
<servlet>
<servlet-name>poserver</servlet-name>
<servlet-class>com.zhuozhengsoft.pageoffice.poserver.Server</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>poserver</servlet-name>
<url-pattern>/poserver.zz</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>poserver</servlet-name>
<url-pattern>/sealsetup.exe</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>poserver</servlet-name>
<url-pattern>/posetup.exe</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>poserver</servlet-name>
<url-pattern>/pageoffice.js</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>poserver</servlet-name>
<url-pattern>/jquery.min.js</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>poserver</servlet-name>
<url-pattern>/pobstyle.css</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>adminseal</servlet-name>
<servlet-class>com.zhuozhengsoft.pageoffice.poserver.AdminSeal</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>adminseal</servlet-name>
<url-pattern>/adminseal.zz</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>adminseal</servlet-name>
<url-pattern>/loginseal.zz</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>adminseal</servlet-name>
<url-pattern>/sealimage.zz</url-pattern>
</servlet-mapping>
<mime-mapping>
<extension>mht</extension>
<mime-type>message/rfc822</mime-type>
</mime-mapping>
<context-param>
<param-name>adminseal-password</param-name>
<param-value>111111</param-value>
</context-param>
<!-- PageOffice End -->
```
第二步:在要打开文件的页面引用pageoffice.js文件,然后通过POBrowser.openWindowModeless调用打开文件的Controller地址。
比如:
```
<script type="text/javascript" src="/pageoffice.js"></script>
```
```
<a
href="javascript:POBrowser.openWindowModeless('Word.do', 'width=1150px;height=900px;');">打开文件</a>
```
**(2)SpringBoot框架的项目:**
第一步:在SpringBoot项目的启动类(一般指Application.java类)中配置pageoffice.js的引用地址,一般配置到当前项目的根目录下。
```
@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;
}
```
第二步:和SpringMvc项目的第二步的引用及调用方式完全一样,请参考Springmvc项目的具体调用。
## **2.Asp.Net语言**
**(1)普通Asp.Net项目:**
第一步:在web.config中的handlers标签中配置pageoffice.js的具体引用地址,一般配置到当前项目的根目录下。
```
<add name="poserver" path="poserver.aspx" verb="*" type="PageOffice.POServer.ServerHandler"/>
<add name="posetup" path="posetup.exe" verb="GET" type="PageOffice.POServer.ServerHandler"/>
<add name="sealsetup" path="sealsetup.exe" verb="GET" type="PageOffice.POServer.ServerHandler"/>
<add name="pageoffice" path="pageoffice.js" verb="GET" type="PageOffice.POServer.ServerHandler"/>
<add name="adminseal" path="adminseal.aspx" verb="*" type="PageOffice.POServer.AdminSealHandler"/>
<add name="loginseal" path="loginseal.aspx" verb="*" type="PageOffice.POServer.AdminSealHandler"/>
```
第二步:在要打开文件的页面引用pageoffice.js文件,然后通过POBrowser.openWindowModeless调用打开文件的页面。
比如:
```
<script type="text/javascript" src="/pageoffice.js"></script>
```
```
<a href="javascript:POBrowser.openWindowModeless('Word.aspx', 'width=1150px;height=900px;');">打开文件</a>
```
**(2)Asp.Net Mvc Razor框架项目:**
第一步:在web.config中的handlers标签中配置pageoffice.js的具体引用地址,一般配置到当前项目的根目录下。
```
<add name="poserver" path="poserver.aspx" verb="*" type="PageOffice.POServer.ServerHandler"/>
<add name="posetup" path="posetup.exe" verb="GET" type="PageOffice.POServer.ServerHandler"/>
<add name="sealsetup" path="sealsetup.exe" verb="GET" type="PageOffice.POServer.ServerHandler"/>
<add name="pageoffice" path="pageoffice.js" verb="GET" type="PageOffice.POServer.ServerHandler"/>
<add name="adminseal" path="adminseal.aspx" verb="*" type="PageOffice.POServer.AdminSealHandler"/>
<add name="loginseal" path="loginseal.aspx" verb="*" type="PageOffice.POServer.AdminSealHandler"/>
```
第二步:在当前项目的Global.asax.cs文件中添加如下代码:
```
RouteTable.Routes.IgnoreRoute("poserver.aspx");
RouteTable.Routes.IgnoreRoute("posetup.exe");
RouteTable.Routes.IgnoreRoute("sealsetup.exe");
RouteTable.Routes.IgnoreRoute("pageoffice.js");
RouteTable.Routes.IgnoreRoute("adminseal.aspx");
RouteTable.Routes.IgnoreRoute("loginseal.aspx");
```
第三步:在要打开文件的页面引用pageoffice.js文件,然后通过POBrowser.openWindowModeless调用打开文件的Controller地址。
比如:
```
<script type="text/javascript" src="/pageoffice.js"></script>
```
```
<a href="javascript:POBrowser.openWindowModeless('/Word', 'width=1150px;height=900px;');">打开文件</a>
```
## 3.Asp.Net Core语言
第一步:PageOfficeController.cs中配置如下代码(将NetCoreSamples5示例包中的集成文件夹中的PageOfficeController.cs文件直接拷贝到您项目的根目录下):
```
[Route("/PageOffice/POserver")]
[Route("/PageOffice/pageoffice.js")]
[Route("/PageOffice/pobstyle.css")]
[Route("/PageOffice/posetup.exe")]
[Route("/PageOffice/sealsetup.exe")]
public ActionResult POServer()
{
PageOfficeNetCore.POServer.Server poServer = new PageOfficeNetCore.POServer.Server(Request, Response);
poServer.LicenseFilePath = _webHostEnvironment.ContentRootPath + "/wwwroot/lic/";
poServer.Run();
return Content("OK");
}
```
第二步:在要打开文件的页面引用pageoffice.js文件,然后通过POBrowser.openWindowModeless调用打开文件的Controller地址。
比如:
```
<script type="text/javascript" src="/PageOffice/pageoffice.js"></script>
```
```
<a href="javascript:POBrowser.openWindowModeless('/Word', 'width=1150px;height=900px;');">打开文件</a>
```
>[info]
>补充:具体更详细的POBrwoser方式的使用请参考Samples5示例包。
- 序言
- 产品简介
- PageOffice试用版和和正式版的区别
- PageOffice对客户端的要求
- PageOffice客户端安装步骤
- PageOffice常用功能与工作原理
- OA系统中的文档在线编辑及流转
- 痕迹保留、键盘批注、手写批注
- 文件并发控制功能
- 与数据库的关系
- SaveDataPage和SaveFilePage的区别
- 调用ZoomSeal签章系统中的印章
- 使用RunMacro运行Office的宏
- 为什么采用弹窗方式打开文件
- POBrowser弹窗方式的具体使用
- Word篇
- 常用接口对象
- WordDocument类
- DataRegion类
- DataTag类
- Paragraph类
- Shape类
- Table类
- Column类
- Row类
- Cell类
- WaterMark类
- DataRegion与DataTag的区别
- 编辑模板中的数据区域
- 动态填充Word文档
- 动态插入Word表格
- 动态创建数据区域
- 数据区域点击事件
- 实现Word文档编辑区域控制
- Word文档全文检索
- Word文件版本对比功能
- 实现用户自定义Word模板
- 实现多个Word文件合并
- Excel篇
- 常用接口对象
- Workbook类
- Sheet类
- Table类
- Cell类
- 动态填充Excel文档
- Excel指定单元格点击事件
- 实现用户自定义Excel模板
- 读取Excel文档中的数据
- 隐藏Excel的行号列标
- Java篇
- PageOffice集成说明
- 动态生成Word文件
- 给Word中的Table赋值
- 动态生成Excel文件
- Maven项目中引用PageOffice
- FileMaker组件功能简介
- ASP.NET篇
- PageOffice集成说明
- 给Word中的Table赋值
- 动态生成Word文档
- FileMaker组件功能简介
- 其他
- POPDF组件功能简介
- PPT相关功能简介
- 实现多人同时编辑一份文档
- PageOffice与Apache POI的区别
- 如何录制宏和编辑宏
- PDF篇
- PDF盖章