pageoffice php 用_php pageoffice - CSDN
精华内容
参与话题
  • 报错内容,我的是php版的pageOffice,不清楚只是不是java问题还是php代码的问题,我现在还是的dome版本进行测试中。 ![图片说明](https://img-ask.csdn.net/upload/201511/16/1447635272_368686.jpg) ![图片说明...
  • PageOffice_4.3.0.3_PHP

    2020-07-30 23:31:46
    php集成文件处理
  • 使用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工具包

    2020-07-29 14:20:01
    PageOffice目前支持的Web编程语言及架构有:Java(JSP、SSH、MVC等),ASP.NET(C#、VB.NET、MVC、Razor等),PHP,ASP。 长期以来,B/S架构的Web应用系统在处理Office文档时都面临两大技术难题。一个是如何在网页里在线...
  • PageOffice 4.5.0.12 Freemarker 集成 PageOffice功能更强大 集成更简单,支持JAVA、ASP.NET、PHP多种编程开发语言,使开发集成简单高效,事半功倍。 引用官网宣传词 官方提供了spring boot themeleaf集成的版本,.....

    环境

    • spring boot 1.5.8
    • shiro
    • PageOffice 4.5.0.12
    • Freemarker

    集成

    PageOffice功能更强大 集成更简单,支持JAVA、ASP.NET、PHP多种编程开发语言,使开发集成简单高效,事半功倍。 引用官网宣传词
    官方提供了spring boot themeleaf集成的版本,但是工作中指定使用freemarker,所以写下这篇文章,以作参考。

    依赖引入

    首先添加依赖pageoffice4.5.0.12.jar 到pom.xml。官方提供了基本jar包,引入到本项目中即可。不采取本地引入也可上传到maven私服 引入。

     <dependency>
                <groupId>com.zhuozhengsoft</groupId>
                <artifactId>pageoffice</artifactId>
                <version>4.5.0.12</version>
                <scope>system</scope>
                <systemPath>${basedir}/src/main/webapp/WEB-INF/lib/pageoffice4.5.0.12.jar</systemPath>
            </dependency>
    

    添加Bean注册

    自定义文件,添加Bean注册,为了简便直接添加到PageOfficeController

     /**
         * 添加PageOffice的服务器端授权程序Servlet(必须)
         *
         * @return
         */
        @Bean
        public ServletRegistrationBean servletRegistrationBean() {
            com.zhuozhengsoft.pageoffice.poserver.Server poserver = new com.zhuozhengsoft.pageoffice.poserver.Server();
            poserver.setSysPath("/");//设置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;
        }
    

    poserver.setSysPath("/")所指定地址为license.lic文件生成地址。用户在第一次使用时,会提示安装输入posetup.exe,以及输入序列号,官方提供了一个测试序列号,在官网提供的例子当中。
    例子

    文件查看、保存

    查看

     @RequestMapping(value = "/docView", method = RequestMethod.GET)
        public ModelAndView docView(HttpServletRequest request, ModelMap map) {
       
            PageOfficeCtrl poCtrl = new PageOfficeCtrl(request);
            poCtrl.setServerPage("/poserver.zz");//设置服务页面
            poCtrl.addCustomToolButton("保存", "Save", 1);//添加自定义保存按钮
            poCtrl.addCustomToolButton("全屏切换", "SetFullScreen()", 4);
    //        poCtrl.setMenubar(false);//隐藏菜单栏
    //        poCtrl.setOfficeToolbars(false);//隐藏Office工具栏
            poCtrl.setTimeSlice(10);
            poCtrl.setCaption("查看");//设置标题
    
            poCtrl.setSaveFilePage("/office/save");//设置处理文件保存的请求方法
            //打开word
            poCtrl.webOpen("C:\\test.docx", OpenModeType.docRevisionOnly, "某某人");
            map.put("pageoffice", poCtrl.getHtmlCode("PageOfficeCtrl1"));
            return new ModelAndView("webapp/base/docView");
        }
    

    保存

    @RequestMapping("/save")
    	public void saveFile(HttpServletRequest request, HttpServletResponse response){
    		FileSaver fs = new FileSaver(request, response);
    		fs.saveToFile("C:\\" + fs.getFileName());
    		fs.close();
    	}
    

    前端渲染

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <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>
    <div style="width:1200px;height:800px;">
        <#escape x as x?html>
    
        <#noescape> ${pageoffice}
    </#noescape>
    </#escape>
    </div>
    <script>
        function Save() {
            document.getElementById("PageOfficeCtrl1").WebSave();
        }
        function SetFullScreen() {//全屏
            document.getElementById("PageOfficeCtrl1").FullScreen = !document
    
                .getElementById("PageOfficeCtrl1").FullScreen;
        }
    </script>
    </body>
    </html>
    

    个人博客 > 欢迎来访

    展开全文
  • php 在线预览office 相关文档

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

    若不使用第三方的软件,类如卓正公司的PageOffice等专业工具,要想实现在自己平台上word,excel,ppt,pdf等格式的在线预览。推荐使用一些方法。

    1.Excel

    引用第三方的平台,通过调用地址,传入地址的方式来预览文件。

    预览方式:https://view.officeapps.live.com/op/view.aspx?src="一个url地址"

    在项目中可使用iframe框来加载。

    $url = "http://storage.xuetangx.com/public_assets/xuetangx/PDF/1.xls";
    $html .= "<iframe src='https://view.officeapps.live.com/op/view.aspx?src=$url' width=\"100%\" height=\"100%\" frameborder='1'></iframe>";

    效果预览

    word也可以使用上面的方式,但是对格式要求很严格。下面讲一个另一个平台的使用方法。

     

    2.word,ppt在线预览

    预览方式:https://api.idocv.com/view/url?url="url地址"

    同样,可使用iframe框加载

    word 格式

    $url = "http://148.70.56.74/test.doc";
    $html .= "<iframe src='https://api.idocv.com/view/url?url=$url' width=\"100%\" height=\"100%\" frameborder='1'></iframe>";

     

    预览效果:

    ppt格式

    $url = "http://148.70.56.74/222.pptx";
    $html .= "<iframe src='https://api.idocv.com/view/url?url=$url' width=\"100%\" height=\"100%\" frameborder='1'></iframe>";

    预览效果:

    ppt好像只有一个小时的试用期,要长久使用的话要购买。。。

    3.pdf在线预览

    需要引入pdf.js 地址

    下载地址: http://148.70.56.74/pdf.js             地址服务器已经到期,等新服务器买了后再放上去吧......

    将js引入之后,页面上只需要几行代码搞定。

    html

    <div id="viewpdf"></div>

     

    js ex:pdf  文件名字支持中文

    // 文件路径
    var url = 'http://148.70.56.74/群管理秘籍.pdf';
    var options = {
        height: "550px",
        pdfOpenParams: {view: 'FitV', page: '0' },
        ame:"mans",
        fallbackLink: "<p>您的浏览器暂不支持此pdf,请下载最新的浏览器</p>"
    };
    // 读取文件地址
    PDFObject.embed(url, "#viewpdf",options)

    预览效果:

     

     

    PHP代码,可以参考一下

    public function ViewDocument ($type){
            $type = $_GET['type'] ? $_GET['type'] : "word";
            $html = "";
            switch ($type){
                // 调用微软office平台 将抵制放到iframe框中预览 文件地址可以是在
                case "xls":
                    //$url = "http://148.70.56.74/cjxq.xls";
                    $url = "http://storage.xuetangx.com/public_assets/xuetangx/PDF/1.xls";
                    $html .= "<iframe src='https://view.officeapps.live.com/op/view.aspx?src=$url' width=\"100%\" height=\"100%\" frameborder='1'>
                </iframe>";
                    break;
                case "word":
                    $url = "http://148.70.56.74/test.doc";
                    $html .= "<iframe src='https://api.idocv.com/view/url?url=$url' width=\"100%\" height=\"100%\" frameborder='1'>
                </iframe>";
                    break;
                case "ppt":
                    $url = "http://148.70.56.74/test.pptx";
                    $html .= "<iframe src='https://api.idocv.com/view/url?url=$url' width=\"100%\" height=\"100%\" frameborder='1'>
                    </iframe>";
                    break;
                case "pdf":
                    $html = '<div id="viewpdf"></div>';
                    break;
                default:
                    $html = '';
                    break;
            }
            $this->view->assign("html",$html);
            $this->view->display('zrk/viewdoc');
    
        }

     

    展开全文
  • PageOffice轻松实现在线编辑 PageOffice,一款改变传统办公方式的软件,给各种管理软件系统和网站应用添加在线Office能力,让用户远离上传下载的烦恼,开创局域网在线Office办公的新时代, 卓正软件三年时间倾力...
  • 最近需要在网页上实现预览上传的word文档,并能在预览中添加自己的水印,之前没有实现过相关功能,搜索了一下网上的资料,清晰...安装配置OpenOffice、java、jodconverter,实现office文件转pdf 下载fpdf、fpdi库,...

    最近需要在网页上实现预览上传的word文档,并能在预览中添加自己的水印,之前没有实现过相关功能,搜索了一下网上的资料,清晰完整的教程较少,因此将自己实现的步骤和遇到的问题记录下来,希望能帮到有需要的人

    **服务器操作系统:linux centos **
    整个实现步骤简要如下:

    • 安装配置OpenOffice、java、jodconverter,实现office文件转pdf

    • 下载fpdf、fpdi库,使用其中的API实现给pdf文件添加水印

    • 将添加水印后的pdf文件在网页上显示出来

    详细步骤如下:

    1.安装OpenOffice

    • 下载OpenOffice 下载地址:http://www.openoffice.org/download/
      根据自己系统的情况选择下载类型,我选择的是x86_64,RPM格式

    • 将OpenOffice安装包上传到服务器中

    • 切换到安装包所在目录,使用以下命令解压OpenOffice安装包
      tar -zxvf Apache_OpenOffice_4.1.5_Linux_x86-64_install-rpm_zh-CN.tar.gz

    • 会看到当前目录下多了一个"zh-CN"文件夹,切换进入该文件夹中的"RPMS"目录,使用以下命令安装OpenOffice:
      rpm -ivh *.rpm
      安装成功后就可以启动OpenOffice服务了

    • 启动OpenOffice服务
      先切换到’openoffice4/program/'目录下(安装包解压后出现的目录),使用以下命令启动服务:
      ./soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard &
      以下是可能需要用到的命令:

      • 查看OpenOffice是否成功启动:
        netstat -nlp | grep 8100 如果没有显示则没成功
        ps -ef |grep 8100
        启动后若要停止服务只需kill服务的PID就行
      • 卸载Openoffice

      rpm -e rpm -qa |grep openoffice rpm -qa |grep ooobasis

    2.安装JAVA环境(如果服务器没有JAVA环境的话)
    OpenOffice的运行需要JAVA,所以必须安装。
    首先使用java -version查看自己服务器是否已经安装了

    • 下载JDK,下载地址:
      http://www.oracle.com/technetwork/java/javase/downloads/index.html
      根据自己的情况选择JAVA版本,操作系统位数不要选错
    • 将JDK上传到服务器的目录下,我的目录是/opt/java/,然后使用以下命令解压:
      tar -zxvf jdk-8u181-linux-x64.tar.gz (jdk名改成自己的)
    • 解压完成后编辑配置文件:vim /etc/profile 在其中添加以下内容:
    	JAVA_HOME=/usr/java/jdk1.8.0_60
    	CLASSPATH=$JAVA_HOME/lib/
    	PATH=$PATH:$JAVA_HOME/bin
    	export PATH JAVA_HOME CLASSPATH
    
    • 改完后使用source /etc/profile 更新系统环境配置。
    • 查看JAVA环境是否安装成功:java -version
    • 重新运行OpenOffice,查看是否成功,一般都没啥问题。

    3.安装jodconverter

    • 使用jodconverter调用openoffice来实现office文件转pdf,这个方法对于linux下的php比较方便。
      jodconverter下载地址:
      https://sourceforge.net/projects/jodconverter/files/
    • 下载完后上传到linux服务器解压,然后切换到jodconverter的lib目录下,使用以下命令测试word转pdf:
      java -jar jodconverter-cli-2.2.2.jar test.docx test.pdf
      如果成功将word文档转成pdf文档,则表示你的openoffice和jodconver都已经安装成功了。(该命令默认test.docx也在lib目录下)
      当然你也可以不用切换到lib目录,使用以下命令也能实现转换:
      java -jar 'jar包地址' '源文件地址' '输出文件地址'
    • 转换完成后查看一下pdf文件内容,看看是否中文出现乱码或者显示不出,若存在该情况,还需要进行下面这一步:

    4.解决转换结果中中文内容显示出错的问题

    • 将windows系统的c:\window\fonts目录下的字体上传到linux服务器的
      usr\share\fonts目录下,一般都是这个目录,可以用cat /etc/fonts/fonts.conf确认一下。
    • 上传完成后,使用命令fc-cache -fv更新缓存,然后重启openoffice服务,重新尝试文档转换。

    5.尝试使用php实现文档转换

    • 新建一个php文件,键入以下代码:
    $jodconverter_path = '/opt/jodconverter/lib/jodconverter-cli-2.2.2.jar';
    $infile_path       = '/opt/test/1.docx';
    $outfile_path      = '/opt/test/1.pdf';
    echo word2pdf($infile_path, $outfile_path, $jodconverter_path);
    
    function word2pdf ($infile_path, $outfile_path, $jodconverter_path) {
        if (empty($infile_path)) return false;    
        try {
            $p = "/opt/java/jdk1.8.0_181/bin/java -jar ". $jodconverter_path. ' '. $infile_path. ' '. $outfile_path;
            
            $res = exec($p);
            return $res;
        } catch (Exception $e) {
            return false;
        }
    }
    
    • 代码中的文件路径根据自己的情况修改,运行该php文件,则可以测试php能否成功将文件进行转换。
      在测试的过程中若遇到php无法执行exec()函数的问题,需要修改php.ini里的配置(disable_function等)。
    • 说一下我遇到的问题,就是php运行exec()时受到权限限制,无法执行命令,返回值为127。在网上找了一下解决方法,发现都是修改运行php的用户权限来实现的,这样会降低项目的安全性。
      最后我发现了一个简单的解决方法,就是把java -jar命令修改为/opt/java/jdk1.8.0_181/bin/java -jar,也就是把java程序的全路径写出来,这样就能正常运行了。所以这个权限问题应该是运行php的当前用户没有访问系统$PATH的权限。

    6.使用fpdf和fpdi给pdf文件添加水印

    //添加日期作为水印
    require_once('./fpdf/fpdf.php');
    require_once('./fpdi/fpdi.php');
    
    $pdf = new FPDI();
    //获取pdf页数
    $pageCount = $pdf->setSourceFile('more.pdf');
    //遍历每一页,添加水印
    for ($pageNo = 1; $pageNo <= $pageCount; $pageNo++)
    {
        //获取当前页
        $templateId = $pdf->importPage($pageNo);
    	//获取当前页大小
        $size = $pdf->getTemplateSize($templateId);
        //创建一页空白页
        if ($size['w'] > $size['h'])
    	   $pdf->AddPage('L', array($size['w'], $size['h']));
        else 
    	   $pdf->AddPage('P', array($size['w'], $size['h']));
        //加上当前页
        $pdf->useTemplate($templateId);
        //设置水印字体
        $pdf->SetFont('Arial','B','12');
        //加上水印
        $pdf->SetXY(10, 20); //水印坐标
        $pdf->Write(7, date('Y-m-d'));
    }
    $pdf->Output('word.pdf');
    

    下面是添加图片作为水印:

    //给pdf添加图片水印,与添加文字水印大同小异
    require_once('./fpdf/fpdf.php');
    require_once('./fpdi/fpdi.php');
    
    $pdf = new FPDI();
    $pageCount = $pdf->setSourceFile('more.pdf');
        
    for ($pageNo = 1; $pageNo <= $pageCount; $pageNo++){
        $templateId = $pdf->importPage($pageNo);
        $size = $pdf->getTemplateSize($templateId);
        if ($size['w'] > $size['h']) 
    	   $pdf->AddPage('L', array($size['w'], $size['h']));
        else 
    	   $pdf->AddPage('P', array($size['w'], $size['h']));
    
        $pdf->useTemplate($templateId);
        $pdf->image("test.png", 75, 85, 50);//加上图片水印,后为坐标
    }
    $pdf->Output('pic.pdf');
    
    

    7. 在页面上实现预览
    两种方法

    • 第一种:
    $path = 'pic.pdf';
    $file = fopen($path, "r");
    Header("Content-type: application/pdf");
    echo fread($file, filesize($path));
    fclose($file);
    
    
    • 第二种
    $path = 'pic.pdf';
    Header("Content-type: application/pdf");
    header("Content-Disposition:inline;filename='pic.pdf'");
    readfile($path);
    
    • 效果如下:
      这里写图片描述

    图片的透明度什么的靠自己设置了。

    以上就是php实现在线预览word等office文件,并在其中添加水印的个人实现过程。
    如有错误,欢迎指正哈! ?

    展开全文
  • 关于使用PHP转换office文件为PDF的解决方案!最近遇到了相关的问题,需要让office相关文件在线浏览,类似于百度文库,之前接触过,知道可以使用pdf.js在线浏览PDF文件,那么现在就需要将Word文件转为PDF文件,PPT...
  • 2019独角兽企业重金招聘Python工程师标准>>> ...
  • php office文件(word/excel/ppt)转pdf文件

    千次阅读 热门讨论 2018-01-27 15:38:22
    关于预览office文件实现核心就是,把office文件(word,excel,ppt)转为pdf文件, 然后再把pdf文件经过pdf2html转为html文件进行预览。 利用openoffice的话,非常简单,不过效果不太好,转成的pdf样式会乱! 这里...
  • 最近项目想用到"文档在线预览",参考了一下 使用OpenOffice.org将各类文档转为PDF  本想OpenOffice的类, 但OpenOffice的类太复杂了.. 后来想到了Aspose ,  Google docs(谷歌文档)也是的这个商业解决方案.....
  • php Windows office转pdf

    2019-06-23 16:58:45
    OpenOffice 是一套开源跨平台的办公软件,由许多自由软件人士共同来维持,让大家能在 Microsoft Office 之外,还能有免费的 Office 可以使用。 OpenOffice 与微软的办公软件套件兼容,能将 doc、xls、ppt 等文件转....
  • 使用PHPWord生成word文档

    万次阅读 2018-10-09 13:06:46
    安装 我们使用Composer来安装PHPWord。 composer require phpoffice/phpword ...如何使用 自动加载 安装好phpword后,新建一个php文档,引入autoload.php。 require 'vendor/autoload.php'; 实例...
  • <p>That piece works successfully as it will redirect the user to the Office365 login page, and after a user enters credentials, takes them to the index page (index.php). <p>In my index page, I have ...
  • TP5+pageoffice本地项目

    2020-10-27 12:31:22
    2.pageofficehttp://www.zhuozhengsoft.com/Technical/技术支持-下载中心,下载 -[新]PageOffice 5.1 for PHP (同时支持IE、Chrome、Firefox版)。根据其中的“安装说明”文档,进行配置。 目前遇到报错,因为Java...
  • 参见:http://www.phpnotes.top/2017/12/06/php/111/ 前提 需要手动在php.ini中开启 [COM_DOT_NET] extension=php_com_dotnet.dll COM配置项 COM 配置选项 名字 默认 可修改范围 更新日志 com.allow_dcom "0...
  • PHPWord - 获取页数?

    2019-11-01 11:37:08
    <p>I'm adding in peoples' names, so people with longer names could throw one line onto two, and push everything down onto a second page. <p>Does PHPWord have a way to count the number of pages, so I...
1 2 3 4 5 ... 20
收藏数 4,892
精华内容 1,956
关键字:

pageoffice php 用