7

ある人から、画像といくつかのテーブルを含む .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 ファイルに画像を埋め込む方法はありますか?

4

6 に答える 6

5

ここを見てください 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>
于 2010-07-23T06:32:10.697 に答える
4

PHP 内から MS Word を操作するための PHPWordプロジェクトがあります。

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

于 2010-07-24T07:39:04.923 に答える
3

PHPWord はそれらをhttp://phpword.codeplex.com/に書き込むことができます(注: まだベータ版です。私は同じ人物の PHpExcel を何度も使用しています... Word バージョンは試したことはありません)。

于 2010-07-24T07:34:48.137 に答える
2

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

一時ファイルやコマンド ラインは不要で、すべて PHP で実行されます。

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

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

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

于 2011-03-31T22:44:03.100 に答える
2

拡張子が .doc の html ファイルではなく、実際の .docx ファイルを生成するための phpdocx ライブラリをご覧ください。

PS 拡張子は、Open XML Word 2007 ファイルの .doc ではなく、厳密に .docx にする必要があります。

于 2010-06-15T15:51:13.800 に答える
0

私はPHPExcelを使用します。OpenXML でも動作します。

リンクは次のとおりです。http://phpexcel.codeplex.com/

于 2010-07-23T19:17:29.323 に答える