0

私は、file_get_contentsを使用してxmlドキュメントを取得するPHPでスクリプトをコーディングしています。一部の文字をstr_replaceに置き換え、このファイルをfwriteを使用してWordドキュメントに書き込みます。

例:

$myContent = file_get_contents("../ressources/fichiers/modeles_conventions/modele_convention.xml");

$lettre = str_replace("@NOMENT@",utf8_encode($data['nomentreprise']),$lettre);

$newFileHandler = fopen("../ressources/fichiers/conventions/lettre_convention_1.doc","a");
fwrite($newFileHandler,$lettre);
fclose($newFileHandler);

ローカルホストでは機能していますが、サーバーでは問題は次のとおりです。

私のxmlファイルには画像が含まれていますが、最終的な.docドキュメントはこれらの画像を取得しません。

画像が取得されない理由がわかりません。


さて、私は自分の問題の解決策を見つけられませんでした。

xmlファイルを取得します(実際には、拡張子が.xmlの.docファイルです)。

    $myContent = file_get_contents("../ressources/fichiers/modeles_conventions/modele_convention.xml");

私はいくつかのものを交換します

    $myContent = str_replace("@NOM_ENTREPRISE@",stripslashes($data['nomentreprise']),$myContent);
    $myContent = str_replace("@STATUT_ENTREPRISE@",stripslashes($data['juridique']),$myContent);

ドキュメントを保存します

    //On génère la convention
    $newFileHandler = fopen("../ressources/fichiers/conventions/convention_".$data2['nomeleve']."_".$data2['prenomeleve']."_".$data3['idstage'].".doc","ab");
    fwrite($newFileHandler,$myContent);
    fclose($newFileHandler);

xmlドキュメントには画像が含まれています。ローカルホストでは画像を取得しますが、サーバーでは取得しません。

xmlコードの例:

<w:r>
 <w:rPr>
  <w:rFonts w:ascii="Arial" w:h-ansi="Arial" w:cs="Arial"/>
   <wx:font wx:val="Arial"/>
    </w:rPr>
     <w:pict>
      <v:shape id="_x0000_i1028" type="#_x0000_t75" style="width:48.75pt;height:24pt">
       <v:imagedata src="wordml://06000003.emz" o:title=""/>
      </v:shape>
     </w:pict>
</w:r>
</w:p>
4

1 に答える 1

1

HTML を使用して Word ファイルを作成することは、Word にそれが Word 文書であると認識させる方法です。.doc という名前を付けると、既定で Word で開かれるファイルが作成されます。ただし、これは実際の Word 文書ではなく、偽物です。Word が HTML を開くこともサポートしているためにのみ機能します。他のクライアントは、HTML をサポートしていないか、すべての HTML を完全にサポートしていない可能性があります。たとえば、イメージ タグは Mac の TextMate では機能しませんが、ボールド タグは正常に機能します。

XML では、絶対パス (インターネット上のパスまたはローカル ファイル システム パス) を使用してイメージを参照する必要があります。たとえば<img src="image.png">、Word ファイルはその場所を特定できないため、機能しません。ただし、使用することはできます<img src="http://yoursite.com/image.png">。たとえば、file:「プロトコル」を使用して、ローカルファイルシステムを参照することもできると確信しています。ただし、これは、ファイルが開かれているファイルシステムにファイルが存在する場合にのみ機能します。

これで問題が解決しない場合は、XML ファイルをここに投稿する必要があります。


ただし、これをクライアントまたは外部システム (自分以外のもの) 用に作成する場合は、次のようなものを使用することをお勧めします。

COM オブジェクト
これは、Web アプリケーションが実行されているシステムに Word が実際にインストールされている場合にのみ機能します。

<?php 
$word = new COM("word.application") or die ("Can't create Word file"); 
$word->visible = 1; 
$word->Documents->Add(); 
$word->Selection->TypeText("this is some sample text in the document"); 
$word->Documents[1]->SaveAs("sampleword.doc"); 
$word->Quit(); 
$word->Release(); 
$word = null; 
?> 

ソース

Office Open XML またはその他の形式
Wordで使用される新しい XML 形式はオープン ソースであり、より簡単に変更できます。正確な詳細はわかりませんが、基本的にはいくつかの XML ファイルを zip ファイルに圧縮し、拡張子 .docx を付けたものです。

可能であれば、OpenOffice の ODT 形式も使用できます。最新の Word バージョンでもこのファイルを読み取ることができ、形式はオープン ソースです。また、PHP を使用して Word ファイルよりも PDF ファイルを作成する方が実行可能です。

phpLiveDocs
phpLiveDocsは PHP の拡張機能で、Word ファイルの作成に使用できます。

于 2012-06-04T12:52:09.180 に答える