Как оптимальнее автоматизировать обработку документов?

durka82

В первую очередь по времени выполнения
Под WinXP.
Задача следующая:
Есть около 200-та вордовых файлов известной структуры с информацией об авторах докладов (в том числе и мыло автора).
Есть еще два вордовых файла - шаблоны для документов, которые надо разослать (русская и английская версии).
Нужно на основе этих шаблонов (выбирая русскую или английскую версию в зависимости от языка имени автора) и данных об авторе и названии статьи сформировать уникальные(для каждого автора) вордовые документы, сконвертить их в pdf и разослать по электронной почте (это не спам - это конференция )
Как мне видится решение этой проблемы:
1. Сделать из шаблонов параметризованные файлы ворда (вроде как в документ ворда можно вставить поля и работать с их значениями как с переменными?..)
2. Скриптом (wsh?) доставать информацию из каждого из файлов об авторах и применять к документу из 1. (так вообще можно делать?)
3. Печатать документ на pdf-принтер
4. Формировать письмо
Вопросы:
1. Мб уже есть готовое решение для подобных задач?
2. С вордом такие вещи вообще делать можно?
3. Раз документ в конце нужен в pdf, может сразу это все в pdf и делать? Или там так не получится?
4. В Бате реально формировать письма внешним скриптом? Или лучше это сделать в оутлук-экспрессе?
5. wsh-ом это все сделать получится, или есть более подходящие средства?
Спасибо

evgen5555

А как там с офлайн-браузером дело обстоит?

durka82

Где?

Olyalyau

Самый простой способ автоматизации работы с документами, известный мне:
1. хранить всю информацию в плоских текстовых файлах или в базе данных
2. доставать и форматировать эту информацию perl'ом, или textutils'ами (только из текстовых файлов)
3. форматировать в TeX
4. из TeX'а в PostScript (если надо печатать) или PDF (если требуется и электронный документ с навигацией по внутренним ссылкам)

Dasar

Лучше, конечно, плоские текстовые файлы заменить на xml
а вместо Tex-а юзать какой-нибудь XSL:FO

Olyalyau

Можно и так.
Хоть SGML и docbook

ava3443

> вместо Tex-а юзать какой-нибудь XSL:FO
ты его пробовал использовать? мне навскидку показалось, что его до пенсии не изучать придётся

ava3443

> из TeX'а в PostScript
да, кстати, тогда уж не Tex, а LaTeX...

Dasar

> ты его пробовал использовать? мне навскидку показалось, что его до пенсии не изучать придётся
Что там изучать? Действия все те же самые, что при любой верстке.

ava3443

Вот её-то и ломает изучать без особой на то надобности.

Dasar

Хочешь сказать, что Tex не задумывается о верстке?
ps
Верстка - это как куски текста размазаны по страницам.

rosali

TeX задумывается. А тот кто на нем пишет - нет. По-моему так.

ava3443

> Хочешь сказать, что Tex не задумывается о верстке?
Я написал лишь, что если уж париться с ним, то поменьше - используя LaTeX

durka82

Это все конечно круто, но все исходные документы уже есть в ворде и заниматься их переводом в текстовые файлы/БД/Тех - отдельная задача, которую тоже надо решать (как?чем?).
Более того, решение такое задачи почти не будет отличаться от решения исходной
Так что не очень понятно, зачем потом писать решение предложенной тобой задачи?..

durka82

Ясно.
Значит ворд сам по себе, а автоматизация отдельно
Будем копать в сторону VBA...

Dasar

Попробуй посмотреть в сторону WordML - там должно быть не очень страшно, да и язык тогда можно будет использовать свою либимый.

Olyalyau

все исходные документы уже есть в ворде
Сочувствую.

durka82

Спасибо, конечно, за сочувствие...
Просто я поздно подключился к процессу.
К слову, я его практически поборол (осталось немного документов, которые проще обработать руками).
И вообще, причем тут ворд-то?
Тут главная проблема была в том, что все эти документы не были выдержаны в едином формате данных
Или perl'ом или textutils'ами эта проблема легко решается?
Если да, то как?

durka82

А под него программить под vs.net-ом?

Dasar

Можно и vs.net, можно и другим языком. Главное, чтобы язык обеспечивал удобную работу с xml-ем.

Olyalyau

И вообще, причем тут ворд-то?
При том, что он не предназначен для хранения информации.
Для этого удобнее всего база данных или любой легко парсящийся формат (тут предлагали XML).
Для качественной печати word тоже не предназначен -- для неё нужна издательская система,
по этому я и предлагал TeX (тоже далеко не идеал). Если нужно сделать абы как,
можно, конечно, и из word'а печатать (будет чуть лучше печати плоского файла).

Тут главная проблема была в том, что все эти документы не были выдержаны в едином формате данных
Или perl'ом или textutils'ами эта проблема легко решается?
Если да, то как?
Легко, конечно, не решаются.
Но чаще всего проще написать достаточно умный скрипт, чем руками править.
"Лучше день потренироваться, потом за пять минут долететь."
Как именно, зависит от того, что общего в этих форматах.
Например, если известно, что каждый файл плоский и где-то содержит
фамилию, имя и отчество в виде Иванов Иван Иванович или Иванов И. И.,
то grep + cut + paste будет достаточно. Если могут встречаться
записи Иван Иванович Иванов, то лучше уже perl -- наверное придётся
заводить словарик допустимых имён (из Даля или ещё откуда стянуть
чтобы понять где имя, где отчество, а где -- фамилия. Если скрипт
понять не в состоянии, тут уже придётся вручную разбираться.

durka82

grep + cut + paste
лучше уже perl -- наверное придётся
заводить словарик допустимых имён (из Даля или ещё откуда стянуть)
А готовых примеров нету случайно?
Или описаний подводных камней и тп?..

Olyalyau

В кодировке, в которой русские буквы идут по алфавиту:

for i in *.txt; do cat $i | tr -s [:space:] " " | grep -o "[А-Я][а-я]+ +[А-Я][А-я]+ +[А-Я][а-я]+"; done

выдаёт все ФИО, записанные в файлах *.txt.
Если записи имеют вид Фамилия И.О., то:

for i in *.txt; do cat $i | tr -s [:space:] " " | grep -o "[А-Я][а-я]+ +[А-Я][.] *[А-Я][.]"; done

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

durka82

Спасибо
Оставить комментарий
Имя или ник:
Комментарий: