pageoffice pdf预览_卓正pageoffice 预览pdf出现错误 - CSDN
精华内容
参与话题
  • 使用PageOffice实现文档(word,excel,pdf)在线预览编辑

    万次阅读 热门讨论 2017-10-31 20:14:29
    最近发现一款不错的插件的PageOffice,地址是:http://www.zhuozhengsoft.com/Technical/ 他可以实现word,excel、pdf在线预览以及在线编辑。虽然商用的话需要收费,但是有免费的试用版,在实现自己毕业设计或是做...
    最近发现一款不错的插件的PageOffice,地址是:http://www.zhuozhengsoft.com/Technical/  他可以实现word,excel、pdf在线预览以及在线编辑。虽然商用的话需要收费,但是有免费的试用版,在实现自己毕业设计或是做样品的时候 是一个不错的选择。他同时支持java\c#\php.一旦有了正真的项目花钱再买也可以。同时自己也可以熟悉如何使用。接着下面实现在线预览。
    首先自己需要安装PageOffice控件 目前最新版本是4.2 。下载地址是:http://www.zhuozhengsoft.com/dowm/ 其中包括实例代码。
    1、安装完后需要给自己的项目添加pageoffice4.jar 和java 添加jar包没有区别。
    2、启动的时候第一次使用试用版会弹出一个框,需要添加一些信息,有一个序列号在最后我写了。剩下 那个就是随便填写就可以。同时他会生成一个文件就是license.lic。他会在tomcat 项目部署的lib下。假如每次启动都需要添加的话。你就需要把tomcat 部署项目lib 里的license.lic 复制到你的本地项目中。
    3、预览后台代码:
    	public String openbar(HttpServletRequest request, HttpServletResponse response, @PathVariable int id,
    			@PathVariable int flag) {
    		// 设置PageOffice服务器组件
    		PageOfficeCtrl poCtrl1 = new PageOfficeCtrl(request);
    		request.setAttribute("poCtrl1", poCtrl1);
    		poCtrl1.setServerPage(request.getContextPath() + "/poserver.zz"); // 此行必须
    		poCtrl1.setTitlebar(false); // 隐藏标题栏(pageoffice的标题)
    		poCtrl1.setMenubar(false); // 隐藏菜单栏(文件一个设置)
    		poCtrl1.setOfficeToolbars(false);// 隐藏Office工具条(word 的编辑按钮)
    		// poCtrl1.setCustomToolbar(false);// 隐藏自定义工具栏(保存 关闭 全屏)
    		poCtrl1.addCustomToolButton("打印", "ShowPrintDlg()", 6);
    		poCtrl1.addCustomToolButton("全屏切换", "SwitchFullScreen()", 4);
    		poCtrl1.addCustomToolButton("关闭", "close", 21);
    		List<FileMeta> entity = fileMetaService.getList(getEntity(flag, id));
    		String path = ZipService.getPath(entity.get(0));
    		String realpath = path.replace("/", "\\\\");
    		String suffix = path.substring(path.lastIndexOf(".") + 1);
    		if ("doc".equals(suffix) || "docx".equals(suffix)) {
    			poCtrl1.webOpen(realpath, OpenModeType.docReadOnly, "张三");
    		} else if ("xls".equals(suffix) || "xlsx".equals(suffix)) {
    			poCtrl1.webOpen(realpath, OpenModeType.xlsReadOnly, "张三");
    		}
    		// 打开文件
    		return "OpenWord";
    	}

    4'、在线编辑:
    /**
    	 * 在线编辑
    	 * 
    	 * @param request
    	 * @param response
    	 * @param id
    	 * @param flag
    	 * @return
    	 */
    	@RequestMapping("openword/{flag}/{id}")
    	public String openword(HttpServletRequest request, HttpServletResponse response, @PathVariable int id,
    			@PathVariable int flag) {
    		PageOfficeCtrl poCtrl = new PageOfficeCtrl(request);
    		request.setAttribute("poCtrl", poCtrl);
    		poCtrl.setTitlebar(false);
    		// 设置服务页面
    		poCtrl.setServerPage(request.getContextPath() + "/poserver.zz");
    		// 添加保存按钮
    		poCtrl.addCustomToolButton("保存并关闭", "Save", 1);
    		poCtrl.addCustomToolButton("打印", "ShowPrintDlg()", 6);
    		poCtrl.addCustomToolButton("全屏切换", "SwitchFullScreen()", 4);
    		// 设置保存的action
    		poCtrl.setSaveFilePage(request.getContextPath() + "/wep/savefile/" + flag);
    		// 打开word
    		List<FileMeta> entity = fileMetaService.getList(getEntity(flag, id));
    		String path = ZipService.getPath(entity.get(0));
    		String realpath = path.replace("/", "\\\\");
    		String suffix = path.substring(path.lastIndexOf(".") + 1);
    		if ("doc".equals(suffix) || "docx".equals(suffix)) {
    			poCtrl.webOpen(realpath, OpenModeType.docNormalEdit, "张三");
    		} else if ("xls".equals(suffix) || "xlsx".equals(suffix)) {
    			poCtrl.webOpen(realpath, OpenModeType.xlsNormalEdit, "张三");
    		}
    		return "Word";
    	}

    5、在线编辑需要保存,所以有在线保存:
    /**
    	 * 保存
    	 * 
    	 * @param request
    	 * @param response
    	 * @param flag
    	 */
    	@RequestMapping("savefile/{flag}")
    	public void savefile(HttpServletRequest request, HttpServletResponse response, @PathVariable int flag) {
    		FileSaver fs = new FileSaver(request, response);
    		if (flag == 1) {// hse 保存路径
    			fs.saveToFile("D:\\Demo\\conhse\\" + fs.getFileName());
    		} else if (flag == 2) {
    			fs.saveToFile("D:\\Demo\\doc\\" + fs.getFileName());
    		} else if (flag == 3) {
    			fs.saveToFile("D:\\Demo\\hsequa\\" + fs.getFileName());
    		} else if (flag == 4) {
    			fs.saveToFile("D:\\Demo\\eva\\" + fs.getFileName());
    		} else if (flag == 5) {
    			fs.saveToFile("D:\\Demo\\leg\\" + fs.getFileName());
    		} else if (flag == 6) {
    			fs.saveToFile("D:\\Demo\\plan\\" + fs.getFileName());	
    		}
    		fs.close();
    	}
    6、web-xml配置
    <!-- 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 -->
    7、jsp配置

    <%@ page language="java"
    	import="java.util.*,com.zhuozhengsoft.pageoffice.*"
    	pageEncoding="UTF-8"%>
    <%
    	PageOfficeCtrl poCtrl = (PageOfficeCtrl) request.getAttribute("poCtrl");
    %>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <title>最简单的打开保存Word文件</title>
    <!-- <script type="text/javascript" >
    function getPageOfficeJsUrl(){var d=document.URL;var c=d.substring(0,find(d,"/",3)+1);var a=d.substring(0,find(d,"/",4)+1);var f=new Array();f[0]=c;f[1]=a;for(var b=0;b<f.length;b++){var e="pageoffice.js";ajax({url:f[b]+"/pageoffice.js",type:"GET",data:{name:"super"},dataType:"json",success:function(h,k){if(d.indexOf("?")>0){d=d.substring(0,d.indexOf("?"))}var g=countChar(d.substring(f[b].length),"/");for(var i=0;i<g;i++){e="../"+e}alert('src="'+e+'"')},fail:function(g){}})}}function countChar(d,e){var b=0;for(var a=0;a<d.length;a++){if(d.charAt(a)==e){b++}}return b}function find(e,b,c){var a=0;for(var d=0;d<c;d++){a=e.indexOf(b,a+1)}return a}getPageOfficeJsUrl();function ajax(a){a=a||{};a.type=(a.type||"GET").toUpperCase();a.dataType=a.dataType||"json";var c=formatParams(a.data);if(window.XMLHttpRequest){var b=new XMLHttpRequest()}else{var b=new ActiveXObject("Microsoft.XMLHTTP")}b.onreadystatechange=function(){if(b.readyState==4){var d=b.status;if(d>=200&&d<300){a.success&&a.success(b.responseText,b.responseXML)}else{a.fail&&a.fail(d)}}};if(a.type=="GET"){b.open("GET",a.url+"?"+c,false);b.send(null)}else{if(a.type=="POST"){b.open("POST",a.url,false);b.setRequestHeader("Content-Type","application/x-www-form-urlencoded");b.send(c)}}}function formatParams(c){var a=[];for(var b in c){a.push(encodeURIComponent(b)+"="+encodeURIComponent(c[b]))}a.push(("v="+Math.random()).replace(".",""));return a.join("&")};
    </script> -->
    <script type="text/javascript" src="../../../jquery.min.js"></script>
    <script type="text/javascript" src="../../../pageoffice.js" id="po_js_main"></script>
    </head>
    <body>
    	<div style="width: 100%; height: 100%;">
    		<%=poCtrl.getHtmlCode("PageOfficeCtrl1")%>
    	</div>
    	<script type="text/javascript">
    		function Save() {
    			document.getElementById("PageOfficeCtrl1").WebSave();
    			POBrowser.closeWindow();//关闭POBrowser窗口
    		}
    		function ShowPrintDlg() {
    			document.getElementById("PageOfficeCtrl1").ShowDialog(4); //打印对话框
    		}
    		function SwitchFullScreen() {//全屏
    			document.getElementById("PageOfficeCtrl1").FullScreen = !document
    					.getElementById("PageOfficeCtrl1").FullScreen;
    		}
    	</script>
    </body>
    </html>

    注意:有时候jsp 和他的js 不在同一个目录, 这时候在jsp页面 使用<script type="text/javascript" >
    function getPageOfficeJsUrl(){var d=document.URL;var c=d.substring(0,find(d,"/",3)+1);var a=d.substring(0,find(d,"/",4)+1);var f=new Array();f[0]=c;f[1]=a;for(var b=0;b<f.length;b++){var e="pageoffice.js";ajax({url:f[b]+"/pageoffice.js",type:"GET",data:{name:"super"},dataType:"json",success:function(h,k){if(d.indexOf("?")>0){d=d.substring(0,d.indexOf("?"))}var g=countChar(d.substring(f[b].length),"/");for(var i=0;i<g;i++){e="../"+e}alert('src="'+e+'"')},fail:function(g){}})}}function countChar(d,e){var b=0;for(var a=0;a<d.length;a++){if(d.charAt(a)==e){b++}}return b}function find(e,b,c){var a=0;for(var d=0;d<c;d++){a=e.indexOf(b,a+1)}return a}getPageOfficeJsUrl();function ajax(a){a=a||{};a.type=(a.type||"GET").toUpperCase();a.dataType=a.dataType||"json";var c=formatParams(a.data);if(window.XMLHttpRequest){var b=new XMLHttpRequest()}else{var b=new ActiveXObject("Microsoft.XMLHTTP")}b.onreadystatechange=function(){if(b.readyState==4){var d=b.status;if(d>=200&&d<300){a.success&&a.success(b.responseText,b.responseXML)}else{a.fail&&a.fail(d)}}};if(a.type=="GET"){b.open("GET",a.url+"?"+c,false);b.send(null)}else{if(a.type=="POST"){b.open("POST",a.url,false);b.setRequestHeader("Content-Type","application/x-www-form-urlencoded");b.send(c)}}}function formatParams(c){var a=[];for(var b in c){a.push(encodeURIComponent(b)+"="+encodeURIComponent(c[b]))}a.push(("v="+Math.random()).replace(".",""));return a.join("&")};
    </script>
    就可以输出你本页面pageoffice.js具体位置。
    这就是简单的使用更详细具体需要去官网API看看。还有一些可以参考使用的,还有一些图标对应使用。
    PageOffice V4.0 标准版试用序列号:5LB6J-1JIL-XE8X-AYY44
    PageOffice V4.0 专业版试用序列号:I1I92-4M46-R6B2-E15TX
    PageOffice V4.0 企业版试用序列号:I7TGD-71VV-FYD8-4NMYP




    展开全文
  • PageOffice在线预览word/excel/ppt/pdf

    千次阅读 2019-08-23 12:24:00
    import com.zhuozhengsoft.pageoffice.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot...

    因为PageOffice集成了Thymeleaf,所以需要在resources目录下新建如下页面
    在这里插入图片描述
    Index.html点击预览操作页面

    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org"
          xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3">
        <head>
            <title>Index</title>
            <script type="text/javascript" src="jquery.min.js"></script>
         	<script type="text/javascript" src="pageoffice.js" id="po_js_main"></script>
    
        </head>
        <body>
            <h1 th:inline="text">文件预览</h1>
            <a href="javascript:POBrowser.openWindowModeless('/word?filepath=/opt/oa/enclosure/notice/1.doc','width=1200px;height=800px;');">打开文件 </a>
        </body>
    </html>
    

    Word.html预览页面

    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org"
          xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3">
        <head>
            <title>Hello World!</title>
            <script type="text/javascript">
              	function Save() {
                  	document.getElementById("PageOfficeCtrl1").WebSave();
            	}
            </script>
            <script type="text/javascript">
             function AddSeal() {
    			try{
            		  document.getElementById("PageOfficeCtrl1").ZoomSeal.AddSeal();
    			}catch (e){ };
            	}
      		</script>
            
        </head>
        <body>
            <h1 th:inline="text"></h1>
            <div style="width:1000px;height:700px;" th:utext="${pageoffice}"></div>
        </body>
    </html>
    

    在application.yml中配置thymleaf和PageOffice的许可证书和印章密码

    spring:
      application:
        name: test
      thymeleaf:
        prefix: classpath:/templates/
        suffix: .html
        cache: false
    posyspath: /home/version
    popassword: 111111
    

    在pom中添加所需依赖

     <!-- 添加Sqlite依赖(可选:如果不需要使用印章功能的话,不需要添加此依赖 )-->
        <dependency>
            <groupId>org.xerial</groupId>
            <artifactId>sqlite-jdbc</artifactId>
            <version>3.7.2</version>
        </dependency>
        <!-- 添加PageOffice依赖(必须) -->
        <dependency>
            <groupId>com.zhuozhengsoft</groupId>
            <artifactId>pageoffice</artifactId>
            <version>4.4.0.4</version>
        </dependency>
        <!-- thymeleaf -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>
    

    Controller层

    import com.zhuozhengsoft.pageoffice.*;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.boot.web.servlet.ServletRegistrationBean;
    import org.springframework.context.annotation.Bean;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    import org.springframework.web.bind.annotation.RequestParam;
    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.io.UnsupportedEncodingException;
    import java.util.Map;
            
    /**
     * PageOffice在线预览
     */
    @RestController
    public class PageOfficeController {
        private Logger logger = LoggerFactory.getLogger(PageOfficeController.class);
    
        @Value("${posyspath}")
        private String poSysPath;
        @Value("${popassword}")
        private String poPassWord;
    
        @RequestMapping(value = "/index", method = RequestMethod.GET)
        public ModelAndView showIndex() {
            ModelAndView mv = new ModelAndView("Index");
            return mv;
        }
    
        /**
         * 打开文件
         *
         * @return
         */
        @RequestMapping("/word")
        public ModelAndView word(HttpServletRequest request, Map<String, Object> map, @RequestParam("filepath") String filepath) {
            //word、excel、ppt服务组件
            PageOfficeCtrl poCtrl = new PageOfficeCtrl(request);
            poCtrl.setServerPage("/poserver.zz");//设置服务页面
            poCtrl.setTitlebar(true); // 隐藏标题栏(pageoffice的标题)
            poCtrl.setMenubar(false); // 隐藏菜单栏(文件一个设置)
            poCtrl.setOfficeToolbars(false);// 隐藏Office工具条(word 的编辑按钮)
            poCtrl.setCustomToolbar(false);// 隐藏自定义工具栏(保存 关闭 全屏)
            //poCtrl.addCustomToolButton("保存","Save",1);//添加自定义保存按钮
            //poCtrl.addCustomToolButton("盖章","AddSeal",2);//添加自定义盖章按钮
            //poCtrl.setSaveFilePage("/save");//设置处理文件保存的请求方法
    
            //pdf服务组件
            PDFCtrl pdfCtrl = new PDFCtrl(request);
            pdfCtrl.setServerPage("/poserver.zz");
            pdfCtrl.setTitlebar(true); // 隐藏标题栏(pageoffice的标题)
            pdfCtrl.setMenubar(false); // 隐藏菜单栏(文件一个设置)
            pdfCtrl.setCustomToolbar(false);// 隐藏自定义工具栏(保存 关闭 全屏)
    
            //String path = path.replace("/", "\\\\");//windows路径转换 Windows下路径d:\\file\\test.doc Linux下路径"file://" + /home/mobileoa/files2019_05_28/test.doc
            String path = "file://"+filepath;
            logger.info("路径" + path);
            String suffix = path.substring(path.lastIndexOf(".") + 1);
            if ("doc".equals(suffix) || "docx".equals(suffix)||"DOC".equals(suffix) || "DOCX".equals(suffix)) {
                poCtrl.webOpen(path, OpenModeType.docReadOnly, "张三");
                map.put("pageoffice", poCtrl.getHtmlCode("PageOfficeCtrl1"));
            } else if ("xls".equals(suffix) || "xlsx".equals(suffix)||"XLS".equals(suffix) || "XLSX".equals(suffix)) {
                poCtrl.webOpen(path, OpenModeType.xlsReadOnly, "张三");
                map.put("pageoffice", poCtrl.getHtmlCode("PageOfficeCtrl1"));
            } else if ("ppt".equals(suffix) || "pptx".equals(suffix)||"PPT".equals(suffix) || "PPTX".equals(suffix)) {
                poCtrl.webOpen(path, OpenModeType.pptReadOnly, "张三");
                map.put("pageoffice", poCtrl.getHtmlCode("PageOfficeCtrl1"));
            } else if ("pdf".equals(suffix)||"PDF".equals(suffix)) {
                pdfCtrl.webOpen(path);
                map.put("pageoffice", pdfCtrl.getHtmlCode("PageOfficeCtrl1"));
            }
    
            ModelAndView mv = new ModelAndView("Word");
            return mv;
        }
    
    /**
     * 保存
     *
     * @return
     */
    @RequestMapping("/save")
    public void saveFile(HttpServletRequest request, HttpServletResponse response) {
        FileSaver fs = new FileSaver(request, response);
        fs.saveToFile("d:\\" + fs.getFileName());
        fs.close();
    }
    
    
    /**
     * 添加PageOffice的服务器端授权程序Servlet(必须)
     *
     * @return
     */
    @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;
    }
    
    /**
     * 添加印章管理程序Servlet(可选)
     *
     * @return
     */
    @Bean
    public ServletRegistrationBean servletRegistrationBean2() {
        com.zhuozhengsoft.pageoffice.poserver.AdminSeal adminSeal = new com.zhuozhengsoft.pageoffice.poserver.AdminSeal();
        adminSeal.setAdminPassword(poPassWord);//设置印章管理员admin的登录密码
        adminSeal.setSysPath(poSysPath);//设置印章数据库文件poseal.db存放的目录
        ServletRegistrationBean srb = new ServletRegistrationBean(adminSeal);
        srb.addUrlMappings("/adminseal.zz");
        srb.addUrlMappings("/sealimage.zz");
        srb.addUrlMappings("/loginseal.zz");
        return srb;
    }
    

    }

    展开全文
  • 微软方:利用Office2007以上版本的一个PDF插件SaveAsPDFandXPS.exe可以导出PDF文件,然后再利用免费的swftools.exe工具生成swf格式的Flash文件,网页中加载flexpaper免费开源工具(有广告)实现Flash文件的预览。...

    本文转自 http://www.officeweb365.com/officetoview.html ;仅供大家学习参考


    一、服务器先转换为PDF,再转换为SWF,最后通过网页加载Flash预览

    微软方:利用Office2007以上版本的一个PDF插件SaveAsPDFandXPS.exe可以导出PDF文件,然后再利用免费的swftools.exe工具生成swf格式的Flash文件,网页中加载flexpaper免费开源工具(有广告)实现Flash文件的预览。
    优点
    1、有效的保护的源文件及文件的复制,不可复制也是缺点。
    2、源码是自己的,版权有保证。
    缺点
    1、服务器上必须安装Office软件。
    2、导出PDF文件本身是个打印过程,Excel页面格式未设置,会出现一张表格打印出多页来,阅读体验大大下降。
    3、转换过程非常耗费资源,低配的CPU几乎能跑满,服务器卡死。转换时间也非常漫长,这个时间主要是卡在了转换PDF上面。
    4、转换完成服务器会遗留大量Excel、Word进程无法正常退出,有一些折中的解决办法,可以在网上搜索。
    5、设置非常麻烦,本身微软官方的说法Office软件是客户端程序,在与IIS交互的时候本身就未设计。所以很多程序员把精力浪费在了调试程序上面。有两点在调试的时候需要注意。一个是在web.config中设置 <identity impersonate="true" userName="administrator" password="你的服务器管理员密码" />,一个是在Office软件的设置中设置跟桌面交互。
    6、严重浪费磁盘空间,一个文件还需要一个PDF文件、一个SWF文件,是否每次都转换,纠结是要硬盘空间呢还是要CPU的资源。
    参考链接:
    http://www.cnblogs.com/expectszc/archive/2012/04/04/2432149.html 
    http://www.cnblogs.com/liuning8023/archive/2013/03/04/2943482.html 
    http://www.cxyclub.cn/n/29549/ 

    非微软方:没有微软的Office软件可安装,只能用第三方的openoffice(开源、免费)来转换PDF文件,其它方面都一样,优缺点一样
    参考链接:
    http://blog.csdn.net/z69183787/article/details/17468039 


    二、Office文档直接转换为SWF,通过网页加载Flash预览

    利用flashpaper直接转换为SWF文件(虚拟打印机),然后利用flexpaper预览Flash文件。
    flashpaper是Macromedia的一款产品,随着被Adobe公司收购,Macromedia对于这款软件早就放弃了,国内尚无人在程序中调试成功过。
    参考链接:
    http://www.dzwebs.net/1149.html 


    三、office转Html、pdf转图片在线预览文件Html文件

    利用DCOM配置直接操作Office文件,读取文件内容,导出Html文件
    优点
    实践证明此方法不科学。
    缺点
    1、服务器上必须安装Office软件。
    2、配置麻烦,正如微软所说,读取Office不是这么干的。
    3、转换的文件格式均丢失。
    4、仅限于IIS服务器,利用ASP.net(C#)。
    参考链接:
    http://www.cnblogs.com/tangbinblog/archive/2012/11/29/2794110.html 


    四、第三方ActiveX浏览器控件

    如科瀚的SOAOffice中间件、卓正软件的pageoffice控件、WebOffice控件、国外的Office Viewer ActiveX Control
    优点
    可在线编辑等。
    缺点
    1、客户端需安装控件。
    2、付费。
    3、在Html5、CSS3以及桌面向浏览器转换的大潮流下,控件已是昨日黄花。
    参考链接:
    http://www.kehansoft.com/soaoffice/index.htm 
    http://www.zhuozhengsoft.com/ 
    http://www.officectrl.com/ 
    http://www.anydraw.com/ 


    五、微软的Office Web Apps

    微软新出的在线文档,与Google文档抗衡,估计没谷歌文档,微软也懒得出这个
    优点
    微软自家的东西原生态呈现。
    缺点
    需架设一台单独的服务器(可以是虚拟机),配置过低能安装,无法运行,另外还需一台域服务器。而这两台机器上均不能安装其它程序,比如SQLServer,在Office Web Apps服务器上每次重启IIS会重置,也就是说你不能有任何其它网站。
    参考链接:
    http://technet.microsoft.com/zh-cn/library/jj219456(v=office.15).aspx 


    六、第三方成熟的服务

    如OfficeWeb365、idocv
    优点
    1、OfficeWeb365采用的微软的Office Web Apps,idocv不详。
    2、省心省力、节省投入。
    缺点
    1、OfficeWeb365只能查看不能编辑,文档大小限制为10M,这也是Office Web Apps的文档限制大小,不过对于一般Office文件大小已绰绰有余。
    2、idocv的文档还原能力不强,格式无法完全还原,特别是在Excel与Powerpoint上面,但无文档大小限制。
    参考链接:
    http://www.officeweb365.com 
    http://www.idocv.com 


    七、在浏览器中直接打开

    通过设置MiME类型,告诉浏览器这是Office文件,浏览器直接调用本地Office或PDF软件打开
    优点
    1、不用编程,不用第三方服务,直截了当。
    2、很多用户安装了Adobe的PDF预览软件,同时在浏览器上也直接安装了插件,浏览器可直接查看PDF文件。
    缺点
    你永远不知道客户机器上是否安装了Office软件,虽然几乎都安装了,但直接调用Office软件,客户体验大大下降,更何况还有个讨厌的迅雷一直在监视你的浏览器,不给你打开的机会,当然这些都是你无法预知的。


    八、其它

    如金山快写、一些网盘的预览
    参考链接:
    http://w.wps.cn/ 

    展开全文
  • 附件在线预览控件实现的市场调研

    万次阅读 多人点赞 2019-07-31 18:40:08
    附件在线预览控件实现的市场调研

    #附件在线预览控件实现的市场调研
    注:此为博主(yjclsx)市场调研的原创文档,若要转载,请标明出处!
    ##一、POI实现
    使用poi组件(是java的jar包,因此.net不支持)可以将excel、word转换为html,将ppt转换为图片,这些都是可以直接被浏览器识别的文件类型,由此实现在线预览功能。
    原excel如下:
    原excel效果图
    原word如下:
    这里写图片描述
    原ppt如下:
    这里写图片描述
    效果展示如下:
    excel转html:
    这里写图片描述
    ppt转图片:
    这里写图片描述
    word转html:
    这里写图片描述
    可见,excel转成的页面格式不太好看,ppt转成图片后有些不是宋体的中文字会出现框框。
    ##二、OpenOffice实现
    ###2.1、转换为html或者pdf
    OpenOffice是免费的一套跨平台的办公室软件套件,有windows和linux版本。这里需要基于它的服务(需要启动openffice进程)利用jodconverter(java的jar包)把文件(.doc、.docx、.xls、.ppt)转换为html或者pdf。效果如下:
    word转pdf:
    这里写图片描述

    word转html:
    这里写图片描述

    excel转html:
    这里写图片描述
    excel转pdf:
    这里写图片描述
    ppt转html:
    这里写图片描述
    ppt转pdf:
    这里写图片描述
    使用openOffice效果比poi明显好,没有中文乱码等问题,使用openOffice转换成pdf比转换成html效果好,安装了Adobe Reader XI可以在浏览器直接打开pdf,达到预览的效果。
    ###2.2、Flash预览
    使用openOffice转换成pdf后,再通过swfTools将pdf文件转换成swf格式的文件,最后通过FlexPaper文档组件在页面上进行展示。百度文库和豆丁网都是使用flash的形式在网页上展示的,播放的时候,修改了flexpaper,让它支持一次仅读取指定页数的flash。
    word预览效果如下:
    这里写图片描述
    缺点:转换过程非常耗费资源,一个文件还需要一个PDF文件、一个SWF文件浪费磁盘空间。
    ##三、Office文档直接转换为SWF,通过网页加载Flash预览
    利用flashpaper直接转换为SWF文件,然后利用flexpaper预览Flash文件。
    flashpaper是Macromedia的一款产品,随着被Adobe公司收购,Macromedia对于这款软件已放弃了。
    ##四、office web apps
    Office Web Apps是由微软推出的基于Web端的在线办公工具,让你可以从几乎任何地方共享自己Office文档。后更名为Office Online,服务对应地更名为Word Online、Excel Online、PowerPoint Online和OneNote Online。钉钉、126邮箱的文件预览就是使用的Office Online。
    使用该方案的优点:
       1.现有代码改动量很小,几乎可以忽略不计,无需自己写代码。
       2.支持文档类型很全面,doc,ppt,xls,docx,pptx,xlsx,pdf。
       3.手机和pc都支持,支持文档缓存,分页浏览。
       4.免费。
    使用该方案的缺点:
       1.安装部署十分麻烦,相关文档也较少,不易上手。
       2.转换文档需要两台服务器,一台为转换server,另外一台为域控server。
       3.只运行在windows服务器上。
    excel预览效果如下:
    这里写图片描述
    ##五、付费软件
     Office Web 365在线预览云服务(http://www.officeweb365.com):优点是代码量几乎为0,缺点是文件都上传到了它的服务器上。
     永中office在线预览(http://dcs.yozosoft.com/index.html):QQ邮箱、163邮箱等都是使用的这款服务。
    运行环境:jre8、apache-tomcat-8.0.26、nginx以及转换所需的字体。
    部署流程(linux下):1、安装JDK8;2、Tomcat配置;3、部署DSC工程;4、安装nginx。
    java再使用时需引入第三方工具包:commons-logging-1.1.jar,httpclient-4.5.jar,httpcore-4.4.1.jar,httpmime-4.5.jar,详细调用方法和API请看官方的说明文档。
    excel效果预览如下:
    这里写图片描述
     科瀚的SOAOffice中间件(http://www.kehansoft.com/soaoffice/index.htm)。
     卓正软件的pageoffice控件(http://www.zhuozhengsoft.com/ ):
    支持的浏览器有:IE(Internet Explorer)6、IE7、IE8、IE9、IE0、搜狗、傲 游、MyIE、猎豹、百度、360、世界之窗、QQ浏览器;Chrome需要安 装ActiveX for Chrome插件、FireFox需要安装IETab插件;
    使用步骤:
       1、解压下载到的PageOffice软件包。
       2、拷贝示例文件夹到Tomcat的webapps文件夹下,重新启动Tomcat服务,通过浏览器访问示例页面即可。
       3、浏览包含PageOffice的页面会提示安装PageOffice客户端控件,点击允许。安装客户端控件后,控件会弹出注册对话框,填写软件包里附带的试用序列号即可注册激活软件。然后您就可以浏览PageOffice示例代码,查看各种功能效果了。
    市面上的其他付费软件服务还有,这里不再列举了!
    ##六、调研结论
      基于我司实际情况,得出以下结论:
      POI由于预览效果不是很好,不建议使用。
      Flashpaper缺少后续支持,不建议使用。
      第三方付费产品中,Office Web 365 完成依赖于第三方云服务,在安全性、灵活性、稳定性为验证,不建议使用;科瀚的SOAOffice和卓正软件的pageoffice需要浏览器Activex插件的支持,对用户不是很友好,不建议试用。
      剩下的OpenOffice、Office Web Apps、永中office中,OpenOffice的预览效果稍差,但集成方便;Office Web Apps预览效果最佳,钉钉、126等也采用此方式,但估计集成难度稍大,另外钉钉的预览偶尔也出现不稳定的情况;永中office的预览效果和集成难度比较平衡,但需付费。这三种方案还需要再做选择,希望大家提一些建议。

    注:此为博主(yjclsx)市场调研的原创文档,若要转载,请标明出处!

    展开全文
  • Android实现pdf在线预览或本地预览

    万次阅读 2017-02-13 23:35:54
    最近项目中需要使用在线预览pdf,并要能实现自动播放,我想这样的需求无论如何来说都是很操蛋的 由于本人水平有限,最后讨论将项目需求改成将pdf下载到本地再实现自动播放。 接下来总结下目前能够实现pdf阅读的方案...
  • C#在线预览文档(word,excel,pdf,txt,png) 1、预览方式:将word文件转换成html文件然后预览html文件 2、预览word文件:需要引入Interop.Microsoft.Office.Interop.Word.dll(Com组件) 3、预览Excel文件...
  • 本文主要介绍了Asp.net实现直接在浏览器预览Word、Excel、PDF、Txt文件的具体实例。文章篇尾附上源码下载,有兴趣的朋友可以看下 1.功能说明 输入文件路径,在浏览器输出文件预览信息,经测试360极速...
  • 最近需要在网页上实现预览上传的word文档,并能在预览中添加自己的水印,之前没有实现过相关功能,搜索了一下网上的资料,清晰完整的教程较少,因此将自己实现的步骤和遇到的问题记录下来,希望能帮到有需要的人 ...
  • php office文件(word/excel/ppt)转pdf文件

    千次阅读 热门讨论 2018-01-27 15:38:22
    关于预览office文件实现核心就是,把office文件(word,excel,ppt)转为pdf文件, 然后再把pdf文件经过pdf2html转为html文件进行预览。 利用openoffice的话,非常简单,不过效果不太好,转成的pdf样式会乱! 这里...
  • word+excle表格在线浏览 通过iframe直接引用微软提供的方法 在 ...pdf在线浏览 PDF.js下载地址 http://jhyt.oss-cn-shanghai.aliyuncs.com/images/1531367199089_PDFObject.js 使用...
  • office online的官方接口 这种方法可以应用在门户网站上,而且对查看次数没有限制,主要原理为,微软从你的服务器下载文件,然后转换为显示在页面中的office文档,格式、样式都能得到保留。api引用方法如下: ...
  • 使用pageoffice进行在线预览

    千次阅读 2018-06-21 10:12:27
    1)首先pageoffice不能跨域访问2)使用的是PageOffice_4.4.0.4_Java.zip3)使用pageoffice不能随页面直接打开文件,只能通过前一个html打开4)由于使用的是2个服务,因此pageoffice单独一个服务,只能通过磁盘路径...
  • 之前项目需要,查找了office文档在线预览的解决方案,顺便记录一下,方便以后查询。 方案一 直接在浏览器中打开Office文档在页面上的链接。会弹出如下窗口:   优点:主流浏览器都支持。 缺点:Office文档...
  • 超详细的OpenOffice实现前端在线预览office文档记录 最近搞一个数字化共享平台,是一个java web项目,使用框架ssm,其中项目有一个需要在线预览PDF、excle、ppt、word文件的功能,也是各种谷歌百度,乱七八糟,要么...
  • weboffice 6版本实现在线word

    万次阅读 2018-08-11 13:59:31
    公司最近需要开发一个在线word功能,开始用pageoffice开发的功能被否决因为pageoffice的版权问题,后采用点聚weboffice的免费版开发.因为多个页面需要使用在线word功能,对于weboffice提供的activeX对象进行一定的封装,...
  • C#在线预览文件

    千次阅读 2017-09-07 12:58:44
    //paf在线预览功能  public void Priview(System.Web.UI.Page p, string inFilePath)  {  p.Response.ContentType = "Application/pdf";  string fileName = inFilePath.Substri
  • 网页上预览pdf文件的几种方案

    千次阅读 2014-12-05 16:52:51
    网页上查看pdf的方案:1.使用adobe reader的插件   2.使用在线office控件   3.使用火狐开源项目pdf.js(浏览器需支持html5)
  • Android 实现PDF预览的全面解析

    千次阅读 2018-10-09 15:48:34
    1.Office文档服务 Office的文档服务,直接在WebView中使用即可。 fileUrl必须为http://或 https://形式,文档必须是WordExcel或PowerPoint文档 webView.loadUrl(&amp;quot;... + pdfUrl));...
  • 在浏览器中预览pdf文件和Word文件,下载完这些插件,导入到自己项目中,至于导入到哪个目录,web.xml中需要配置什么,在下载的文档中有具体的文档说明,按照文档中的步骤去配置就好了! 我们先看看效果图:后面直接...
  • php 在线预览office 相关文档

    千次阅读 2020-07-06 14:22:20
    若不使用第三方的软件,类如卓正公司的PageOffice等专业工具,要想实现在自己平台上word,excel,ppt,pdf等格式的在线预览。推荐使用一些方法。 1.Excel 引用第三方的平台,通过调用地址,传入地址的方式来预览文件...
1 2 3 4 5 ... 20
收藏数 1,111
精华内容 444
关键字:

pageoffice pdf预览