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

7
задан Deduplicator 24 February 2015 в 21:17
поделиться

6 ответов

посмотрите здесь 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>
5
ответ дан 6 December 2019 в 12:46
поделиться

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

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

2
ответ дан 6 December 2019 в 12:46
поделиться

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

0
ответ дан 6 December 2019 в 12:46
поделиться

Существует проект PHPWord для работы с MS Word из PHP.

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

4
ответ дан 6 December 2019 в 12:46
поделиться

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

3
ответ дан 6 December 2019 в 12:46
поделиться

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

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

0
ответ дан 6 December 2019 в 12:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: