我正在使用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!}
}
你对如何解决这个问题有任何想法吗? 非常感谢你提前。
答案 0 :(得分:2)
回答我自己的问题,万一有人在未来会遇到同样的问题......
这似乎是sendRTF函数的问题。现在,我在本地保存创建的文件:
$rtf->save('takis.rtf');
然后生成用户下载文件的链接。这非常好。
答案 1 :(得分:2)
我自己经历过同样的事情。我不确定,如果你有相同的理由,但在我的情况下,在<?php
标签之前PHP文件的开头有额外的换行符。当我使用sendRtf从浏览器下载文件时,该换行也在RTF文件中结束,使其无效,结果显示了原始rtf代码。使用保存时,此类额外字符将无法访问文件。
在类似的情况下检查一件事 - 在记事本中打开Rtf文件并检查文件的开头。