Формирование .doc файла из PHP - как?

mail_makc

aka MaxGR
Формирование .doc файла из PHP - как?

Доброго времени суток, Дамы и Господа!

Не могу разобраться с такой проблемой:
1. Есть HTML-форма
2. Посетитель заполняет ее и жмет на ней кнопку ОТОСЛАТЬ
3. Запускается PHP-скрипт, который должен занести данные из этой формы (ФИО, реквизиты компании, ИНН, и т.п. и другие произвольные поля) в соответствующие места Word-документа...
4. Пользователю в ответ загружается этот самый doc-файл, который он может использовать по своему усмотрению...

Вопрос:
1. Как все это сделать - занести данные в Word-документ?
2. Можно ли организовать дело так: формируем отдельно данные, загружаем doc-файл с шаблоном и макросом, которые читает данные из файла и подставляет их куда следует?

Может для этого как-то можно воспользоваться файлами офисного шаблона .dot? Или использовать Java-скрипт или макросы Word?

С COM-объектами не работал, а разбираться нет времени. На поставленную задачу отведена пара дней...

Заранее благодарен за ответ и особенно за маленький примерчик. :)
 

Vladimirovich

Guest
Попробуй выдать обычный ХТМЛ, но в загаловке укажи content-type вордовый...
 

mail_makc

aka MaxGR
Не совсем подходит, так как желательно сохранить стиль и форматирование текста в первозданном виде (как оно выглядит в doc-файле). Это для системы электронного документооборота компании - все документы имеют определенную фирменную шапку и т.п..
 

trent

Developer
попробуй вставить в доке что-нибудь уникальное и str_replace'ом заменить в нужных местах, на данные из формы, не знаю как с .doc, но с .rtf такое прокатывало...
 

mail_makc

aka MaxGR
1.
вот вспомнил еще одну проблему - текст который будут вставлять может быть на любом языке - чаще всего русский, японский, английский
то есть придется еще как-то и это дело учитывать

2.
С RTF вариант уже рассматривался. Проблема в том, чтобы начальство понимало, что doc и rtf - это одно и тоже на выходе получаем. И проблема в том, что doc намного компактнее чем rtf. А при работе через Сеть - это уже может быть критично...

Кроме того, могут возникнуть в будущем (далеком) пожелания по вставке в документ изображений (печать компании, логотип, подписи лиц).
 

trent

Developer
как есть время приготовиться к этому будущему и изучить работу с COM
 

tony2001

TeaM PHPClub
>И проблема в том, что doc намного компактнее чем rtf. А при
>работе через Сеть - это уже может быть критично...
пакуй перед высылкой
 

mail_makc

aka MaxGR
не спорю, паковать можно, но...

на другом конце провода будет сидеть секретарь у которой на компе нет ничего кроме Word - так что объяснить ей как поставить архиватор или как распаковать САМОРАСПАКОВЫВАЮЩИЙСЯ архив достаточно тяжело... особенно если она в этот момент находится в другой стране в интернет-кафе, например...

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

tony2001

TeaM PHPClub
тогда не ясна привязка к доку - юзай ТХТ, если для тебя ТАК критичен объем.
тем более, что ничего навороченного ты из ПХП не сгенеришь в доку.
 

mail_makc

aka MaxGR
кстати еще тут гемморой вспомнил...
если поизучать внутренности RTF - то он кодирует документ оригинально - все руские буковки заменяет своим кодом:
\'01\'03\'05\'07\'09\'0b\'0d\'0f; (это образец)

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

mail_makc

aka MaxGR
Автор оригинала: tony2001
тогда не ясна привязка к доку - юзай ТХТ, если для тебя ТАК критичен объем.
тем более, что ничего навороченного ты из ПХП не сгенеришь в доку.
---
Так в том то все и дело, что мне секретарша даст кучу своих документов (и будет пополнять их периодически) - и вот из них придется сделать шаблончики, к которым надо будет привязать формы на сайте и по мере заполнения которых генерировались бы заполненные документы, которые она бы уже и использовала у себя на месте (там где она в данный момент находится)... да и не только секретарша, а и любой другой командировочный может оказаться на ее месте...
:)

то есть документы естьи должны остаться в том стиле в каком она их мне предоставит
 

tony2001

TeaM PHPClub
а самому сделать - слабо ?
делаешь пустой РТФ и добавляешь русский алфавит.
записываешь и получаешь =)
 

mail_makc

aka MaxGR
ну такой вариант я уже продумал, но просто зачем изобретать велосипед :))
ведь наверняка у кого-то уже есть и завалялось под боком... :))
в крайнем случае так и придутся поступить...
 

Rat

Guest
mail_makc: Зачем тебе таблица? Это шестнадцатеричный код символа!
 

mail_makc

aka MaxGR
разве? что-то не подумал сравнить... сейчас гляну... если так оно и есть, то это даже очень хорошо...

спасибо
 

Rat

Guest
mail_makc: Я в своё время делал генерилку РТФа из ТХТ для PageMaker'а на с и раскусывал формат вручную (инета тогда не было). Так вот, если оставить русские буквы, Ворд понимал, а ПижМакер ругался. Если кодить как спецсимволы через \', то работало.
 

mail_makc

aka MaxGR
а русские буковки по-моему и сейчас сохраняются в RTF старых версий Ворда (до 2000), это с 2000 они так извращаться начали - шестнадцатиричным кодирование занялись ;)))
 

Rat

Guest
Почитай спецификации. Много интересного. ;)

http://195.96.188.4/text/gc0165u.zip
http://195.96.188.4/text/rtf-rus.zip
http://195.96.188.4/text/rtfspec.zip
http://195.96.188.4/text/word6fmt.zip
 

mishar

Guest
Маловато двух дней на это дело. Ты не упомянул какой сервер у вас *nix или NT. Два варианта для тебя:
1. Из твоих постов видно что фирма не бедная, и если это очень важно в её работе, то подкинуть win-машину с вордом к серваку (если сервер nix-овый) и пусть генерит тебе файлы - дешево и сердито.
2. Пусть твоя секретарша открывает не html-страницу а вордовский файл в браузере (ИЕ это может) и оттуда VB макросом пости на сервер весь новый документ. Или же имей две версии этого документа один для просмотра в html а другой для редактирования в формате Word.

P.S. У меня так расшарены xls-файлы для сотрудников на Линуксе: чел зашел, открыл xls-файл, отредактировал и Alt+F8 запостил на сервер, при этом другие в это время могут просматривать html-весию этого файла.
 
Сверху