Open XML: RTF Format in eine Open XML Datei integrieren

Ein Frage, die letztens auftauchte, will ich Ihnen hier nicht vorenthalten: Ich bekomme über einen Kanal RTF-Dateien, welche in Open XML-Dateien integriert werden sollen, und zwar incl. der Formatierung.

Neben einer Trasformation von RTF nach WordProcessingML (komplexes xlst, wer hat so was?) kann man mit dem altChunk Tag arbeiten (OpenXML Doku:  2.17.3.1  altChunk (Anchor for Imported External Content))

Das macht es einfacher, es bleiben nur 3 Schritte übrig:

1. RTF als neuen Content Type anlegen ( in der Datei [Content_Types].xml ):

   <Default Extension="rtf" ContentType="application/rtf" />

2. Im Main Document Part Relationship File (document.xml.rels), die Beziehung zum RTF File setzen (Id und Target entsprechend anpassen):

   <Relationship Id="rId7"

      Type="https://schemas.openxmlformats.org/officeDocument/2006/relationships/aFChunk"

      Target="/word/test.rtf"

      TargetMode="Internal"

   />

3. Das RTF File im Zip Container ablegen und in der document.xml ein <altChunk> Element erzeugen (in der Hierarchie direkt unterhalb des Body Tags, vor oder nach den gewünschten Absätzen, sprich <p> Elementen):

   <w:altChunk r:id="rId7" />

 

Word 2007 wandelt diesen Tag dann beim Speichern in WordProcessingML um und entfernt die eingebettete RTF-Datei. Bei anderen mit Open XML kompatiblen Textverarbeitungen sollte vorher getestet werden, ob das <altChunk> Element unterstützt wird.