7

有人让我用 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 文件中嵌入图像?

4

6 回答 6

5

看这里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>
于 2010-07-23T06:32:10.697 回答
4

有一个PHPWord项目可以从 PHP 中操作 MS Word。

PHPWord 是一个用 PHP 编写的用于创建 word 文档的库。使用不需要Windows操作系统,因为结果是可以被所有主要办公软件打开的docx文件(Office Open XML)。

于 2010-07-24T07:39:04.923 回答
3

PHPWord 可以编写它们http://phpword.codeplex.com/(注意:它仍处于测试阶段。我已经多次使用同一个人的 PHpExcel ......从未尝试过 Word 版本)。

于 2010-07-24T07:34:48.137 回答
2

查看用于生成真实 .docx 文件而不是具有 .doc 扩展名的 html 文件的 phpdocx 库

PS 对于 Open XML Word 2007 文件,扩展名应严格为 .docx 而不是 .doc

于 2010-06-15T15:51:13.800 回答
2

OpenTBS可以使用模板技术在 PHP 中创建 DOCX(和其他 OpenXML 文件)动态文档。

无需临时文件,无需命令行,全部在 PHP 中。

它可以添加或删除图片。创建的文档可以生成为 HTML 下载文件、保存在服务器上的文件或 PHP 中的二进制内容。

它还可以合并 OpenDocument 文件(ODT、ODS、ODF...)

http://www.tinybutstrong.com/opentbs.php

于 2011-03-31T22:44:03.100 回答
0

我会使用 PHPExcel。它也可以与 OpenXML 一起使用。

这是链接: http: //phpexcel.codeplex.com/

于 2010-07-23T19:17:29.323 回答