Задать вопрос

Как из поля html страницы передать с помощью php текст в rtf документ?

Нужно реализовать передачу текста из поля на (web) странице с помощью php в документ rtf.
Алгоритм следующий:
1. Пользователь на веб странице в поле "Фамилия", вводит свою фамилию.
2. Нажимают кнопку создать документ
3.1. Скачивается Документ.rtf внутри документа (например) Иванов
или
3.2. Открывается новая страница там кнопка Скачать, скачивается Документ.rtf внутри документа (например) Иванов
Да я гуглил, много очень примеров на тему PHP + Word на хабре и так далее. Но это для делитанта дебри.

А прошу о помощи составить три файла если кому не сложно, дальше я уже докумекаю как и что делать.
1. index.php
2. rtf.php
3. Документ.rtf
Заранее благодарю,
  • Вопрос задан
  • 1175 просмотров
Подписаться 1 Оценить 2 комментария
Решения вопроса 1
SamFlynn
@SamFlynn Автор вопроса
Всем спасибо, на ютубе нашел решение.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
dicem
@dicem
Дам тебе удочку пожалуй. Вот тебе кусок кода для генерации RTF файла (1-я ссылка в гугле)
header('Content-Type: application/msword');

    header('Content-Disposition: inline, filename=cert.rtf');

        $name1="Ivan";

    //открыть файл шаблона

    $filename = 'PHPCert.rtf';

    $output = file_get_contents($filename);

    //замена заполнителей в шаблоне

    $output = str_replace("<<name>>",$name1,$output);

    //отправить сгенерированный документ в браузер
    echo $output;

(link: forum.oszone.net/post-1514368.html)
Для работы этого скрипта вам понадобится файл шаблона RTF, который будет висеть на сервере.
Ну и конечно же, забирай значение из инпутов методом _POST
Ответ написан
Комментировать
twobomb
@twobomb
В общем вот я написал ооочень извращенный метод, далеко не очень правильный, некоторых символов нет в частности смайлов и т.п. потому-что Notepad их не корректно отображает. Файл ставь в кодировку ANSI.В переменной $s лежит сам текст, для переноса строк писать \n(можно свое сделать). На самом деле так не делается, ну вроде бы открывает, не ругает, кодировку не спрашивает Вот сам код
code.php
{\rtf1\ansi\ansicpg1251\deff0\nouicompat\deflang1049{\fonttbl{\f0\fnil\fcharset204 Calibri;}{\f1\fnil\fcharset0 Calibri;}{\f2\fnil\fcharset1 Segoe UI Symbol;}{\f3\fnil Calibri;}{\f4\fnil\fcharset1 Cambria Math;}}
{\*\generator Riched20 10.0.14393}{\*\mmathPr\mmathFont4\mwrapIndent1440 }\viewkind4\uc1 
\pard\sa200\sl276\slmult1\f0\fs22
<?PHP   
 $s = 'Hello, world!\ntest!\n\n\n         Вася Пупкин тут.'; 
for($i = 0; $i < strlen($s);$i++)
	if($s[$i] == '\\' && $i+1 < strlen($s) && $s[$i+1] == "n"){
		$i++;
		echo "\par";
	}else
        echo "\\'".getANSICodeHex($s[$i]); 
function getANSICodeHex($sym) {
	$arr = ["","","","","","","","","","","","","+","","","0",">","<","","","¶","§","-","¦","^","v",">","<","L","-","^","Ў","3","!","\"","#","$","%","&","'","(",")","*","+",",","-",".","/","0","1","2","3","4","5","6","7","8","9",":",";","<","=",">","?","@","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","[","\\","]","^","_","`","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","{","|","}","~","¦","Ђ","Ѓ","‚","ѓ","„","…","†","‡","€","‰","Љ","‹","Њ","Ќ","Ћ","Џ","ђ","‘","’","“","”","•","–","—","1","™","љ","›","њ","ќ","ћ","џ"," ","Ў","ў","Ј","¤","Ґ","¦","§","Ё","©","Є","«","¬","­","®","Ї","°","±","І","і","ґ","µ","¶","·","ё","№","є","»","ј","Ѕ","ѕ","ї","А","Б","В","Г","Д","Е","Ж","З","И","Й","К","Л","М","Н","О","П","Р","С","Т","У","Ф","Х","Ц","Ч","Ш","Щ","Ъ","Ы","Ь","Э","Ю","Я","а","б","в","г","д","е","ж","з","и","й","к","л","м","н","о","п","р","с","т","у","ф","х","ц","ч","ш","щ","ъ","ы","ь","э","ю","я"];  
 for($i = 0; $i < count($arr);$i++)
	if($arr[$i] == $sym)
		return dechex($i);
 return 0;
}
 ?>
\f1\lang9
}
 
 <?PHP
header("Content-Type: application/msword;");
header("Content-Disposition: attachment; filename=file.rtf");
header("Pragma: no-cache");
header("Expires: 0");
?>
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы