RTF文件以raw格式打开


PHPRtfLite - RTF file opens as raw

我正在使用PHPRtfLite库(http://sigma-scripts.de/phprtflite/docs/index.html)使用PHP和Yii生成RTF文件。

到目前为止,我已经创建了一个简单的"Hello world"函数。
Yii::import('ext.phprtf.PHPRtfLite'); 
Yii::registerAutoloader(array('PHPRtfLite','registerAutoloader'), true); 
$rtf = new PHPRtfLite();
$sect = $rtf->addSection();
$sect->writeText('Hello world!', new PHPRtfLite_Font(), new PHPRtfLite_ParFormat());
//save rtf document
$rtf->sendRtf('takis.rtf');

文件创建成功,但当我打开它(无论是写字板或ms word),我没有看到文件的实际内容,但RTF的原始代码:

{'rtf'ansi'deff0'fs20
{'fonttbl{'f0 Times New Roman;}}
{'colortbl;'red0'green0'blue0;}
{'info
}
'paperw11907 'paperh16840 'deftab1298 'margl1701 'margr1701 'margt567 'margb1134 'pgnstart1'ftnnar 'aftnnrlc 'ftnstart1 'aftnstart1 
'pard 'ql {'fs20 Hello world!}
}

你知道如何解决这个问题吗?非常感谢。

为了回答我自己的问题,万一将来有人有同样的问题…

似乎是senddrtf函数的问题。现在,我将创建的文件保存在本地:

$rtf->save('takis.rtf');

,然后为用户生成下载文件的链接。

我自己也经历过同样的事情。我不确定,如果你有同样的原因,但在我的情况下,有额外的换行在PHP文件的开始,在<?php标记之前。当我使用sendRtf从浏览器下载文件时,该换行符也在RTF文件中结束,使其无效,结果显示原始RTF代码。当使用save时,这些额外的字符不会到达file.

所以在类似的情况下检查一件事-在记事本中打开Rtf文件并检查文件的开头