Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Записать данных формы в RTF файл посредством php


Автор: vintyara 24.3.2005, 19:28
Hi All !! Возникла такая проблема. Есть форма для заполнения в html`ном виде. Например -

Код

....
<form action="send.php" method="POST">
<table width="100%" border="0">
<tr><td width="20%" valign="middle"><h5>Surname :              </h5></td> <td width="80%"><INPUT type="text" name="surname"      size="32"></td></tr>
<tr><td width="20%" valign="middle"><h5>Given Names :          </h5></td> <td width="80%"><INPUT type="text" name="givennames"   size="32"></td></tr>
<tr><td width="20%" valign="middle"><h5>Date of birth :        </h5></td> <td width="80%"><INPUT type="text" name="dateofbirth"  size="32"></td></tr>
</table>
....


Нужно реализовать следущее - чтобы человек заполнял эту форму, нажимал на submit, и
эта форма отправлялась по эл. почте на определённый адрес, причём чтобы эта форма была
сохранена в вордовском файлике формата RTF.
У меня проблема именно с сохранением данных в RTF. Помогите !! Как это реализовать ?

Автор: Mal Hack 24.3.2005, 19:41
В свое время парился с тем же, только наоборот, надо было из РТФ.
Где-то тут даже тема была.
Смысл - в ручную изучить формат RTF и самому генерировать документ.
Конверторов на ПХП не видел, на перле видел, но из РТФ.

Автор: Guest 24.3.2005, 20:15
Да на перле есть и В ртф smile
А неподскажешь ссылки, где подробно написано про РТФ ?
Ещё вопрос - МС Ворд 2000 может читать ХТМЛльные документы. Если сделать

Код

...
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: application/msword ; charset=iso-8859-1\r\n";
...
$message = "
<html>
<head>
<title>Aplications from $surname</title>
</head>
<body>
<table>
<tr><td>".$h4."Name:".$h4e."                  </td><td>".$surname."</td></td>
<tr><td>".$h4."Given Names :".$h4e."          </td><td>".$givennames."</td></tr>
<tr><td>".$h4."Date of birth :".$h4e."        </td><td>".$dateofbirth."</td></tr>
</table>
....

mail($to, $subject, $message, $headers);


То получиццо, что в письме будет отправляцца ХТМЛьный файл, с расширение .doc
При открытии файла это приведёт к запуску Ворда, который поидее всё правильно должен вывести на экран. Я пробовал - так и есть.
Вопрос вот в чём - это форма будет использоваться в серьёзной организации. Стоит ли так делать ? Или таки лучше написать нормальный пхп скрипт, который будет писать данные в РТФ ?

Автор: vintyara 24.3.2005, 20:24
предыдущие посты мои smile я зарегился smile

Автор: Mal Hack 24.3.2005, 20:45
Цитата(vintyara @ 24.3.2005, 20:24)
я зарегился smile

Это хорошо.

Цитата(Guest @ 24.3.2005, 20:15)
Ещё вопрос - МС Ворд 2000 может читать ХТМЛльные документы. Если сделать

Легко. Но лучше XML smile

Цитата(Guest @ 24.3.2005, 20:15)
А неподскажешь ссылки, где подробно написано про РТФ ?

Если найдешь мою тему, то увидишь. Я давно эти ссылки посеял smile

Цитата(Guest @ 24.3.2005, 20:15)
Вопрос вот в чём - это форма будет использоваться в серьёзной организации. Стоит ли так делать ? Или таки лучше написать нормальный пхп скрипт, который будет писать данные в РТФ ?

А вообще для чего тебе это? Что ты хочешь реализовать?

Автор: vintyara 24.3.2005, 20:56
Цитата
А вообще для чего тебе это? Что ты хочешь реализовать?


Предположим, что у фирмы есть свой стандартный бланк (форма), который нужно заполнять при устройстве к ним на работу.
Этот бланк(форма) у них в формате doc.
Теперь предположим, что фирма захотела сделать себе вэб сайт. И на этом сайте должна быть ихний бланк для заполнения, чтобы пользователи заполняли все поля на ихнем веб сайте, и заполненная форма приходила фирме на почту. Но так как фирма привыкла работать с вордовскими документами, она хочет чтобы эта заполненная форма приходила в вордовском формате smile
--
Вот %) Писать красиво не умею, т.ч. если непонятно написал - спрашивай smile

Автор: Irokez 24.3.2005, 21:04
если сервер виндовый, то можно через COM

Автор: Illuminaty 24.3.2005, 21:08
Есть предложение.
Берем ту стандартную форму в .doc, на тех местах, где должна быть информация пишем что-то вроде 1234567890 или другую фигню (лучше на английском smile )
сохраняем его в .rtf
открываем любым текстовым редактором (не процессором smile )
ищем нашу лабуду, удаляем ее и на ее место вставляем свои "якоря" типа @FIELD1@
сохраняем документ

в PHP открываем его, анализируем, заменяем "якоря" на нужную нам информацию, отсылаем

И не надо формат RTF изучать smile

Автор: Mal Hack 24.3.2005, 21:09
Ясно. Могу точно сказать, что я видел две таких вещи у Ру-Центра и Зенона. В Ру-Центре позвращался DOC файл, который сгенерировать легко с помощью PHP. В Зеноне открывался HTML документ, который пользователь распечатывал. Как вариант - генерация PDF файла.

Инфа:
http://msdn.microsoft.com/library/?url=/library/en-us/dnrtfspec/html/rtfspec.asp?frame=true
http://lab.artlung.com/php/rtf/
http://www.phpclasses.org/browse/package/1805.html
http://www.google.com/custom?domains=www.phpclasses.org&q=rtf&sa=Search&sitesearch=www.phpclasses.org&client=pub-2951707118576741&forid=1&channel=5742870948&ie=ISO-8859-1&oe=ISO-8859-1&cof=GALT%3A%23663399%3BGL%3A1%3BDIV%3A%23222222%3BVLC%3A663399%3BAH%3Acenter%3BBGC%3AA3C5CC%3BLBGC%3AA3C5CC%3BALC%3A0000FF%3BLC%3A0000FF%3BT%3A000000%3BGFNT%3A0000FF%3BGIMP%3A0000FF%3BLH%3A50%3BLW%3A256%3BL%3Ahttp%3A%2F%2Ffiles.phpclasses.org%2Fgraphics%2Fgooglesearch.jpg%3BS%3Ahttp%3A%2F%2Fwww.phpclasses.org%2Fsearch.html%3BFORID%3A1%3B&hl=en
http://segmenta.mirrors.phpclasses.org/browse/package/1805.html (ВОТ ЭТО ВРОДЕ ТО)

Автор: vintyara 24.3.2005, 21:10
Irokez какой будет сервер - ещё не известно. Сначала нужно сайт создать, потом хостинг искать ...
Или, в плане надёжности (чтобы был не htmlльный или xmlный файл, а истинный вордовский, и чтобы проблем никаких небыло) стоит делать через этот самый COM, и искать хостинг с сервером под виндой ?

Меня в принципе бы устроил полностью вышеописанный мною вариант - отправка файла в html/xmlльном виде, но с расширением .doc . Вопрос в том - что на фирме этот файл возможно редактировать будут потом - никаких проблем не возникнет ? Меня ногами пинать не будут ?
Добавлено @ 21:16
Mal Hack Спасибо за ссылки, сча буду смотреть.

Illuminaty Хорошая мылся smile Я думал об этом, но почему-то не пробовал воплотить в жизнь smile Сейчас попробую smile !!

Автор: vintyara 24.3.2005, 22:07
Illuminaty неполучается. При тестировании - сервер говорит
405 Not Allowed. smile
Mal Hack
Цитата
Легко. Но лучше XML smile

Кстати, почему лучше XML ? Я просто XML не знаю. Если причина веская, придётся учить smile

Автор: vintyara 24.3.2005, 22:17
И ещё вопрос. Незнаю, может для него новый топик надо было ?
Я вот выше писал пример -

Код

...
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: application/msword ; charset=iso-8859-1\r\n";
...
$message = "
<html>
<head>
<title>Aplications from $surname</title>
</head>
<body>
<table>
<tr><td>"Name:"                 </td><td>".$surname."</td></td>
<tr><td>"Given Names"       </td><td>".$givennames."</td></tr>
<tr><td>"Date of birth"        </td><td>".$dateofbirth."</td></tr>
</table>
....
mail($to, $subject, $message, $headers);


Если сделать
Код

$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";

как форматировать текст ? Т.е. сделать контур таблички, разные шрифты и т.п. ?
вот если из этого примера взять строку
Код

<table>
<tr><td>"Name:"                  </td><td>".$surname."</td></td>

В HTML делаецца просто, например -
Код

<table border="1">
<tr><td><h4>Name:</h4>                  </td><td>".$surname."</td></td>

Если это же написать и в ПХП коде - будет ошибка smile

Автор: vintyara 25.3.2005, 21:41
неужели никто не знает ?

Автор: Irokez 25.3.2005, 21:45
ошибки из-за кавычек, их надо проэскейпить, перед кавычками поставить \
или заменить на одинарные или заменить нотацию строки на HEREDOC (<<<HTML ... HTML)

Автор: vintyara 25.3.2005, 22:11
Irokez
Цитата
ошибки из-за кавычек, их надо проэскейпить, перед кавычками поставить \

а можно на примере небольшом ? И что значит - Проэскейпить ?
Заранее спасибо smile
smile smile

Автор: Mal Hack 25.3.2005, 22:20
http://php.net/addslashes

Автор: Irokez 25.3.2005, 22:25
вообще, я бы посоветовал бы через heredoc:
Код

$message =
<<<HTML
<html>
<head>
<title>Aplications from $surname</title>
</head>
<body>
<table>
<tr><td>"Name:"                 </td><td> $surname </td></td>
<tr><td>"Given Names"       </td><td> $givennames </td></tr>
<tr><td>"Date of birth"        </td><td> $dateofbirth </td></tr>
</table>
HTML;

Автор: vintyara 25.3.2005, 22:38
Irokez Мега спасибо smile Я 2 дня голову ломал как это делать smile ..

Автор: Irokez 25.3.2005, 22:42
мега пожалуйста smile

Автор: vintyara 26.3.2005, 21:32
Люди !!! Почему, действую по принципц Illuminaty, сервер говорит
ошибку - 405 Not Allowed ?? В чём причина ?

Автор: vintyara 1.4.2005, 22:56
Всем Огромнейшее спасибо smile сделал smile
Отдельное спасибо Irokezу smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)