Pergunta

Eu tenho um arquivo RTF que eu quero mostrar dentro de uma página web depois de tags foram substituídos com a entrada do usuário.

Eu gostaria de ser capaz de exibir o arquivo RTF sem ter que convertê-lo em algo antes de exibi-lo.

Toda vez que eu tente agora me dá a / open pop-up caixa de salvar mesmo que eu estou dizendo a ele para exibi-lo em linha com:

header("Content-type: application/msword");
header("Content-Disposition: inline; filename=mark.rtf");
header("Content-length: " . strlen($output));

echo $output;
Foi útil?

Solução

A maioria dos navegadores não exibem de forma confiável de conteúdo RTF. É possível analisar o RTF em HTML, e exibir o conteúdo HTML na sua página web no entanto.

Você precisa de algum tipo de programa para analisar RTF e convertê-lo em HTML. Eu estou supondo que ele tem que ser livre. Eu não sei de qualquer análise confiável livre RTF ou RTF para HTML bibliotecas em PHP.

Eu recomendo que você use um programa de conversão de linha de comando como RTF2HTML: http: // sageshome.net/?w=downloads/soft/RTF2HTML.html

Você precisa baixar e instalar este programa em seu servidor web, permitem que o usuário fazer o upload do arquivo para um diretório temporário, e depois chamar o aplicativo de linha de comando do PHP com 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);

Em seguida, analisar os resultados como HTML e exibi-los. Não é uma má estratégia. Note que você provavelmente terá que remover a cabeça, o corpo e, possivelmente, outras tags se você estiver indo para apresentar o conteúdo dentro de outra página da web.

Outras dicas

Você pode querer verificar para fora https://github.com/tbluemel/rtf.js para renderização RTF do lado do cliente. Ele ainda está em seus estágios iniciais, mas ele processa gráficos mesmo embarcados. Suporte para renderização artwork WMF incorporado ainda está muito, muito limitado, porém, e requer suporte do navegador para o tag.

Você precisava de um RTF para HTML conversor escrito em PHP. Eu acho que esta página contém sua solução:

http: // www .websofia.com / 2014/05 / a-trabalho-rtf-to-html-converter-in-php /

Primeiro: você tem o seu tipo de conteúdo errado. para RTF-lo de text/rtf

Segundo: você só vai ser capaz de exibir em linha este tipo de conteúdo, o que pode ser processado pelo navegador da web. RTF não é um desses. Então, você não será capaz de exibi-lo em linha sem convertê-lo, ou sem algum plug-in para o navegador. É claro que a conversão pode ser on-the-fly.

páginas da Web só pode conter HTML. Você precisaria de um navegador plugins como o Flash para exibir outros tipos de arquivo. Consulte Scribd por exemplo.

Este não é exatamente uma resposta à sua pergunta, mas uma coisa que você pode querer fazer é remover o "filename = mark.rtf" do cabeçalho. Eu tive navegadores tratar algo como um download se eu incluir "filename" no cabeçalho, mesmo que o "Content-Disposition" é "inline".

Você não pode arquivo um pouco de saída de dentro do código PHP. Você precisa extrair os dados a partir dele, em seguida, imprimir o conteúdo em linha.

A função php 'file_get_contents' pode fazer o que você precisa. O manual de funções está aqui: http://us2.php.net/filegetcontents

Um uso de amostra está aqui:

$contents = file_get_contents('yourfile.rtf');
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top