我正在用PHP编写一个脚本编写一个带有file_get_contents的xml文档,我用str_replace替换了一些caracters,然后用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);
在localhost中它正在工作,但在服务器上的问题是:
我的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文档包含图像,在localhost中它检索图像但不检索服务器。
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>
答案 0 :(得分:1)
使用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对象
这仅适用于在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;
?>
(source)
Office Open XML或其他格式
Word使用的new XML format是开源的,可以更轻松地修改。我不知道确切的细节,但它基本上是一些压缩成zip文件的XML文件,并给出扩展名.docx。
如果可能,您还可以使用OpenOffice的ODT格式。最新的Word版本也可以读取此文件,格式是开源的。使用PHP创建PDF文件比使用Word文件更加可行。
<强> phpLiveDocs 强>
phpLiveDocs是PHP的扩展,可用于创建Word文件。