Кто-то попросил, чтобы я сделал приложение в 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, который будет представлен хорошо в веб-браузерах, но изображение пропускает в Microsoft Office Word, по крайней мере, в стандартной установке. Затем при редактировании файла с Word я имею, заменяют изображение изображением из файла, и Microsoft Word изменился, содержание файла в Открывает 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 файл?
посмотрите здесь 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>
Взгляните на библиотеку phpdocx для создания реальных файлов .docx, а не файлов html с расширением .doc
PS расширение должно быть строго .docx, а не .doc для Open XML Файлы Word 2007
Если форматированный текст в порядке, попробуйте PhpRtf .
Существует проект PHPWord для работы с MS Word из PHP.
PHPWord - это библиотека, написанная на PHP. которая создает документы word. Не требуется Windows операционная система не требуется для использования потому что результатом являются файлы docx (Office Open XML), которые могут быть открыты всеми основными офисными программами.
PHPWord может записывать их http://phpword.codeplex.com/ (примечание: он все еще находится в бета-версии. Я использовал PHpExcel того же парня много ... ни разу не пробовал версию Word).
Я бы использовал PHPExcel. Он также может работать с OpenXML.
Вот ссылка: http://phpexcel.codeplex.com/