如何使用PHP,包括在一个word文件的图像?
-
27-09-2019 - |
题
有人请我做在PHP的应用程序,将生成的图像,并在这几个表.doc文件。我的第一种方法是:
<?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的图像替换图像改变文件的内容转换成开放的XML和添加的文件夹,new_files他把导入的图像(这是一个巴纽),图像的一个.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 Word中。
PHPWord是PHP编写的库 创造word文档。没有Windows 需要操作系统的使用 因为结果是docx文件 (的Office Open XML),可以打开 所有主要的办公软件。
PHPWord可以编写他们 http://phpword.codeplex.com/ (注:其依然在Beta版。我用PHpExcel由同一人很多了,从来没有尝试过的Word版)。
有一个看看phpdocx库产生扩展名为.doc真正的.docx文件而不是HTML文件
PS扩展应严格做到.DOCX而非.DOC开放XML的Word 2007文件
OpenTBS 可利用的技术在PHP创建DOCX(以及其它处理OpenXML文件)动态文档模板。
需要没有临时文件,没有命令行,所有在PHP。
它可以添加或删除照片。所创建的文档可以作为一个HTML下载,保存在服务器上的文件,或者作为在PHP二进制内容。
它也可以合并开放文档文件(ODT,ODS,ODF,...)
如果富文本正常尝试 PhpRtf 。
我会使用PHPExcel。它可以与OpenXML的工作了。