企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
## **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示例包。