PHP代码没有在rtf模板中创建新行

时间:2012-02-13 19:58:02

标签: php

我将PHP脚本缩减为解决一个令人困惑的问题所需的确切代码(至少对我来说!)。下面的所有脚本应该用rtf模板中的'++ name'替换硬编码变量,该变量将在一行上打印'me',在下一行打印'you'。除了尝试“\ r \ n”创建新行之外,我还试过“\ par”无济于事。下面的代码在一行中用“meyou”替换'++ name'。我在stackoverflow和其他论坛上找到了许多“解决方案”,但没有一个对我有用。

非常感谢任何帮助。

    <?php
    $name = "me" . "\r\n" . "you";
    header('Content-type: application/msword');
    header('Content-Disposition: inline, filename=filenot.rtf');
    $filename = 'rtfnotice.rtf';
    $fp = fopen ($filename, 'r');
    $output = fread( $fp, filesize($filename));
    fclose ($fp);
    $output = str_replace('++name', $name, $output);
    echo $output;
?>

2 个答案:

答案 0 :(得分:4)

使用RTF,每个格式化的部分都包含在胡须中。 “格式化”放在开头。所以要做一些大胆的事,{\b hey, this text is bold}

要在单独的行上输出“我”和“你”,您可以在它们之间放置{\pard\par},或者您可以将它们设为自己的段落。 {\pard me \par}{\pard you \par}

我想,你也可以简单地放\line。 RTF不好玩吗?

前段时间我写了library for outputting RTF。您可能会发现我的“格式”功能很有用。基本上,您为文本提供了一堆属性,并以RTF格式输出。这是AS3,但很有可能转换为PHP。

答案 1 :(得分:1)

这可能与您的内容类型有关。我将application/msword替换为application/rtf然后您的关联RTF应用程序将至少基于正确的MIME类型呈现它。

刚刚在我的服务器上尝试此操作时,它在Word中使用换行符进行渲染就好了。