Domanda

Qualcuno mi ha chiesto di fare un app in php che genererà un file .doc con un'immagine e un paio di tabelle in esso. Il mio primo approccio è stato:

<?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);
?>

Questa tecnica utilizza i dati URI di incorporare un'immagine.

Questo genererà un file HTML che verranno resi ok nei browser web, ma l'immagine è mancante in Microsoft Office Word, almeno nella configurazione standard. Poi, mentre la modifica del file con Word, ho sostituire l'immagine con un'immagine da file e Microsoft Word cambiato il contenuto del file in Open XML e ha aggiunto una cartella, new_files dove ha messo l'immagine importata (che era un .png ), una versione .gif dell'immagine e un file 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>

Ora, questo non è abbastanza buono sia dal momento che voglio che questo sia tutto conservato in un unico file con estensione doc. C'è un modo per incorporare un'immagine in un file .doc OpenXML-formattato?

È stato utile?

Soluzione

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>

Altri suggerimenti

PHPWord progetto di manipolare MS Word dall'interno PHP.

  

PHPWord è una libreria scritta in PHP   che creano documenti word. No Windows   sistema operativo è necessario per l'uso   perché il risultato sono i file docx   (Office Open XML) che può essere aperto   da tutti i principali software per ufficio.

PHPWord può scrivere loro http://phpword.codeplex.com/ (nota: la sua ancora in beta. ho usato PHpExcel dalla stessa persona molto ... mai provato la versione Word).

Date un'occhiata alla biblioteca phpdocx per la generazione di file .docx reali piuttosto che i file html con estensione .doc

PS l'estensione dovrebbe essere rigorosamente .docx piuttosto che .doc per i file Open XML di Word 2007

OpenTBS può creare DOCX (e altri file OpenXML) documenti dinamici in PHP utilizzando la tecnica della modelli.

Non ci sono file temporanei necessari, senza linee di comando, il tutto in PHP.

E 'possibile aggiungere o immagini di eliminazione. Il documento creato può essere prodotto come download HTML, un file salvato sul server, o come contenuto binario in PHP.

Si può anche unire i file OpenDocument (ODT, ODS, ODF, ...)

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

Se il testo ricco è ok prova a PhpRtf .

I userebbe PHPExcel. Si può lavorare con OpenXML troppo.

Ecco il link: http://phpexcel.codeplex.com/

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top