1. 程式人生 > >jsp+java用pageoffice線上編輯office文件

jsp+java用pageoffice線上編輯office文件

首先你要有三個東西:sealsetup.exe、pageoffice.jar和posetup.exe,如果沒有,就去     http://www.zhuozhengsoft.com/download.html     下載,下載完之後拷貝sealsetup.exe、pageoffice.jar和posetup.exe到專案的WEB-INF\\lib目錄下。

第二步 在專案的web.xml裡面新增如下程式碼:

<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>/poserver.do</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>poserver</servlet-name>
<url-pattern>/pageoffice.cab</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>poserver</servlet-name>
<url-pattern>/popdf.cab</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>
<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.do</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>adminseal</servlet-name>
<url-pattern>/loginseal.do</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>adminseal</servlet-name>
<url-pattern>/sealimage.do</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>

接下來就可以直接在頁面上使用了,此處以一個死路徑為例

function editfile() {
var filesrc="/test.doc";
var url='<%=contextPath%>/editfile.jsp?fileId='+filesrc;
window.open(url,'newWin','modal=yes,width=560,height=420,resizable=no,scrollbars=no'); 
}

editfile.jsp頁面的程式碼如下:

<%@ page language="java" import="java.util.*,com.zhuozhengsoft.pageoffice.*,java.sql.*,java.io.*,javax.servlet.*,javax.servlet.http.*" pageEncoding="utf-8"%>
<%@ taglib uri="http://java.pageoffice.cn" prefix="po"%>
<%
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
//******************************卓正PageOffice元件的使用*******************************
PageOfficeCtrl poCtrl1 = new PageOfficeCtrl(request);
//poCtrl1.setServerPage(request.getContextPath() + "/poserver.zz"); //此行必須
poCtrl1.setServerPage("poserver.do"); //此行必須
poCtrl1.setSaveFilePage("SaveFile.jsp");//執行儲存操作的檔案或者請求路徑


//1:儲存 2:蓋章 3:批註文字 4:全屏  5:打鉤 6:列印  7:搜尋  0:文字列表
poCtrl1.addCustomToolButton("儲存", "Save", 1);
poCtrl1.addCustomToolButton("普通編輯", "docNormalEdit", 3);
poCtrl1.addCustomToolButton("痕跡編輯", "docRevisionOnly", 3);
poCtrl1.addCustomToolButton("顯示痕跡", "ShowRevisions", 5);
poCtrl1.addCustomToolButton("隱藏痕跡", "HiddenRevisions", 5);
poCtrl1.addCustomToolButton("手寫批註", "StartHandDraw", 3);


String path=request.getSession().getServletContext().getRealPath("/") ;
//String path=getClass().getResource("/").getFile().toString();
    
String fullpath = "";//完整路徑
String filepath = request.getParameter("fileId");//檔案存放路徑
poCtrl1.setCaption("線上編輯  "+filepath);
//如果是檔案存放路徑,要加上伺服器地址,組合成完整路徑
if (filepath != null && !"".equals(filepath)
&& !"null".equals(filepath)
&& !"undefined".equals(filepath)) {
fullpath = path +"/"+filepath;
}


//獲取檔案型別
String fileType=filepath.substring(filepath.lastIndexOf("."));
if(fileType.trim().equals(".doc")||fileType.trim().equals(".docx")) {
poCtrl1.webOpen(fullpath, OpenModeType.docNormalEdit, "aa");//可編輯模式開啟word文件
//poCtrl1.webOpen(fullpath, OpenModeType.docReadOnly, "aa");//只讀模式開啟word文件
} else if(fileType.trim().equals(".xls")||fileType.trim().equals(".xlsx")) {
poCtrl1.webOpen(fullpath, OpenModeType.xlsNormalEdit, "aa");//可編輯模式開啟excel文件
//poCtrl1.webOpen(fullpath, OpenModeType.xlsReadOnly, "aa");//只讀模式開啟excel文件
} else if(fileType.trim().equals(".ppt")||fileType.trim().equals(".pptx")) {
poCtrl1.webOpen(fullpath, OpenModeType.pptNormalEdit, "aa");//可編輯模式開啟ppt文件
//poCtrl1.webOpen(fullpath, OpenModeType.pptReadOnly, "aa");//只讀模式開啟ppt文件
}


poCtrl1.setTagId("PageOfficeCtrl1"); //此行必須要!
%>




<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<link href="images/csstg.css" rel="stylesheet" type="text/css" />
<script type="text/javascript">
    //流程跳轉
    function Lz(id,flag) {
    if(flag==0){
    location.href=encodeURI("index.jsp?id="+id+"&flg=李四批閱");
    }
    else 
    location.href=encodeURI("index.jsp?id="+id+"&flg=文員清稿");
    }
    </script>
