質問

私は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で[OK]を表示し、オープンオフィスライターで開かれたとき、しかし、幅が(適切でない幅!)が低減されます。

役に立ちましたか?

解決

あなたが実際にMS WordやOpenOffice.orgにHTMLをインポートしています。 HTMLは、入力が最初に変換する必要があり意味する言葉でもOpenOffice.org、どちらのネイティブフォーマットではありません。

これは(主な目的アプリケーションのネイティブ形式での文書の編集である)、これらのアプリケーションが存在しない完璧な仕事をしていることは驚きではありません。実際には - 、それは大きな秘密ではありません - その主な目的は、のはのではないとしても、Webブラウザ、HTMLのレンダリングは、その地域で完璧ではありません。

ソリューションは、両方のアプリケーションで動作するHTMLを提供するだろう。あなたは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]-->

他のヒント

私はPHPでDOCファイルを生成する最も簡単な方法は、Zend Frameworkのコンポーネントの phpLiveDocx のを使用していると思います。あなたは、WordやOpen Officeのテンプレートを読み込むテキストデータをマージして、そのようなDOC、DOCX、RTFやPDFなどの形式の番号に最終文書を保存することができます。

プロジェクトのWebサイトで詳細をご覧ください。

http://www.phplivedocx.org/articles/brief-導入ツーphplivedocx /

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top