Die HTML-Ebene für PHPWord-Pipelines. Eine typisierte Brücke zwischen dem Objektmodell von PHPWord und dem AST von php-docx:
PhpWord-Objekte nach sauberem HTML exportieren (den Export, den PHPWord nicht bietet), HTML inPhpWordimportieren, beliebige DOCX direkt in PHPWord-Modelle einlesen, Vorlagenvariablen erkennen. Und dabei in der gewohnten API bleiben.
composer require dskripchenko/php-docx-phpwordBringt dskripchenko/php-docx (MIT, ohne Abhängigkeiten) neben Ihr vorhandenes
phpoffice/phpword. Dieses Paket steht unter MIT; PHPWord bleibt LGPL-3.0 —
eine ganz normale Composer-Abhängigkeit, an Ihrem Code ändert sich nichts.
use Dskripchenko\PhpDocxPhpWord\PhpWordBridge;
$html = PhpWordBridge::toHtml($phpWord); // sauberes HTML, Styles inline$phpWord = PhpWordBridge::fromHtml('<h1>Bericht</h1><p>Text mit <b>Fettdruck</b>.</p>');
// … weiter mit PHPWord-eigenen Aufrufen und Writern$phpWord = PhpWordBridge::readToPhpWord(file_get_contents('from-word.docx'));Verwendet den Reader von php-docx (vollständige Stilkaskade; Ausgaben von Word, Google Docs, LibreOffice und PHPWord — die Treue wird an einem externen Korpus gemessen) und bildet das Ergebnis auf PHPWord-Modelle ab. PHPWords eigener Reader ist nicht beteiligt.
$variables = PhpWordBridge::detectVariables($phpWordOrDocxBytes);
// MERGEFIELD, SDT-Inhaltssteuerelemente, Muster {{x}} / ${x} / %x%PhpWordBridge::toDocument($phpWord) und
PhpWordBridge::fromDocument($document) legen die Abbildung selbst offen — für
Pipelines, die anschließend in php-docx weiterlaufen.
Die Brücke überträgt, was beide Modelle ausdrücken können:
| Wird übernommen | Wird nicht übernommen (übersprungen, nie geraten) |
|---|---|
| Absätze, Text-Runs (fett, kursiv, unterstrichen, durchgestrichen, hoch-/tiefgestellt, Farbe, Größe, Schriftname) | benannte Stile und Themenstile (nur aufgelöste Werte) |
| Überschriften 1–6 | Diagramme, Inhaltsverzeichnis, Kontrollkästchen, OLE |
Tabellen inkl. gridSpan / vMerge |
Änderungsverfolgung, Kommentare |
| Aufzählungen und nummerierte Listen (auch verschachtelt) | Fuß- und Endnoten, OMML-Formeln |
| Hyperlinks, Bilder, Zeilen- und Seitenumbrüche | Formularfelder |
| Standard-Kopf-/Fußzeilen | eigene Varianten für erste und gerade Seiten, Wasserzeichen |
| Absatzausrichtung, Abstände, Einzüge | Feinheiten der Abschnitts- und Seitengeometrie |
Stützt sich ein Dokument auf die rechte Spalte, tut die Brücke nicht so, als wäre alles in Ordnung: Inhalte außerhalb der gemeinsamen Menge werden bewusst stillschweigend verworfen. Für verlustfreie DOCX-Rundläufe bleiben Sie in php-docx selbst.
MIT. Hängt über Composer von phpoffice/phpword (LGPL-3.0) ab — genau der Fall
dynamischen Bindens, für den die LGPL geschrieben wurde.