我正在使用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文件并检查文件的开头