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

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

А прошу о помощи составить три файла если кому не сложно, дальше я уже докумекаю как и что делать.
1. index.php
2. rtf.php
3. Документ.rtf
Заранее благодарю,
  • Вопрос задан
  • 905 просмотров
Решения вопроса 1
Пригласить эксперта
Ответы на вопрос 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");
?>
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
PiRL Ventures Санкт-Петербург
от 80 000 до 100 000 ₽
БИЗНЕС Online Казань
от 100 000 до 180 000 ₽
Reliz Москва
от 100 000 до 200 000 ₽
10 апр. 2021, в 15:37
1000 руб./за проект
10 апр. 2021, в 15:33
500 руб./за проект
10 апр. 2021, в 15:30
1000 руб./в час