Предварительно в шаблоне rtf файла нужно расставить плейсхолдеры. В примере использую один - fio.
Далее для подставновки в rtf файл своих значений использую следующий код:
$rtf = file_get_contents(DOCUMENT_ROOT . '/template.rtf');
$placeholder1 = 'Иванов';
$fio = utf8_to_rtf($placeholder1);
$rtf = str_replace('fio', $fio, $rtf);
/**
* Кодирование utf8 в 16 битовую кодировку
*/
function utf8_to_rtf($utf8_text) {
$utf8_patterns = array(
"[\xC2-\xDF][\x80-\xBF]",
"[\xE0-\xEF][\x80-\xBF]{2}",
"[\xF0-\xF4][\x80-\xBF]{3}",
);
$new_str = $utf8_text;
foreach($utf8_patterns as $pattern) {
$new_str = preg_replace("/($pattern)/e", "'\u'.hexdec(bin2hex(mb_convert_encoding('$1', 'UTF-16', 'UTF-8'))).'?'", $new_str);
}
return $new_str;
}