2019年2月19日 星期二

OOO新舊樣板並用

新版是指使用Libreoffice5.0以後的版本作為的樣板,預設不預先解壓縮,使用tbszip.php這組class, 舊樣板指2.x以前的版本作為的樣板,預先解壓縮,使用sxsooo_class.php這組class處理樣板。
首先讓ooo.zip和ooo.tbszip分別繼承原來的類別,然後協調出底下五個函數:
change_temp
load_temp
download
replace
add
這樣就可以讓使用時使用相同的函數解決問題

從$ooo_path判斷新舊樣板
如果是一個目錄且存在content.xml就是舊樣板, 否則是一個odt檔就是新樣板
$newver=false;
if (file_exists($ooo_path.'/content.xml')) {
   include_once XOOPS_ROOT_PATH."/modules/x_base/lib/ooo.zip.php";  //使用舊版本
   $ttt = new oooZip;
} elseif (file_exists($ooo_path.".odt")) {
   include_once XOOPS_ROOT_PATH."/modules/x_base/lib/ooo.tbszip.php";  //使用新版本
   $ttt = new oooTbsZip;
   $newver=true;
}

讀取content.xml 就用
 $data = $ttt->load_temp($ooo_path);
 $file_extname=$ttt->file_extname;

樣版分析先照舊

樣板替換使用$ttt->change_temp($temp_arr,$loop_data);

替換content.xml
  $ttt->replace("content.xml",$replace_data);
  產生 zip 檔輸出
  $ttt->download($filename);

沒有留言:

張貼留言