此Open Word文档在OpenOffice.org中显示不正确

时间:2009-03-27 04:10:34

标签: php ms-word openoffice.org

我在php中有这个简单的代码:

<?php

header("Content-type: application/vnd.ms-word");
header("Content-Disposition: attachment;Filename=kid_tag.doc");

echo '<table cellspacing="0" cellpadding="0" border="0" width="8.4cm">
    <tr>
    <td colspan="3" style="text-align: right; height: 0.6cm">Nursery</td>
    </tr>
    <tr>
        <td style="height: 1.8cm"><img src="http://images.funadvice.com/photo/image/old/6943/tiny/cat.jpg" /></td>
        <td style="text-align: center; font-weight: bold">Sofia Abello</td>
    <td>&nbsp;</td>
    </tr> 
    <tr>
    <td style="text-align: left; height: 0.6cm">9AM Oct-12-08</td>
    <td>&nbsp;</td>
    <td style="text-align: right">Dance Studio</td>
    </tr>  
</table>';

?>

使用MS Office Word显示正常,但是当使用打开的办公室写入器打开时,宽度会减小(宽度不合适!)。

2 个答案:

答案 0 :(得分:1)

我认为使用PHP生成DOC文件的最简单方法是使用Zend Framework组件 phpLiveDocx 。您可以加载Word或Open Office模板,合并文本数据并将最终文档保存为多种格式,例如DOC,DOCX,RTF和PDF。

在项目网站上了解更多信息:

http://www.phplivedocx.org/articles/brief-introduction-to-phplivedocx/

答案 1 :(得分:0)

您实际上是将HTML导入MS Word和OpenOffice.org。 HTML不是Word和OpenOffice.org的原生格式,这意味着必须首先转换输入。

毫无疑问,这些应用程序(其主要目的是以应用程序的本机格式编辑文档)在那里做得并不完美。事实上 - 这并不是一个大秘密 - 甚至不是网络浏览器,其主要目的 HTML的呈现在该领域并不完美。

解决方案是提供适用于这两种应用程序的HTML。您可以使用conditional comments来实现这一点,{{3}}是HTML的专有Microsoft扩展,因此只有Microsoft产品才能理解。

这就是你的例子中的样子:

<![if !mso]>
<table cellspacing="0" cellpadding="0" border="0" width="8.4cm">
  <tr>
    <td>OpenOffice.org Version</td>
  </tr>
</table>
<![endif]>
<!--[if mso]>
<table cellspacing="0" cellpadding="0" border="0" width="8.4cm">
  <tr>
    <td>Microsoft Word version</td>
  </tr>
</table>
<![endif]-->