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

кто-то попросил меня сделать приложение на php, которое будет генерировать .файл doc с изображением и несколькими таблицами в нем. Мой первый подход был:--3-->

<?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), a .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?

7 ответов


смотрите сюда 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 которые создают документы word. никакие окна операционная система необходима для использования потому что результатом являются файлы DOCX (Office Open XML), который можно открыть всеми основными офисными программами.


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


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

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


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

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

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

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

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


Если rich text в порядке, попробуйте PhpRtf.


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

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