zoukankan      html  css  js  c++  java
  • php解决word合并问题

    目前碰见一个问题 需要把多个word进行合并,但是呢在合并过程中发现换行的问题出现,因为合并是基于word的xml来的
    所以分析xml的问题

    思路如下:
    将多个xml读取到一个数组里面截取body部分,然后替换中间多余的段落行为空,组合成一个大的body,然后追加到第一个word里面

    组件用的是tbszip 网上自己下载

    合并10个word代码如下:

    public function gettests()
        {
            include_once(APPPATH.'/libraries/tips/tbszip.php');
    
            $zip = new clsTbsZip();
            $path=APPPATH.'data/words/';
            $filelist=scandir($path);
    
    
    
             foreach($filelist as $ks=>$vs) {
                if ($vs=='.' || $vs=='..' || $vs=='.DS_Store' || $vs=='0.docx') {
                    continue;
                }
                $zip->Open($path.$vs);
                $content1 = $zip->FileRead('word/document.xml');
                $zip->Close();
    
               
                $p = strpos($content1, '<w:body');
                if ($p===false) exit("失败");
                $p = strpos($content1, '>', $p);
                $content1 = substr($content1, $p+1);
                $p = strpos($content1, '</w:body>');
                if ($p===false) exit("失败");
                $content1 = substr($content1, 0, $p);
                $strs='<w:p><w:pPr><w:rPr><w:sz w:val="21"/><w:szCs w:val="21"/></w:rPr></w:pPr></w:p><w:p/><w:p/><w:p/><w:p/><w:p/><w:p/><w:p/><w:p/><w:p><w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:hAnsi="Arial" w:cs="Arial"/></w:rPr></w:pPr></w:p><w:p/><w:p/><w:p/><w:p/><w:p/><w:p><w:r><mc:AlternateContent>';
                $oldstrs='<w:p><w:pPr><w:rPr><w:sz w:val="21"/><w:szCs w:val="21"/></w:rPr></w:pPr></w:p><w:p/><w:p/><w:p/><w:p/><w:p/><w:p/><w:p/><w:p/><w:p><w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:hAnsi="Arial" w:cs="Arial"/></w:rPr></w:pPr></w:p><w:p/><w:p/><w:p/><w:p><w:r><mc:AlternateContent>';
                $content1=str_replace($strs,$oldstrs,$content1);
                $contents[]=$content1;
                
            }
    
    
           
               
    
                $zip->Open($path."/0.docx");
                $content2 = $zip->FileRead('word/document.xml');
               
           
                $p = strpos($content2, '</w:body>');
                if ($p===false) exit("失败");
                $content2 = substr_replace($content2, implode('',$contents), $p, 0);
                $zip->FileReplace('word/document.xml', $content2, TBSZIP_STRING);
                
                $zip->Flush(TBSZIP_FILE, APPPATH.'data/merges/merges.docx');
    
            
        }
    
  • 相关阅读:
    图像的纹理分析
    图像的小波变换
    图像的哈尔变换
    图像的K-L变换
    图像的斜变换
    图像的波尔什-哈达玛变换
    今日心得:给自己写信
    今日心得:人的幸福感取决于什么?
    今日心得:人生就像一杯茶,不会苦一辈子但会苦一阵子
    今日心得:纪念徐志摩117周年
  • 原文地址:https://www.cnblogs.com/mengluo/p/15669780.html
Copyright © 2011-2022 走看看