<style>
* {
margin: 0;
padding: 0;
width: 100%;
height: 100%;
}
</style>
</head>
<body>
<form id="form2">
<div id="content">
<div id="textcontent" style="width:auto; height:100%;">
<!--**************   卓正 PageOffice元件 ************************-->
<script type="text/javascript">
function Save() {
        //判斷是否為附件
        var fullpath = "<%=fullpath%>";
        if(fullpath.indexOf('http:') == 0){
        if(window.confirm("該檔案不是附件不能儲存到伺服器!\n        是否另存為本地檔案?")){
        document.getElementById("PageOfficeCtrl1").ShowDialog( 3 ); 
        }else{
        
        }
        return;
        }
        //提示是否儲存伺服器
if (window.confirm("是否要將修改後的內容儲存到伺服器?")) { 
            document.getElementById("PageOfficeCtrl1").WebSave();
} else {

}
        }
        




        //顯示痕跡
        function ShowRevisions() {
            document.getElementById("PageOfficeCtrl1").ShowRevisions = true;
        }




        //隱藏痕跡
        function HiddenRevisions() {
            document.getElementById("PageOfficeCtrl1").ShowRevisions = false;
        }
        
        //領導圈閱簽字
        function StartHandDraw() {
            document.getElementById("PageOfficeCtrl1").HandDraw.SetPenWidth(5);
            document.getElementById("PageOfficeCtrl1").HandDraw.Start();
        }
// 插入鍵盤批註
        function StartRemark() {
            var appObj = document.getElementById("PageOfficeCtrl1").WordInsertComment();




        } 
        //分層顯示手寫批註
        function ShowHandDrawDispBar() {
            document.getElementById("PageOfficeCtrl1").HandDraw.ShowLayerBar(); ;
        }




        //全屏/還原
        function IsFullScreen() {
        alert("全屏/還原");
            document.getElementById("PageOfficeCtrl1").FullScreen = !document.getElementById("PageOfficeCtrl1").FullScreen;
        }




        //顯示標題
        function ShowTitle() {
            alert("該選單的標題是:" + document.getElementById("PageOfficeCtrl1").caption);
        }
        
        //痕跡編輯模式
        function docRevisionOnly(){
        var fullpath = '<%=fullpath%>';
        document.getElementById("PageOfficeCtrl1").Close(); 
        document.getElementById("PageOfficeCtrl1").WebOpen( fullpath, "docRevisionOnly", "張三" ); 
        }
        
        //普通編輯模式
        function docNormalEdit(){
        var fullpath = '<%=fullpath%>';
        alert(fullpath);
document.getElementById("PageOfficeCtrl1").Close();
document.getElementById("PageOfficeCtrl1").WebOpen("系統管理概要設計.doc", "docNormalEdit", "張三");
}
</script>
<po:PageOfficeCtrl id="PageOfficeCtrl1" />
</div>
</div>
</form>
</body>
</html>

以上就可以完成線上開啟office文件或者線上編輯office文件,如果需要儲存則在SaveFile.jsp頁面新增如下程式碼:

<%@ page language="java" import="java.util.*,com.zhuozhengsoft.pageoffice.*" pageEncoding="UTF-8"%>
<%
String contextPath = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+contextPath+"/";


FileSaver fs = new FileSaver(request, response);  //儲存Word文件到相應的磁碟路徑中   
fs.saveToFile(request.getSession().getServletContext().getRealPath("/") + "/" + fs.getFileName());   
//fs.showPage(300,300);//可在前臺彈出相應大小的視窗,並在上面顯示想要顯示的資訊內容
fs.close(); 
%>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
  </head>
  
  <body>
  <% 
  request.setCharacterEncoding("utf-8");
  response.setCharacterEncoding("utf-8");
  %>
  </body>
</html>

測試一下,就可以線上開啟office文件並且可以編輯和儲存了

相關推薦

jsp+javapageoffice線上編輯office

首先你要有三個東西:sealsetup.exe、pageoffice.jar和posetup.exe,如果沒有,就去     http://www.zhuozhengsoft.com/download.html     下載,下載完之後拷貝sealsetup.exe、pag

java流實現創建夾, 改名, 刪除, 復制

