質問

誰かが私に、画像といくつかのテーブルを含む.docファイルを生成するPHPでアプリを作成するように頼みました。私の最初のアプローチは:

<?php
function data_uri($file, $mime) 
{  
  $contents = file_get_contents($file);
  $base64   = base64_encode($contents); 
  return ('data:' . $mime . ';base64,' . $base64);
}
$file = 'new.doc';
$fh = fopen($file,'w');
$uri = data_uri('pic.png','image/png');
fwrite($fh,'<table border="1"><tr><td><b>something</b></td><td>something else</td></tr><tr><td></td><td></td></tr></table>
<br/><img src="'.$uri.'" alt="some text" />
<br/>
<table border="1"><tr><td><b>ceva</b></td><td>altceva</td></tr><tr><td></td><td></td></tr></table>');
fclose($fh);
?>

これは、画像を埋め込むというデータURI手法を使用します。

これにより、WebブラウザーでOKされるHTMLファイルが生成されますが、少なくとも標準のセットアップでは、Microsoft Office Wordで画像が欠落しています。次に、ファイルをWordで編集している間、ファイルの画像に画像を置き換え、Microsoft Wordのファイルの内容を開いてXMLに変更し、インポートされた画像を配置したフォルダー、new_filesを追加しました(これは.pngでした。 )、画像の.gifバージョンとxmlファイル:

<xml xmlns:o="urn:schemas-microsoft-com:office:office">
  <o:MainFile HRef="../new.doc" /> 
  <o:File HRef="image001.jpg" /> 
  <o:File HRef="filelist.xml" /> 
</xml>

これも私がこれをすべて単一の.docファイルに保持したいので、これも十分ではありません。 OpenXML形式の.docファイルに画像を埋め込む方法はありますか?

役に立ちましたか?

解決

ここを見て http://www.tkachenko.com/blog/archives/000106.html

<w:pict>
    <v:shapetype id="_x0000_t75" ...>
    ... VML shape template definition ...
    </v:shapetype>
    <w:binData w:name="wordml://02000001.jpg">
    ... Base64 encoded image goes here ...
    </w:binData>
    <v:shape id="_x0000_i1025" type="#_x0000_t75" 
      style="width:212.4pt;height:159pt">
         <v:imagedata src="wordml://02000001.jpg" 
           o:title="Image title"/>
    </v:shape> 
</w:pict>

他のヒント

がある phpword PHP内からMSワードを操作するプロジェクト。

PHPWordは、単語文書を作成するPHPで書かれたライブラリです。結果は、すべての主要なオフィスソフトウェアによって開くことができるDOCXファイル(Office Open XML)であるため、使用にはWindowsオペレーティングシステムは必要ありません。

phpwordはそれらを書くことができます http://phpword.codeplex.com/ (注:まだベータ版です。私は同じ男によってphpexcelをよく使用しました...単語バージョンを試したことはありません)。

.doc拡張機能を持つHTMLファイルではなく、実際の.docxファイルを生成するためのphpdocxライブラリをご覧ください

PSオープンXML Word 2007ファイルの場合、拡張機能は.docではなく.docxである必要があります

Opentbs テンプレートの手法を使用して、PHPでDOCX(およびその他のOpenXMLファイル)の動的ドキュメントを作成できます。

一時的なファイルは必要ありません、コマンドラインはすべてPHPにあります。

写真を追加または削除できます。作成されたドキュメントは、HTMLダウンロード、サーバーに保存されたファイル、またはPHPのバイナリコンテンツとして作成できます。

また、OpenDocumentファイル(ODT、ODS、ODF、...)をマージすることもできます。

http://www.tinybutstrong.com/opentbs.php

リッチなテキストが大丈夫なら、試してください phprtf.

phpexcelを使用します。 OpenXMLでも動作できます。

これがリンクです: http://phpexcel.codeplex.com/

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