Alguien me ha pedido que haga una aplicación en php que generará un archivo .doc con una imagen y algunas tablas. Mi primer enfoque fue:cómo usar php para incluir una imagen en un archivo de palabras?
<?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);
?>
Esto utiliza la técnica de uri de datos para incrustar una imagen.
Esto generará un archivo html que se mostrará bien en los navegadores web, pero la imagen no se encuentra en Microsoft Office Word, al menos en la configuración estándar. Luego, mientras editaba el archivo con Word, reemplacé la imagen con una imagen del archivo y Microsoft Word cambió el contenido del archivo a Open XML y agregó una carpeta, new_files donde puso la imagen importada (que era un .png), una versión .gif de la imagen y un archivo 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>
Ahora bien, esto no es lo suficientemente bueno, ya sea desde que desea que esto sea todo lo mantienen en un solo archivo .doc. ¿Hay alguna manera de incrustar una imagen en un archivo .doc con formato OpenXML?
No sé, ¿qué es este código y dónde usar esto, en php o html? ¿Podrías por favor definirlo un poco más? – Bajrang
si recuerdo correctamente debe poner esto dentro de su archivo 'doc' (xml) generado. o puede guardar su archivo doc como xml y luego verificar su estructura interna, parece que es la forma en que usé este – llamerr