創建文件夾 copy rac rect exists for can not col     創建TestFileManager類,在本類中分別創建factFile()方法(遍歷文件夾中所有的文件)、console()方法(換行)、createFolder()方法(創建文件

java 實現不同使用者編輯 word 的不同區域

1:需求     案例分析: 員工寫了一篇文案 . 需要各位領導需要填寫各自的意見 . 2:方案:     不同的使用者編輯不同區域的方法,      核心思想:  page

線上編輯word

                在安裝Office2003以後,有一個ActiveX控制元件被安裝到了系統中,這個控制元件位於“Program   Files/Microsoft   Office/OFFICE11/owssupp.dll”。通過這個控制元件,客戶端頁面上的JavaScript就可以啟用本地的

在Android APP裡面開啟線上office

 只需要用“https://view.officeapps.live.com/op/view.aspx?src=” 開頭,再拼接上你要開啟的文件的地址,要注意的是這個不支援本地,只支援線上的文件。例如https://view.officeapps.live.com/op/vi

[轉載]Java集成PageOffice在線打開編輯word - Spring Boot

ati ppi leaf oid oot url ava () sqlit 開發環境:JDK1.8、Eclipse、Sping Boot + Thymeleaf框架。 一. 構建Sping Boot + Thymeleaf框架的項目(不再詳述):   1. 新建一個mave

使用微軟提供的Office Online實現Office線上檢視,編輯等功能

使用微軟提供的Office Online平臺只需要一個網址即可線上檢視Xls,doc,PPT等文件 詳情:http://www.cnblogs.com/huangtailang/p/76492af9d30087d8659d8d5400d20fc7.html pd

java實現線上預覽office

本文采用openoffice+pdf2htmlEx和openoffice直接轉為html方式實現線上預覽 安裝,並作為服務在後臺啟動,後臺啟動命令:在openOffice的安裝目錄下的program資料夾下,windows命令:soffice -headless -ac

apache poi操作office----java線上預覽txt、word、ppt、execel,pdf程式碼

在頁面上顯示各種文件中的內容。在servlet中的邏輯 word:  BufferedInputStream bis = null;   URL url = null;   HttpURLConnection httpUrl = null; // 建立連結   u

java調copy復制子夾及到指定目錄(非xcopy)

後悔 xcopy exceptio exce put line 昨天 stat 效率 因為作所以煩因為煩所以快樂...(為什麽不先查一下有沒有現成的命令,後悔啊!!) 不知道有xcopy這個命令就自己想寫個復制子目錄和文件的功能。。。以下故事誕生了 是這樣的,昨天在學校

sharepoint 2013 使用Office Web Apps 查看或編輯office檔時頁面出現:“抱歉,出現了問題”錯誤

moss sharepoint officewebapp報錯 sharepoint 使用Office Web Apps 查看或編輯office文檔時頁面出現:“抱歉,出現了問題”錯誤 sharepoint 2013 使用Office Web Apps 查看或編輯office文檔時頁面出現:“抱歉,出現了

java 調OpenOffice將word格式轉換為pdf格式

一次 復制代碼 端口 rto system files runtime 存在 tco 一:環境搭建 OpenOffice 下載地址http://www.openoffice.org/ JodConverter 下載地址http://sourceforge.net/proje

通過COM組方式實現java調C#寫的DLL

time rar .exe 字符串 sys 還需 第一個 運行 system 最近一段時間單位在做一個Web項目,工程師用JAVA語言,需要公用人員信息,統一用戶名和密碼,原有的平臺中是用C#語言開發的,在網上查找解決方法,通過JAVA調用C#的DLL文件實現。網上

java控制不同使用者同時編輯Word中不同的區域

1.需求 java 實現不同使用者編輯 word 文件的不同區域(https://my.oschina.net/u/3507515/blog/2413926) 這篇文章主要介紹了不同的使用者編輯不同的區域.但是如果多個使用者同時編輯儲存文件文件的時候就會出現相互覆蓋的問題, 所以 pageo

Java實現線上開啟word加蓋印章/蓋章/簽名功能

前言: 我們知道,大型一點的OA辦公系統都會有很多線上處理office辦公文件的需求。其中有一點也基本繞不開,那就是為文件蓋章或新增手寫簽名來保護文件,讓被蓋章的文件不再被編輯。 在Java中,我們都知道用於操作office的解決方案常用的有POI、OpenOffice等。但是這些解決方案有一個

Java 實現線上開啟 word 併發處理

1. 需求 防止多個使用者同時開啟一個檔案,出現編輯儲存檔案相互覆蓋的問題。 2. 頁面程式碼 (1)web.xml <!-- PageOffice Begin --> <servlet> <servlet-name>poserver<

Apache POI 4.0.1 釋出,Office Java API

   Apache POI 4.0.1 已釋出,包含一些改進和修復,亮點包括: 依賴更新:XMLBeans 3.0.2 / Bouncycastle 1.60 XSSF: import chart on drawing XDDF: Define XDDF user mo

java B2B2C Springboot電子商務平臺原始碼(十)spring Restdocs建立API

這篇文章將帶你瞭解如何用spring官方推薦的restdoc去生成api文件。本文建立一個簡單的springboot工程,將http介面通過Api文件暴露出來。只需要通過 JUnit單元測試和Spring的MockMVC就可以生成文件。 準備工作 你需要15min Jdk 1.8

JAVA結合OpenOffice轉換office-jodconverter-core-3.0-beta-4

首先機器要安裝openoffice軟體,下載連結:http://www.openoffice.org/download/index.html 學習結合網友寫的,直接給出程式碼: import java.io.File; import java.io.IOExceptio

如何在Web頁面上直接開啟、編輯、建立Office

在安裝Office2003以後,有一個ActiveX控制元件被安裝到了系統中,這個控制元件位於“Program Files/Microsoft Office/OFFICE11/owssupp.dll”。通過這個控制元件,客戶端頁面上的JavaScript就可以啟用本地的Off