Этот документ HTML Word неправильно отображается в OpenOffice.org
-
22-08-2019 - |
Вопрос
У меня есть этот простой код в 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> </td>
</tr>
<tr>
<td style="text-align: left; height: 0.6cm">9AM Oct-12-08</td>
<td> </td>
<td style="text-align: right">Dance Studio</td>
</tr>
</table>';
?>
в MS Office Word отображается нормально, однако ширина уменьшается (неправильная ширина!) при открытии с помощью Open Office Writer.
Решение
Фактически вы импортируете 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]-->
Другие советы
Я думаю, что самый простой способ генерировать файлы DOC с помощью PHP — использовать компонент Zend Framework. phpLiveDocx.Вы можете загружать шаблоны Word или Open Office, объединять текстовые данные и сохранять окончательный документ в различных форматах, таких как DOC, DOCX, RTF и PDF.
Подробности на сайте проекта:
http://www.phplivedocx.org/articles/brief-introduction-to-phplivedocx/