合并多文档&;php中的docx文件
我有多个文件(doc和docx),可能还有一个,这是由用户定义的。 我会得到它所有和打印在一个文件,所以我需要合并到一个文件合并多文档&;php中的docx文件,php,tinybutstrong,Php,Tinybutstrong,我有多个文件(doc和docx),可能还有一个,这是由用户定义的。 我会得到它所有和打印在一个文件,所以我需要合并到一个文件 $filePath = '../part_folder/' ; $filesName = [ '1_en.docx' , '2_en.docx' , '3_en.docx' , '3_en.docx' , '5_en.docx' ,
$filePath = '../part_folder/' ;
$filesName = [
'1_en.docx' ,
'2_en.docx' ,
'3_en.docx' ,
'3_en.docx' ,
'5_en.docx' ,
];
//******** in result i want to make one file from it
$finalFile = mergeDocumentParts($filePath , $filesName);
$zip=new clsTbsZip();
$content=[];
$r='';
对于($i=1;$iOpen($filePath.$filesName[$i]);
$content[$i]=$zip->FileRead('word/document.xml');
$zip->Close();
//提取文档的内容
$p=strpos($content[$i],“”,$p);
$content[$i]=substr($content[$i],$p+1);
$p=strpos($content[$i],“”);
如果($p==false)
echo(“在文档中找不到标记。”。$filesName[$i]);
$content[$i]=substr($content[$i],0,$p);
$r.=$content[$i];
}
//在第一份文件后插入
$zip->Open($filePath.$filesName[0]);
$content2=$zip->FileRead('word/document.xml');
$p=strpos($content2',);
如果($p==false)
echo(“在文档中找不到标记。”。$filesName[0]);
$content2=substr\u replace($content2,$r,$p,0);
$zip->FileReplace('word/document.xml',$content2,TBSZIP_字符串);
$zip->Flush(TBSZIP_文件'merge.docx');
请添加您到目前为止所做的代码,我建议获取所有文件数据,创建数组,合并所有数组,并编写一个新的文档文件。
$zip = new clsTbsZip();
$content = [] ;
$r = '';
for ($i = 1 ; $i < count($filesName) ; $i++){
// Open the all document - 1
$zip -> Open($filePath . $filesName[$i]);
$content[$i] = $zip->FileRead('word/document.xml');
$zip->Close();
// Extract the content of document
$p = strpos($content[$i], '<w:body');
if ($p===false)
echo ("Tag <w:body> not found in document .".$filesName[$i] );
$p = strpos($content[$i], '>', $p);
$content[$i] = substr($content[$i], $p+1);
$p = strpos($content[$i], '</w:body>');
if ($p===false)
echo ("Tag <w:body> not found in document .".$filesName[$i] );
$content[$i] = substr($content[$i], 0, $p);
$r .= $content[$i] ;
}
// Insert after first document
$zip->Open($filePath . $filesName[0]);
$content2 = $zip->FileRead('word/document.xml');
$p = strpos($content2, '</w:body>');
if ($p===false)
echo ("Tag <w:body> not found in document .".$filesName[0] );
$content2 = substr_replace($content2, $r, $p, 0);
$zip->FileReplace('word/document.xml', $content2, TBSZIP_STRING);
$zip->Flush(TBSZIP_FILE, 'merge.docx');