PHPを使用してワードファイルに画像を含める方法は?
-
27-09-2019 - |
質問
誰かが私に、画像といくつかのテーブルを含む.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、...)をマージすることもできます。
リッチなテキストが大丈夫なら、試してください phprtf.
phpexcelを使用します。 OpenXMLでも動作できます。
これがリンクです: http://phpexcel.codeplex.com/