使用不同格式的PHP合并Docx

时间:2016-07-31 00:14:24

标签: php xml merge ms-word docx

使用DocxMerge我可以将多个Docx文档合并到一个Word文档中。我通过使用以下代码替换结束w:body标记来修改此文件以在文档之间添加分页符:

<w:p><w:r><w:br w:type="page" /></w:r></w:p>

但是,文档格式不正确。例如,一个文档是居中对齐的,另一个是左侧的 - 它们会继续对齐先放置的文档。

边缘也存在问题..

问题似乎在于styles.xml,但是我缺乏Word XML的知识来合并两个styles.xml。可以使用styles.xml&#39;硬编码&#39;来保存单词文档。在主要文件中可以解决问题。

1 个答案:

答案 0 :(得分:1)

不太理想

回答你的问题:是的,可以硬编码&#39;格式化样式,但这是很多工作,容易失败。

如果使用了Word模板,document.xml内的(字符)样式就像这样:

<w:r>
    <w:rPr>
        <w:rStyle w:val="myStyle"/>
    </w:rPr>
    <w:t>My content</w:t>
</w:r>

styles.xml内的格式如下:

<w:style w:type="character" w:styleId="myStyle">
    <w:name w:val="myStyle"/>
    <w:rsid w:val="003504C8"/>
    <w:rPr>
        <w:color w:val="0000FF"/>
        <w:u w:val="single"/>
    </w:rPr>
</w:style>

要将其添加为手动格式,请移除w:rStyle元素并将其替换为w:rPr元素内容:

<w:r>
    <w:rPr>
        <w:color w:val="0000FF"/>
        <w:u w:val="single"/>
    </w:rPr>
    <w:t>My content</w:t>
</w:r>

仅适用于简单样式。例如,带编号的样式更复杂。

页边距:页边距设置在document.xml - &gt;内的styles.xml文件(不是w:sectPr)中w:pgMar元素。使用的单位是twips

更好

如果您的源文档是使用相同的Word模板编写的,那就更好了,因此样式或页边距会有(或应该)没有冲突。