Windows下實現php線上預覽功能

來源:互聯網
上載者:User

標籤:

最近用到文檔線上預覽功能,之前沒接觸過,一切從零開始,整了一段時間終於實現,現在把方法分享給大家!

一、主要思路

  先將其他格式的文檔(office文檔、txt、圖片等等)通過OpenOffice轉換成PDF格式文檔,然後通過swftools(http://www.swftools.org/)將PDF格式文檔轉換為swf格式文檔,最後通過flexpaper顯示swf格式的文檔,從而實現預覽多種格式的文檔。

  使用到的工具自己從網上下載,很好找的。

二、實現過程

  1.其他文檔轉為PDF

   用命令啟動OpenOffice:

      運行->cmd,輸入下面的命令

      cd /d E:/openoffice/program & soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard

      或者在cmd中進入program目錄,然後輸入soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard

   php實現代碼:     

       set_time_limit(0);
         function MakePropertyValue($name,$value,$osm){
           $oStruct = $osm->Bridge_GetStruct("com.sun.star.beans.PropertyValue");
           $oStruct->Name = $name;
           $oStruct->Value = $value;
           return $oStruct;
       }
       function word2pdf($doc_url, $output_url){
         $osm = new COM("com.sun.star.ServiceManager") or die ("Please be sure that OpenOffice.org is installed.n");
         $args = array(MakePropertyValue("Hidden",true,$osm));
         $oDesktop = $osm->createInstance("com.sun.star.frame.Desktop");
         $oWriterDoc = $oDesktop->loadComponentFromURL($doc_url,"_blank", 0, $args);
         $export_args = array(MakePropertyValue("FilterName","writer_pdf_Export",$osm));
         $oWriterDoc->storeToURL($output_url,$export_args);
         $oWriterDoc->close(true);
       }
       $doc_file = ‘D:/wamp/www/onlineread/uploads/docfile.doc‘;  
       $output_file = ‘D:/wamp/www/onlineread/uploads/pdffile.pdf‘; 
       $doc_file = "file:///" . $doc_file;
       $output_file = "file:///" . $output_file;
       word2pdf($doc_file,$output_file);

  2.PDF轉換為swf並顯示

     php實現代碼:

       $source=‘D:/wamp/www/onlineread/uploads/pdffile.pdf‘; 

       $convert=‘D:/wamp/www/onlineread/uploads/swffile.swf‘; 

       $command = "D:/wamp/www/onlineread/Public/swftools/pdf2swf.exe -t ".$source." -s flashversion=9 -o ".$convert;
       $WshShell = new COM("WScript.Shell");
       //執行cmd命令
       $oExec= $WshShell->Run("cmd /C ". $command, 0, true);//如果轉換成功$oExec值為0

    swf顯示:

       <div style="width:100%;height:800px;display:block;margin-left: auto;margin-right: auto; margin-top: 20px;">

         <a id="viewerPlaceHolder" style="width:100%;height:800px;display:block;"></a>  
         <script type="text/javascript">

           var path="/<?=$convert?>";//調用php的變數,如果不能實現可考慮下一句的寫法

           //var path="/<?php echo $convert?>";
             var fp = new FlexPaperViewer(
             ‘__PUBLIC__/FlexPaper/FlexPaperFlash/FlexPaperViewer‘,
             ‘viewerPlaceHolder‘, { config : {//配置參數,可自行修改成自己想要的
               SwfFile : escape(path),
               Scale : 1,
               ZoomTransition : ‘easeOut‘,
               ZoomTime : 0.5,
               ZoomInterval : 0.2,
               FitPageOnLoad : false,
               FitWidthOnLoad : false,
               PrintEnabled : true,
               FullScreenAsMaxWindow : false,
               ProgressiveLoading : false,
               MinZoomSize : 0.2,
               MaxZoomSize : 5,
               SearchMatchAll : false,
               InitViewMode : ‘Portrait‘,
               ViewModeToolsVisible : true,
               ZoomToolsVisible : true,
               NavToolsVisible : true,
               CursorToolsVisible : true,
               SearchToolsVisible : true,
               localeChain: ‘en_US‘
           }});
         </script>
       </div>

  3.運行前的準備

    需要先進行如下的設定,否則運行過程中可能會出錯!

    控制台-管理工具-元件服務-電腦-我的電腦-DOCM配置,找到OpenOffice Service Manager(Ver 1.0)右鍵屬性,按所示進行配置:

                如所示找到OpenOffice Service Manager(Ver 1.0):

 

                  在彈出框中選擇‘安全’,分別編輯‘啟動和啟用許可權’和‘存取權限’:

                    在‘啟動和啟用許可權’彈出框中點擊添加,輸入Everyone:

                    設定Everyone的許可權:

                  在‘存取權限’的彈出框中點擊添加,輸入Everyone:

                

                    設定Everyone許可權:

                  在屬性對話方塊中選擇‘標識’,選擇‘互動式使用者’:

  

 

    如果遇到COM類執行個體化失敗的問題,開啟php設定檔,去掉com.allow_dcom=true前面的分號,並添加extension=php_com_dotnet.dll,因為php5.4以後就不內嵌com了。

   設定好後不要忘記重啟服務哦!

    

Windows下實現php線上預覽功能

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.