Val*_*sso 7 php base64 office-2003 ms-word
有人要我在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);
?>
Run Code Online (Sandbox Code Playgroud)
这使用了嵌入图像的数据uri技术.
这将生成一个html文件,该文件将在Web浏览器中呈现,但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>
Run Code Online (Sandbox Code Playgroud)
现在这还不够好,因为我希望将它们全部保存在单个.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>
Run Code Online (Sandbox Code Playgroud)