ある人から、画像といくつかのテーブルを含む .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 ブラウザでは問題なくレンダリングされる html ファイルが生成されますが、少なくとも標準設定では、Microsoft Office Word では画像が失われます。次に、Word でファイルを編集しているときに、画像をファイルの画像に置き換えました。Microsoft Word はファイルの内容を Open 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 ファイルに画像を埋め込む方法はありますか?