Объедините несколько файлов doc или rtf в один файл doc или rtf, используя скрипт php - PullRequest
2 голосов
/ 27 октября 2010

Я хотел бы объединить несколько файлов doc или rtf в один файл, который должен иметь одинаковый формат нескольких файлов.Я имею в виду, что если пользователь выбирает несколько файлов шаблонов rtf из списка и нажимает кнопку на веб-странице, вывод должен быть одним файлом rtf, который объединяет несколько файлов шаблонов rtf, я должен использовать для этого php.

Я не определился с форматом файлов шаблонов, но это должен быть либо rtf, либо doc, а также я предполагаю, что в файле шаблона также есть некоторые изображения.

Я потратил много часов на исследованиябиблиотека для этого, но все еще не может найти это.

Пожалуйста, помогите мне здесь !!: (

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 02 октября 2016

Если вы ищете решение для обработки только документов 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 голосов
/ 27 октября 2010

Я работал над похожим проектом, и мне не удалось найти какие-либо библиотеки PHP (или любой другой язык с открытым исходным кодом) для работы с файлами MSWord. То, как я подхожу к этому, довольно сложно, но работает. Вот как я это сделаю (если у вас есть сервер Linux):

Установка:

  1. Установка JODConverter и OpenOffice
  2. Запуск открытого офиса в качестве сервера (см. http://www.artofsolving.com/node/10)

Подход (т.е. что делать в вашем PHP-коде):

  1. Преобразуйте файлы MSWord или RTF в формат ODT, вызвав JODConverter с помощью обратных галочек или exec()
  2. Разархивируйте каждый файл во временную собственную директорию
  3. Считайте файл contents.xml из каждого распакованного документа, используя DOM Parser
  4. Извлеките содержимое <office:text> из каждого и объедините
  5. Поместите этот составной XML-файл обратно в нужное место в одном из content.xml файлов
  6. Повторно заархивировать содержимое этого временного каталога и присвоить ему .odt расширение
  7. Используйте JODConverter, чтобы снова преобразовать этот файл в MSWord

Как я уже сказал, это не красиво, но делает работу.

Если вы хотите пойти по маршруту RTF, этот вопрос также может помочь: Объединение файлов RTF в PHP (REGEX)

...