Слияние документов Word в Ruby - PullRequest
7 голосов
/ 17 июля 2010

У меня есть N документов Word (Office 2003), из которых я хочу сделать один документ Word, объединяя все N документов вместе в некотором порядке.Как мне сделать это в Ruby?Спасибо!

Это просто документы, созданные в MS Office.Я не использую Windows и предпочитаю решения, отличные от Windows.

РЕДАКТИРОВАТЬ: Будет ли это легко, если документы представляют собой файлы odt, а не файлы документов?

Ответы [ 3 ]

4 голосов
/ 01 августа 2010

Единственное известное мне решение, отличное от Windows, это Рубиновые привязки в POI.После этого код будет действительно похож на этот код .NET: Объединение документов Word в виде страниц одного документа с использованием VB.NET .Код ключа, который вам нужен, - это использование Selection.InsertFile для любого количества элементов в выбранном вами порядке.

Для слияний документов ODT см. Эту ветку: http://cpanforum.com/threads/9938

3 голосов
/ 17 июля 2010

Существует целая серия действительно хороших статей о слове и рубине на http://rubyonwindows.blogspot.com/search/label/word. Файлы Word действительно сложны, по крайней мере, до 2007 года, поэтому вам лучше автоматизировать слово, чтобы сделать это.

0 голосов
/ 05 августа 2010

Поймите, почти любой ответ на этот вопрос будет зависеть от ограничений используемых вами документов doc ...

При этом, на мой взгляд, первый вариант, если вы собираетесь это сделать, это преобразовать их в более легко анализируемый формат - отличный пример - RTF, и если вы сможете получить их в этот формат, то RTF Pocket Руководство от O Reilly - БОЛЬШОЙ ресурс для понимания структуры файлов. Преобразовать файлы довольно просто, если вы можете установить abiword на компьютер с Linux. Из командной строки вы просто запустите:

abiword --to=rtf some_file_name.doc

Конечно, в Ruby вы бы просто обернули эти команды.

Это объединение более сложное - оно будет зависеть от ваших файлов. Вам придется принять некоторые решения программиста о том, собираетесь ли вы объединять таблицы стилей в каждом отдельном документе, таблицы шрифтов и т. Д., И т. Д. И т. Д. Содержимое просто находится в середине этого файла RTF, но это все семантические и стилевые данные, о которых вам придется выбирать. Здесь нет «одного пути», просто потому, что это зависит от того, что вы хотите с другой стороны. Вот, где RTF Pocket Guide - отличная помощь - в основном вы захотите использовать его, чтобы понять структуру ваших rtf и решить, что вы делаете, а чего не хотите.

В противном случае, если вам просто нужно содержимое с семантикой NONE, вы всегда можете преобразовать их в текстовые файлы, а затем объединить их. Команда очень похожа:

abiword --to=txt some_file_name.doc

Это очень просто, он просто разделит текст, и вы можете согласовать его и покончить с этим. Но опять же, вы потеряете ВСЕ форматирование любого вида.

...