LINUX.ORG.RU
ФорумTalks

Как бы разложить *.DOC на куски, а потом собрать новый, сгенерировав текстовые вставки?


0

1

Поцаны!

Пишу из горящего танка. Сижу на семерке максимальная на работе, тут мне дали файл *.doc на 200 страниц, оформленный по ЕСКД. На его основе надо сделать другой документ с кусками из исходного, или хотя бы заготовку (чтоб потом быстро мышкой поправить).

Чтобы сделать рабботу, нужно нарезать из исходного 25 кусков, и нагенерировать новый документ, перемежая эти куски с другой информацией, которую представлена структурно в виде ассоциативного масива (с вложенностью). На выходе в конечном итоге надо получить опять же *.DOC документ.

Щас раздумываю, реально ли такое сделать.

Пока наметил такой путь - посохранять куски в виде отдельных HTML файлов. Ну и написать «главный» скрипт, который будет собирать документ из этих HTML-ников, перемежая их код с моим HTML кодом. Тут возникает проблема - в каждом сохраненном HTML-нике с куском текста из DOC будут толи одинаковые, толи разные стили, прописанные и в CSS и в HTML коде. Причем посмотрел - CSS в <HEAD> прописываются. То есть, слепить два HTML просто путем конкатенации не получится, нужно извращаться.

Чо как еще можно сделать? Заморочиться с ODT? То есть конвертнуть в ODT, нарезать ODT-шные куски и слеплять их? Какие еще варианты?

Из инструментов есть PHP, стандартные консольные утиля, идущие в комплекте с WinGit. Если еще чо надо доустановлю.

Срок генерации - два дня.

★★★★★

Я когда то операции с ODT делал через OpenOffice UNO и писал алгоритм генерации документов на .net :) Подключить можно разные ЯП. Я выбрал тогда c# и писал как мне было удобно.

Alve ★★★★★
()

*.doc на 200 страниц
оформленный по ЕСКД

/0

Это невозможно: либо .doc, либо ЕСКД.

Срок генерации - два дня.

Как-нибудь попытаться сконвертировать этот понос в латех, изменить, что надо, а потом откомпилить в pdf.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

Это невозможно: либо .doc, либо ЕСКД.

Это возможно. ГОСТ 2.105-95 ЕСКД и ГОСТ 2.106-96 ЕСКД позволяют много вольностей, если документ подготовлен с использованием электронно-вычислительной машины.

Как-нибудь попытаться сконвертировать этот понос в латех, изменить, что надо, а потом откомпилить в pdf.

Конечный формат - *.doc, я же написал.

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от Xintrea

Это возможно

Только если «верстать» пробелами с жесткой привязкой всего к странице и открывать «документ» одной и той же версией «ворда».

Конечный формат - *.doc

Тогда - соболезную. Разве что попытаться в «ворде» на VB написать скриптик…

Eddy_Em ☆☆☆☆☆
()

Прямо в ворде - фиг сделаешь. Ворд это не позволяет by design. Так что остаётся перегнать в другой формат.

Quasar ★★★★★
()

а зачаем разделять

юзай «слияние» - позволяет сгенерить множество документов подставля поля из ДБ или екселя

wingrime
()
Ответ на: комментарий от Xintrea

Xintrea> Конечный формат - *.doc, я же написал.

Полуручным методом быстрее будет сделать, если работа разовая.

Quasar ★★★★★
()

Чтобы сделать рабботу

нужно сначала выучить русский язык

daemonpnz ★★★★★
()

Положи данные из ассоциативного массива в базу данных, и прямо из интерфейса ворда импортируй данные из БД. Для чего нужны костыли типа разрезания - мне определенно не ясны

Orlangoor ★★★★★
()

Сохранить в docx, обработать xml-файлы внутри docx-файла, сохранить измененный docx обратно в doc.

inoremap ★★
()

Актуальный вопрос. Однажды я пытался устроиться на работу в универе и мне дали задание написать простенькую программу, но с красиво отформатированным экспортом в вордовский файл, а я кроме C++/Qt ничего не знаю. С тех пор я боюсь устраиваться на работу, ибо опасаюсь опять нарваться на подобное задание.

Nebuchadnezzar ★★★★
()

1. Скриптить в OOo/LOo и/или работать с ним из внешней проги через API.

2. Сгенерировать ODT (например, с помощью odfpy) и сконвертить в мсню.

3. Поюзать мсофис, дельфи и компоненты для работы с мсофисом (ни за что не платить, ясен пень).

vsemnazlo
()
Ответ на: комментарий от Quasar

Что раскидано? Что парсить? Я вообще не понял задачу, по каким формальным критериям текст надо разбивать?

Xellos ★★★★★
()

Проще конечно все это сделать руками. Если хочется сложностей, то VBA - на нем можно что угодно сделать, и даже больше чем пользователь может через ГИП. Скорость конечно может не порадовать, но если делать надо один раз, то не критично.

Alex_A_V ★★
()

Попробуй Word XML формат.

Я как-то на екселе генерил так отчеты: сохранил табличку с одним листом, бредом в 1 ячейках первых двух строк и нужными мне параметрами печати :).

Добавь посреди текста какой маркер и найди его в хмл.

vahtu
()

можно попытаться конвертнуть в docx. его анализировать проще, это зазипованная папка с xml-файлами. по крайней мере заменитель текста для docx написать довольно просто.

ien
()

Купи word2latex, поработай напильником с результатом, потом купи latex2word и опять с напильником. Будет быстрее.

Может также внезапно выясниться, что редактировать результирующий документ никому и не надо, так что latex2word может и не понадобиться.

Evgueni ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.