2010-10-27 72 views
2

我想将多个文档或rtf文件合并到一个文件中,该文件应该是多个文件的相同格式。 我的意思是,如果用户从列表框中选择多个rtf模板文件,并单击网页上的按钮,输出应该是一个单一的rtf文件,它结合了多个rtf模板文件,我应该使用php。通过使用php脚本将多个文档或rtf文件合并到一个文档或rtf文件

我还没有确定模板文件的格式,但它应该是rtf或doc,并且我还假定模板文件也有一些图像。

我花了很多时间来研究这个库,但仍然无法找到它。

请帮我看看这里! :(

在此先感谢。

回答

0

我一直工作在一个类似的项目和havne't设法找到任何PHP(或任何其他开源语言)库操纵的MSWord文件。我接近的方式。这是一种复杂的,但在这里工作是我会怎么做(假设你有一个Linux服务器):

设置:

  1. 安装JODConverterOpenOffice
  2. 圣(参见http://www.artofsolving.com/node/10

方法(即,通过通过反引号或exec()

  • 解压调用JODConverter每个文件到其自己的
  • 一个临时目录阅读contents.xml

    1. 将您的MSWord或RTF文件转换成ODT格式:如何在PHP代码做)从使用DOM Parser
    2. 提取从每个<office:text>内容的每个解压缩文档文件,并连接
    3. 将这个级联的XML回到正确的位置在之一3210个文件
    4. 重新压缩该临时目录中的内容,并给它一个.odt扩展
    5. 使用JODConverter这个文件再次

    转换回的MSWord正如我所说,这是不漂亮,但它确实工作。

    如果你正在寻找下井RTF路线,这个问题也可以帮助:Concatenate RTF files in PHP (REGEX)

  • 2

    如果您正在寻找只处理RTF文档的解决方案,你可以找到一个PHP包合并多个RTF文件位置:

    www.rtftools.com

    这里是如何将多个文件合并到一起很短的例子:

    include ('path/to/RtfMerger.phpclass') ; 
    
    $merger = new RtfMerger ('sample1.rtf', 'sample2.rtf') ; // You can specify docs to be merged to the class constructor... 
    $merger -> Add ('sample3.rtf') ;       // or by using the Add() method 
    $merger [] = 'sample4.rtf' ;        // or by using the array access methods 
    $merger -> SaveTo ('output.rtf') ;      // Will save files 'sample1' to 'sample4' into 'output.rtf' 
    

    该软件包允许您处理大于可用内存的文档。

    +0

    应该指出的是,该解决方案仅适用于PHP 5.4.0及更高版本 – 2017-11-02 15:09:36