как использовать php для включения изображения в текстовый файл?

Кто-то попросил меня сделать приложение в 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 изменил содержимое файла на 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?

Related of "как использовать php для включения изображения в текстовый файл?"

посмотрите здесь 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> 

Существует PHPWord- проект для манипулирования MS Word с PHP.

PHPWord – это библиотека, написанная на PHP, которая создает текстовые документы. Для использования не требуется операционная система Windows, потому что результатом являются файлы docx (Office Open XML), которые могут быть открыты всеми основными офисными программами.

PHPWord может написать их http://phpword.codeplex.com/ (примечание: все еще в бета-версии. Я часто использовал PHpExcel одним и тем же парнем … никогда не пробовал версию Word).

Посмотрите библиотеку phpdocx для генерации реальных файлов .docx, а не html-файлов с расширением .doc

PS расширение должно строго быть .docx, а не .doc для файлов Open XML Word 2007

OpenTBS может создавать DOCX (и другие файлы OpenXML) динамические документы на PHP с использованием технологии шаблонов.

Никаких временных файлов не требуется, нет команд, все в PHP.

Он может добавлять или удалять фотографии. Созданный документ может быть создан как загрузка HTML, файл, сохраненный на сервере, или как двоичное содержимое в PHP.

Он также может объединять файлы OpenDocument (ODT, ODS, ODF, …)

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

Если богатый текст в порядке, попробуйте PhpRtf .

Я бы использовал PHPExcel. Он также может работать с OpenXML.

Вот ссылка: http://phpexcel.codeplex.com/