У меня есть файл RTF, который я хочу отображать на веб-странице после замены тегов на вход пользователя.
Я хотел бы иметь возможность отображать RTF-файл, не преобразовывая его во что-то перед его отображением.
Каждый раз, когда я пытаюсь это сделать, он дает мне всплывающее окно open / save, хотя я говорю ему, чтобы он отображал его в строке:
header("Content-type: application/msword"); header("Content-Disposition: inline; filename=mark.rtf"); header("Content-length: " . strlen($output)); echo $output;
Большинство браузеров не будут надежно отображать RTF-контент. Возможно разбор RTF в HTML и отображение содержимого HTML на вашей веб-странице.
Вам нужна какая-то программа для анализа RTF и преобразования ее в HTML. Я предполагаю, что это должно быть бесплатным. Я не знаю ни одного надежного бесплатного анализа RTF или RTF для HTML-библиотек в PHP.
Я рекомендую использовать программу преобразования командной строки, такую как RTF2HTML: http://sageshome.net/?w=downloads/soft/RTF2HTML.html
Вам нужно будет загрузить и установить эту программу на свой веб-сервер, разрешить пользователю загружать файл в каталог temp, а затем вызывать приложение командной строки из PHP с помощью shell_exec ():
$html_output_path = '/path/for/processing/files/' $html_output_filename = $username . $timestamp; if (is_uploaded_file($_FILES['userfile']['tmp_name']) { shell_exec('rtf2html ' . escapeshellarg($_FILES['userfile']['tmp_name']) . " " . $html_output_path . $html_output_filename); } $html_to_display = file_get_contents($html_output_path . $html_output_filename);
Затем проанализируйте результаты как HTML и покажите их. Неплохая стратегия. Обратите внимание, что вам, вероятно, придется удалить голову, тело и, возможно, другие теги, если вы собираетесь отображать содержимое на другой веб-странице.
Вы можете проверить https://github.com/tbluemel/rtf.js для рендеринга RTF на стороне клиента. Он все еще находится на ранних стадиях, но он отображает даже встроенную графику. Тем не менее поддержка рендеринга встроенных изображений WMF все еще очень ограничена и требует поддержки браузера для тега.
Во-первых: у вас неправильный тип содержимого. для RTF это text/rtf
Во-вторых: вы сможете отображать в режиме реального времени этот тип контента, который может отображаться в веб-браузере. RTF не является одним из них. Таким образом, вы не сможете отображать его в режиме онлайн без его преобразования или без какого-либо подключаемого модуля для браузера. Конечно, преобразование может быть «на лету».
Вам нужен RTF-конвертер HTML, написанный на PHP. Я думаю, что эта страница содержит ваше решение:
http://www.websofia.com/2014/05/a-working-rtf-to-html-converter-in-php/
Веб-страницы могут содержать только HTML. Для отображения других типов файлов вам понадобится плагин браузера, например flash. См. Например, Scribd .
Это не совсем ответ на ваш вопрос, но одна вещь, которую вы можете захотеть, – удалить из заголовка «filename = mark.rtf». У меня были браузеры, которые рассматривали что-то как загрузку, если я включаю «имя файла» в заголовок, даже если «Content-Disposition» является «inline».
Вы не можете просто выводить файл из PHP-кода. Вам нужно извлечь данные из него, а затем распечатать содержимое inline.
Функция php «file_get_contents» может делать то, что вам нужно. Руководство по функциям находится здесь: http://us2.php.net/filegetcontents
Пример использования здесь:
$contents = file_get_contents('yourfile.rtf');