Comme on l'a noté, il ne semble pas y avoir de bibliothèques permettant de manipuler des documents Open XML en Ruby, mais Développeur OpenXML possède une documentation complète sur le format des documents Open XML.
Si ce que vous voulez, c'est envoyer une copie d'un document standard (comme une lettre type) personnalisée pour chaque utilisateur, cela devrait être assez simple étant donné qu'un DOCX est un fichier ZIP qui contient diverses parties dans une hiérarchie de répertoires. Disposez d'un "modèle" DOCX contenant toutes les parties et l'arborescence que vous souhaitez envoyer à all
(sans contenu réel), il suffit alors de créer de nouveaux éléments (ou de modifier les éléments existants) contenant le contenu spécifique à l'utilisateur que vous souhaitez et de l'injecter dans le ZIP (fichier DOCX) avant de l'envoyer à l'utilisateur.
Par exemple : Vous pourriez avoir document-template.xml
qui contient Cher [USER-PLACEHOLDER] : . Lorsqu'un utilisateur demande le document, vous remplacez [USER-PLACEHOLDER]
avec le nom de l'utilisateur, puis ajoutez le résultat de la commande document.xml
à la your-template.docx
(qui contiendrait toutes les images et autres parties que vous voulez dans le document Word) et envoyez le document résultant à l'utilisateur.
Notez que si vous renommez un .docx
pour .zip
il est trivial d'explorer la structure et le format des pièces à l'intérieur. Vous pouvez supprimer ou remplacer des images ou d'autres parties très facilement avec n'importe quel outil de manipulation ZIP ou de manière programmatique avec du code.
Il serait très difficile de générer un tout nouveau document Word avec un contenu entièrement personnalisé à partir du XML brut sans avoir accès à une API pour faciliter la tâche. Si vous avez vraiment besoin de faire cela, vous pouvez envisager d'installer Mono alors utilisez VB.NET, C# ou IronRuby pour créer vos documents Open XML en utilisant le SDK du format Open XML 1.0 . Puisque vous n'utiliserez que le Espace de nom Microsoft.Office.DocumentFormat.OpenXml.Packaging pour manipuler des documents Open XML, cela devrait fonctionner correctement dans Mono, qui semble supporter tout ce que le SDK requiert.