14

タグがユーザー入力に置き換えられた後、Web ページ内に表示したい RTF ファイルがあります。

表示する前に何かに変換することなく、RTF ファイルを表示できるようにしたいと考えています。

今試してみると、インラインで表示するように指示しているにもかかわらず、ポップアップのオープン/保存ボックスが表示されます。

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

echo $output;
4

7 に答える 7

8

ほとんどのブラウザーは、RTF コンテンツを確実に表示しません。ただし、RTF を HTML に解析し、HTML コンテンツを Web ページに表示することは可能です。

RTF を解析して HTML に変換するには、何らかのプログラムが必要です。私はそれが無料でなければならないと仮定しています。私は、信頼できる無料の RTF 解析や PHP の HTML ライブラリへの RTF を知りません。

RTF2HTML のようなコマンドライン変換プログラムを使用することをお勧めします: http://sageshome.net/?w=downloads/soft/RTF2HTML.html

このプログラムをダウンロードして Web サーバーにインストールし、ユーザーがファイルを一時ディレクトリにアップロードできるようにしてから、shell_exec() を使用して PHP からコマンド ライン アプリケーションを呼び出す必要があります。

$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 として解析し、表示します。悪い戦略ではありません。別の Web ページ内にコンテンツを表示する場合は、head、body、および場合によってはその他のタグを削除する必要があることに注意してください。

于 2009-03-24T16:57:27.050 に答える
4

クライアント側の RTF レンダリングについては、https://github.com/tbluemel/rtf.jsを確認してください。まだ初期段階ですが、埋め込みグラフィックスもレンダリングします。ただし、埋め込まれた WMF アートワークのレンダリングのサポートはまだ非常に限定されており、タグのブラウザー サポートが必要です。

于 2015-09-18T13:41:44.547 に答える
0

これはあなたの質問に対する正確な回答ではありませんが、ヘッダーから「filename=mark.rtf」を削除することをお勧めします。「Content-Disposition」が「inline」であっても、ヘッダーに「filename」を含めると、ブラウザーが何かをダウンロードとして扱うようになりました。

于 2011-09-13T12:52:16.347 に答える
-3

PHP コード内からファイルを出力することはできません。そこからデータを抽出し、コンテンツをインラインで印刷する必要があります。

PHP 関数 'file_get_contents' は、必要なことを実行できます。関数のマニュアルはこちら: http://us2.php.net/filegetcontents

使用例は次のとおりです。

$contents = file_get_contents('yourfile.rtf');
于 2009-03-24T16:34:49.710 に答える