藉助flexpaper實現word在線預覽和打印

爲了實現word可以在web上儘可能以原始的排版樣式展示出來,選擇基於activex控件的方式太過於依賴某種瀏覽器,而且存在可能須要花費金錢購買相應的控件產品;因而藉助flexpaper這種flash展示方式就成爲了首選的解決方案。該方案的實現過程主要是先將word文檔轉換成pdf文檔,接着再經過SWFTOOLS工具將pdf文檔轉換成swf文件,而後flexpaper加載這些swf文件進行展現。php

訪問flexpaper的官網地址:http://flexpaper.devaldi.com/download/  下載web版的flexpaper,同時把須要用到的3個軟件也下載下來。我當前下載的最新版本是FlexPaper_2.3.6版。java

先安裝好下載好的3個軟件包:web

接着解壓FlexPaper_2.3.6json

能夠看到解壓後的文件目錄裏提供了asp.net版本、java版本和php版本,在這裏我選擇部署的是java版本,打開java目錄,能夠看到一個war包,將其部署到tomcat裏,而後啓動tomcat訪問所部署的flexpaper的根路徑。初次訪問會跳轉到一個配置的頁面,經過該頁面進行設置管理員帳號密碼、配置上面所提到的3個軟件的安裝路徑,而後還有配置須要轉換的pdf所在的目錄及轉換後的swf文件存放的目錄,這兩個目錄都須要事先建立好。還有另一個重要的配置是swf的生成模式,flexpaper提供了單文件模式和多文件模式,若是選擇單文件模式,那麼一個pdf文檔轉換成swf時,就只生成一個swf文件;若是選擇多文件模式,那麼一個pdf文檔裏若是有好幾頁的內容,那麼就會生成多個相對應的swf文件。瀏覽器

以後只要根據你所配置的文件模式訪問剛部署的flexpaper的對應url,而且在url上的doc參數裏傳遞你所配置的pdf目錄下的pdf文件名就能夠直接在線預覽到pdf文件了。tomcat

單文件模式時訪問的url:http://127.0.0.1:8080/FlexPaper/common/simple_document.jsp?doc=660521783206862.pdfasp.net

多文件模式時訪問的url:http://127.0.0.1:8080/FlexPaper/common/split_document.jsp?doc=660521783206862.pdfless

 

接下來就是須要在程序中把word文檔轉換成pdf文檔,並將其保存到上面所提到的pdf目錄下,以便實現word文檔的在線瀏覽。socket

在這裏我使用的是java語言,使用了artofsolving的jodconverter包來進行doc到pdf的轉換,轉換須要藉助OpenOffice,因此還須要下載安裝OpenOffice。jsp

我當前下載安裝的OpenOffice版本爲4.1.2版。

 

jodconverter用得多的主要有兩個版本,一個是2.2.1版,另一個是3.0-beta4版本。

 

2.2.1版

2.2.1不支持docx格式,而且須要事先經過命令行開啓OpenOffice的服務,

開啓OpenOffice服務的命令行代碼以下:

cd d:\Program Files (x86)\OpenOffice 4\program
soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard

java關鍵代碼:

// connect to an OpenOffice.org instance running on port 8100  
            OpenOfficeConnection connection = new SocketOpenOfficeConnection(  
                    "127.0.0.1", 8100);  
            connection.connect();  
  
            // convert  
            DocumentConverter converter = new OpenOfficeDocumentConverter(  
                    connection);  
            converter.convert(inputFile, outputFile);  
  
            // close the connection  
            connection.disconnect();  

若是使用maven來進行管理的,那麼2.2.1版的依賴配置以下:

<dependency>
    <groupId>com.artofsolving</groupId>
    <artifactId>jodconverter</artifactId>
    <version>2.2.1</version>
</dependency>

 

3.0-beta4版

 3.0-beta4支持docx版本,而且不須要事先經過命令行開啓OpenOffice服務,而是能夠經過java代碼來進行開啓和關閉。

java關鍵代碼:

private  static OfficeManager officeManager;

public static void convert(File originFile,File destFile){
         long startTime = System.currentTimeMillis();
         startService();        
         OfficeDocumentConverter converter = new OfficeDocumentConverter(officeManager);
         converter.convert(originFile,destFile);
         log.info("轉換完成.耗時" +( (System.currentTimeMillis() - startTime) / 1000)+ "秒");
         stopService();
    }

    private static void startService(){
        DefaultOfficeManagerConfiguration configuration=new DefaultOfficeManagerConfiguration();
        log.info("準備啓動office轉換服務...");
        configuration.setOfficeHome("D:/Program Files (x86)/OpenOffice 4");
        configuration.setPortNumber(8100);
        configuration.setTaskExecutionTimeout(1000*60);//任務超時時間1分鐘
        try {
            officeManager=configuration.buildOfficeManager();
            officeManager.start();//啓動服務
            log.info("office轉換服務啓動成功!");
        } catch (OfficeException e) {
            log.error("office轉換服務啓動失敗!");
        } catch (IllegalStateException e) {
            log.error("office轉換服務啓動失敗!");
        }
    }
    
    private static void stopService(){
        if(officeManager!=null){
            officeManager.stop();
            log.info("office轉換服務關閉成功!");
        }else{
            log.info("office轉換服務未啓動!");
        }
    }

若是使用maven來進行管理的,3.0-beta4版經過maven中央庫下載不到,須要本身經過artofsolving的網站把jar下載下來,而後註冊到本身本地的maven倉庫裏。

jodconverter-core-3.0-beta-4.bat:

mvn install:install-file -DgroupId=com.artofsolving -DartifactId=jodconverter -Dversion=3.0-beta-4 -Dpackaging=jar -Dfile=%CD%\jodconverter-core-3.0-beta-4.jar

pom配置:

<dependency>
            <groupId>com.artofsolving</groupId>
            <artifactId>jodconverter</artifactId>
            <version>3.0-beta-4</version>
        </dependency>
        <dependency>
            <groupId>org.openoffice</groupId>
            <artifactId>juh</artifactId>
            <version>3.2.1</version>
        </dependency>
        <dependency>
            <groupId>org.openoffice</groupId>
            <artifactId>unoil</artifactId>
            <version>3.2.1</version>
        </dependency>
        <dependency>
            <groupId>commons-cli</groupId>
            <artifactId>commons-cli</artifactId>
            <version>1.1</version>
        </dependency>
        <dependency>
            <groupId>org.json</groupId>
            <artifactId>json</artifactId>
            <version>20090211</version>
        </dependency>

因爲3.0-beta4的jar包是本身寫命令行註冊到本地maven庫裏的,因此沒帶有其依賴包的關係,所以須要手動將其所依賴的其餘jar包給配置到pom文件裏。

相關文章
相關標籤/搜索