我使用OpenTBS合并2个文件docx。
include_once('tbszip.php');
$zip = new clsTbsZip();
// Open the first document
$zip->Open('file-1.docx');
$content1 = $zip->FileRead('word/document.xml');
$zip->Close();
// Extract the content of the first document
$p = strpos($content1, '<w:body');
if ($p===false) exit("Tag <w:body> not found in document 1.");
$p = strpos($content1, '>', $p);
$content1 = substr($content1, $p+1);
$p = strpos($content1, '</w:body>');
if ($p===false) exit("Tag </w:body> not found in document 1.");
$content1 = substr($content1, 0, $p);
// Insert into the second document
$zip->Open('file-2.docx');
$content2 = $zip->FileRead('word/document.xml');
$p = strpos($content2, '</w:body>');
if ($p===false) exit("Tag </w:body> not found in document 2.");
$content2 = substr_replace($content2, $content1, $p, 0);
$zip->FileReplace('word/document.xml', $content2, TBSZIP_STRING);
// Save the merge into a third file
$zip->Flush(TBSZIP_DOWNLOAD, 'merge1.docx');
文件-1docx中的内容包括图像+文本,文件-2:仅文本。 但是当gen文件merge1.docx时,不能生成来自file-1.docx的gen图像 请帮我一个解决方案,谢谢。 P / s:对不起我的英语。
// Open the first document
$zip->Open('file-2.docx');
$content1 = $zip->FileRead('word/document.xml');
$zip->Close();
..........
// Insert into the second document
$zip->Open('file-1.docx');
答案 0 :(得分:1)
由于内部元素(如图片,图表等)合并两个DOCX非常困难。
word/media/
目录中。/[Content_Types].xml
/word/_rels/document.xml.rels
中的唯一ID。word/document.xml
文件中的图片对应的XML元素中使用唯一ID。因此,为了合并两个DCX文件,您必须应用您的代码段,然后将图片从DOCX获取到另一个,然后执行上述操作。
您正在使用TbsZip,它由OpenTBS使用,但它不是同一个工具。 OpenTBS无法帮助您将两个DOCX合并在一起。