Frage

Jemand hat mich gebeten, eine App in PHP zu machen, die eine DOC-Datei mit einem Bild generieren und ein paar Tischen drin. Mein erster Ansatz war:

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

Dieses verwendet die Daten uri Technik zur Erzeugung eines Bildes eingebettet werden.

Dies wird eine HTML-Datei generiert, die in Web-Browsern ok gerendert werden, aber das Bild in Microsoft Office Word fehlen, zumindest in dem Standard-Setup. Dann, während mit Word Editieren der Datei, ich habe ersetzen Sie das Bild mit einem Bild aus der Datei und Microsoft Word verändert den Inhalt der Datei in Open XML und einen Ordner hinzugefügt, new_files wo er das importierte Bild gesetzt (das war ein .png eine GIF-Version des Bildes) und eine xML-Datei:

<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>

Nun ist dies nicht gut genug, um entweder, da ich dies will, dass alle in einer einzigen DOC-Datei gehalten werden. Gibt es eine Möglichkeit zum Einbetten eines Bild in einer Open XML-Format .doc-Datei?

War es hilfreich?

Lösung

Blick hier 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>

Andere Tipps

Es gibt PHPWord Projekt MS Word zu manipulieren, aus PHP.

  

PHPWord ist eine Bibliothek in PHP geschrieben   , Das Erstellen von Word-Dokumenten. Nein Windows   Betriebssystem ist für den Einsatz benötigt   weil das Ergebnis sind docx-Dateien   (Office Open XML), die geöffnet werden können   von allen wichtigen Office-Software.

PHPWord schreiben kann sie http://phpword.codeplex.com/ (Anmerkung: es ist immer noch in Beta. ich verwendet habe PHPExcel vom selben Typ viel ... nie die Word-Version ausprobiert).

Haben Sie einen Blick auf der phpdocx Bibliothek zum Erzeugen von realen .docx-Dateien anstatt HTML-Dateien mit einer Erweiterung DOC

PS die Erweiterung streng statt .doc für Open XML Word 2007 Dateien sein .docx sollte

OpenTBS können DOCX erstellen (und andere OpenXML-Dateien) dynamische Dokumente in PHP mit der Technik der Vorlagen.

Es wurden keine temporären Dateien benötigt, keine Befehlszeilen, die alle in PHP.

Es kann hinzufügen oder löschen Sie Bilder. Das erstellte Dokument kann als HTML-Download hergestellt werden, eine Datei auf dem Server gespeichert, oder als binäre Inhalte in PHP.

Es kann auch OpenDocument- Zusammenführen von Dateien (ODT, ODS, ODF, ...)

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

Wenn Rich Text ist ok versuchen PhpRtf .

würde ich PHPExcel verwenden. Es kann auch mit OpenXML arbeiten.

Hier ist der Link: http://phpexcel.codeplex.com/

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top