Этот документ HTML Word неправильно отображается в OpenOffice.org - PullRequest
1 голос
/ 27 марта 2009

У меня есть этот простой код в 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, однако ширина уменьшается (не правильная ширина!) При открытии с помощью Office Office Writer.

Ответы [ 2 ]

1 голос
/ 14 мая 2009

Я думаю, что самый простой способ создания файлов DOC с помощью PHP - это использование компонента Zend Framework phpLiveDocx . Вы можете загружать шаблоны Word или Open Office, объединять текстовые данные и сохранять окончательный документ в нескольких форматах, таких как DOC, DOCX, RTF и PDF.

Подробнее на сайте проекта:

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

0 голосов
/ 10 апреля 2009

Вы фактически импортируете HTML в MS Word и OpenOffice.org. HTML не является родным форматом ни Word, ни OpenOffice.org, что означает, что входные данные должны быть сначала преобразованы.

Неудивительно, что эти приложения (основная цель которых - редактирование документов в собственном формате приложения) не работают там идеально. На самом деле - и это не большой секрет - даже веб-браузеры, чье основное назначение - , рендеринг HTML не идеален в этой области.

Решением было бы предоставить HTML, который работает в обоих приложениях. Вы можете сделать это, используя условные комментарии , которые являются проприетарным расширением Microsoft для HTML и поэтому понятны только для продуктов 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]-->
...