Слияние документов Word в Ruby

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

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

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


person Vijay Dev    schedule 16.07.2010    source источник
comment
@Vijay Dev: Чтобы ответить на ваше редактирование, ответ: возможно. Вам все равно нужно выполнить преобразование в ODT из DOC, что является одним дополнительным шагом. Если вам нужно затем преобразовать их обратно в DOC, это еще один шаг. Если вы знакомы с OOo и программированием против него, это может быть проще, но в любом случае потребуется немного смазки.   -  person Todd Main    schedule 06.08.2010
comment
Я использую JODConverter в другом приложении. Думаю, я могу использовать его для преобразования odt в doc.   -  person Vijay Dev    schedule 06.08.2010
comment
@Vijay Dev: ответ на ваш вопрос ниже?   -  person Todd Main    schedule 23.08.2010
comment
Привет, Отаку, у меня не было времени проверить это. Сообщу вам в ближайшее время. Спасибо!   -  person Vijay Dev    schedule 24.08.2010
comment
@Otaku: Извините, но как мне использовать то, что упомянуто в этой ссылке?   -  person Vijay Dev    schedule 25.08.2010
comment
@Vijay Dev: Тебе нужно выяснить это. Если вы знаете Слово ОМ, это будет несколько проще.   -  person Todd Main    schedule 30.08.2010
comment
@Vijay Dev: просто хотел следить, чтобы узнать, отвечает ли ниже на ваш вопрос.   -  person Todd Main    schedule 18.02.2011
comment
@Otaku: Привет! Требовалось избавиться от этой проблемы из-за изменений в спецификациях. После этого не пробовал. Спасибо за помощь!   -  person Vijay Dev    schedule 19.02.2011


Ответы (3)


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

Информацию о слиянии документов ODT см. В этой ветке: http://cpanforum.com/threads/9938

person Todd Main    schedule 01.08.2010
comment
Люди сообщили об успешном использовании docx4j через JRuby; у нас есть коммерческий компонент под названием MergeDocx, который также можно использовать. - person JasonPlutext; 30.10.2013

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

person stimms    schedule 16.07.2010
comment
Как автоматизировать? Вы можете объяснить? Кроме того, мой сервер Linux, если это важно. - person Vijay Dev; 17.07.2010
comment
Блоги очень полезны для обучения автоматизации. но поскольку они автоматизируют слово, они будут работать только с окнами или, возможно, с вином. Возможно, вам лучше взглянуть на автоматизацию открытого офиса. - person stimms; 17.07.2010

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

При этом, на мой взгляд, первый вариант, если вы собираетесь это сделать, - это преобразовать их в более легко анализируемый формат - RTF - отличный пример, и если вы можете получить их в этом формате, RTF Pocket Guide от O Reilly - отличный ресурс для понимания структуры файлов. Преобразовать файлы довольно просто, если вы можете установить abiword на машине Linux. Из командной строки вы просто запустите:

abiword --to=rtf some_file_name.doc

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

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

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

abiword --to=txt some_file_name.doc

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

person jasonpgignac    schedule 05.08.2010