Кто-то попросил меня создать приложение на 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);
?>
При этом используется метод data uri для встраивания изображения.
Это создаст HTML-файл, который будет хорошо отображаться в веб-браузерах, но изображение отсутствуетв 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.Есть ли способ вставить изображение в файл .doc в формате OpenXML?