WEB-d Développement Web

PHP, SQL, HTML5, CSS3, Javascript, Mootools, Référencement, SEO, CMS, e-commerce, Apache, Linux, Ubuntu, ...

Convertir un document OpenOffice (.odt) avec PHP

Le format utilisé par le traitement de texte d'OpenOffice est un standard appelé OpenDocument Text, d'où provient l'extention .odt.

Convertir un document OpenOffice (.odt) avec PHP

Ce format est en réalité une archive compressée au format ZIP qui contient plusieurs fichiers, notamment le fichier content.xml. Comme son nom l'indique, ce fichier est un simple texte xml qui décrit le contenu du document. Il est donc tout à fait possible d'utiliser PHP pour lire ce fichier et le transformer en code HTML par exemple.

Contenu d'un document ODT

PHP possède grosso modo 2 familles de fonctions pour lire un document XML:

L'exemple ci-dessous utilise le wrapper ZIP ainsi que XMLReader pour afficher les titres et les paragraphes d'un document ODT:


$file = "test.odt";
$xml = new XMLReader();

$xml->open("zip://$file#content.xml", "r");

while ($xml->read()) {
    if($xml->nodeType == XMLReader::END_ELEMENT) {
        continue;
    }
   
    if ($xml->name == "text:h") {
        // Titre 1 (heading 1) devient <h1>
        // Titre 2 (heading 2) devient <h2>, etc...
        $level = $xml->getAttribute("text:outline-level");
        echo "<h$level>" . utf8_decode($xml->readString()) . "</h$level>";

    } elseif ($xml->name == "text:p") {
        echo "<p>" . utf8_decode($xml->readString()) . "</p>";
    }
}
 

Articles similaires