有人让我用 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 技术。
这将生成一个 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>
现在这也不够好,因为我希望这些都保存在一个 .doc 文件中。有没有办法在 OpenXML 格式的 .doc 文件中嵌入图像?