Этот документ HTML 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://img.ruphp.com/php/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, однако ширина уменьшается (не правильная ширина!) при открытии с помощью открытого офисного писателя.

Фактически вы импортируете 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/