我将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;
?>
答案 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中使用换行符进行渲染就好了。