【问题标题】:merge 2 file docx use tbszip合并 2 个文件 docx 使用 tbszip
【发布时间】:2013-11-30 11:57:24
【问题描述】:

我使用 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');

file-1.docx 中的内容包括图像+文本,file-2:仅文本。 但是当生成文件merge1.docx时,不能从file-1.docx生成图像 请给我一个解决方案,谢谢。 P/s:对不起我的英语。


当我颠倒打开文件的顺序时,文件merge1.docx 的全部内容。为什么?

// 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');

【问题讨论】:

    标签: php xml ms-word opentbs


    【解决方案1】:

    由于图片、图表等内部元素,合并两个DOCX是相当困难的......

    • 存档中图片必须保存在word/media/目录下。
    • 它们必须在文件/[Content_Types].xml 中声明
    • 还必须将它们分配给文件 /word/_rels/document.xml.rels 中的唯一 ID。
    • 然后必须在word/document.xml文件中图片对应的XML元素中使用唯一Id。

    所以为了合并两个DOCX文件,你必须应用你的sn-p,然后从DOCX获取图片到另一个,然后执行上面的操作。

    您正在使用 OpenTBS 使用的 TbsZip,但它不是同一个工具。 OpenTBS 不会帮助您将两个 DOCX 合并在一起。

    【讨论】:

    • 你添加了exit()命令吗?
    猜你喜欢
    • 1970-01-01
    • 2014-11-06
    • 1970-01-01
    • 1970-01-01
    • 2012-09-25
    • 1970-01-01
    • 2012-09-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多