【问题标题】:PHP code not creating new line in rtf templatePHP代码没有在rtf模板中创建新行
【发布时间】:2012-02-13 19:58:02
【问题描述】:

我将一个 php 脚本简化为解决一个令人费解的问题所需的确切代码(至少对我来说是这样!)。下面的脚本应该做的是用硬编码变量替换 rtf 模板中的“++name”,该变量将在一行打印“me”,在下一行打印“you”。除了尝试“\r\n”创建新行之外,我还尝试过“\par”,但无济于事。下面的代码在一行中将 '++name' 替换为 "meyou"。我在 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;
?>

【问题讨论】:

  • 因为您的 mime 类型是 application/msword,我认为普通的操作系统换行符不会为您做任何事情。您是否尝试过使用克拉-P ^p?我知道 MS Word 曾经将它用于回车(可能仍然如此),这可能就是您正在寻找的。我会将其发布为答案,但我不能保证它会起作用。只是尝试一下。

标签: php


【解决方案1】:

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

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

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

前段时间我写了一个library for outputting RTF。您可能会发现我的“格式”功能很有用。基本上你为文本提供了一堆属性,然后它以 RTF 格式输出。这是 AS3,但很容易翻译成 PHP。

【讨论】:

  • 感谢所有回复的人,我都试过了,但代码让我得到了 2 行: $name = "me" 。 “{\pard\par}”。 “你”;
  • \pard 和 \par 命令对我有用。谢谢,我尝试了 \line、\n、\r 和一堆其他东西,但没有其他任何效果。再次感谢。
【解决方案2】:

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

当我刚才在我的服务器上尝试这个时,它在 Word 中呈现,换行符很好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-12
    • 1970-01-01
    相关资源
    最近更新 更多