PHPRtfLite - RTF文件以原始方式打开

时间:2014-08-07 08:21:38

标签: php yii rtf

我正在使用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');

文件创建成功,但是当我打开它(wordpad或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!}
}

你对如何解决这个问题有任何想法吗? 非常感谢你提前。

2 个答案:

答案 0 :(得分:2)

回答我自己的问题,万一有人在未来会遇到同样的问题......

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

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

然后生成用户下载文件的链接。这非常好。

答案 1 :(得分:2)

我自己经历过同样的事情。我不确定,如果你有相同的理由,但在我的情况下,在<?php标签之前PHP文件的开头有额外的换行符。当我使用sendRtf从浏览器下载文件时,该换行也在RTF文件中结束,使其无效,结果显示了原始rtf代码。使用保存时,此类额外字符将无法访问文件。

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