>我正在用PHP编写一个脚本,该脚本采用带有file_get_contents的xml文档,我用str_replace替换了一些caracter,然后我用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>
使用 HTML 创建 Word 文件是一种让 Word 认为它是 Word 文档的方法。将其命名.doc会创建一个默认情况下在 Word 中打开的文件。但是,它不是实际的Word文档,您是在伪造它。它之所以有效,是因为 Word 还支持打开 HTML。其他客户端可能不支持 HTML 或并非完全支持所有 HTML。例如,图像标签不适用于Mac上的TextMate,尽管粗体标签工作正常。
在XML中,您必须使用绝对路径(即Internet上的路径或本地文件系统路径)引用图像。例如,<img src="image.png">
将不起作用,因为Word文件不知道如何找到它。但是,您可以使用<img src="http://yoursite.com/image.png">
。我相信你也可以参考你的本地文件系统,例如file:
"协议"。仅当文件存在于打开文件的文件系统上时,这才有效。
如果这不能解决您的问题,您可能应该在此处发布您的 XML 文件。
但是,如果您正在为客户端或外部系统(除了您自己之外的任何系统)创建它,我建议您使用以下内容:
COM 对象
仅当 Word 实际安装在运行 Web 应用程序的系统上时,此操作才有效。
<?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 格式是开源的,可以更轻松地进行修改。我不知道确切的细节,但它基本上是一些压缩成zip文件的XML文件,并给出了扩展名.docx。
如果可能的话,你也可以使用OpenOffice的ODT格式。最新的Word版本也可以读取此文件,格式是开源的。创建PDF文件也比使用PHP创建Word文件更可行。
phpLiveDocs
phpLiveDocs是PHP的扩展,可用于创建Word文件。