2009-03-27 9 views
1

J'ai ce code simple en php:Ce document HTML Word affiche de manière incorrecte dans OpenOffice.org

<?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>'; 

?> 

affiche ok avec MS Office Word, cependant, la largeur est réduite (! Largeur non appropriée) lorsqu'il est ouvert avec ouverture écrivain de bureau.

Répondre

0

Vous êtes en train d'importer du HTML dans MS Word et OpenOffice.org. HTML n'est pas le format natif de Word ni d'OpenOffice.org, ce qui signifie que l'entrée doit d'abord être convertie.

Il n'est pas surprenant que ces applications (dont le but principal est l'édition de documents dans le format natif de l'application) ne soient pas parfaites. En fait - et ce n'est pas un grand secret - pas même les navigateurs Web, dont le but principal est le rendu de HTML ne sont pas parfaits dans ce domaine.

La solution serait de fournir du HTML qui fonctionne dans les deux applications. Vous pouvez le faire en utilisant conditional comments qui sont une extension propriétaire de Microsoft au format HTML et donc seulement comprise par les produits Microsoft.

Voici comment cela pourrait ressembler dans votre exemple:

<![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]--> 
1

Je pense que la meilleure façon de générer des fichiers DOC avec PHP utilisant le composant Zend Framework phpLiveDocx. Vous pouvez charger des modèles Word ou Open Office, fusionner des données textuelles et enregistrer le document final dans un certain nombre de formats, tels que DOC, DOCX, RTF et PDF.

En savoir plus sur le site web du projet:

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

Questions connexes