Support des modèles Office 2007/2010 dans Alfresco 3.4d (1ère partie)

Je me décide enfin à partager les quelques améliorations qu’il m’est donné de réaliser sur Alfresco.
Le premier billet concerne un problème que m’a remonté un client lors d’une séance de coaching : les fichiers .dotx (modèles Word 2007) ne bénéficient pas de la prévisualisation (pas de miniature, pas de version flash) dans Share alors que les fichiers .dot en bénéficient.

Différence de traitement dot et dotx sur Alfresco 3.4

En haut : un fichier .dot avec sa miniature, en bas : un fichier .dotx n'a pas de miniature

Dans une telle situation, la première question à se poser concerne la bonne prise en compte du format .dotx par les transformers Alfresco (pour mémoire, les transformers sont responsables de la conversion d’un format de fichier vers un autre; ils sont utilisés pour générer les miniatures et les formats flash des documents). La version Alfresco 3.4d bénéficient d’un webscript très pratique pour cela :
http://localhost:8080/alfresco/service/mimetypes (bien entendu, le lecteur remplacera de lui même « localhost:8080/alfresco » par le préfixe qui correspond à son installation).
Remarque : les version antérieures, notamment la version 3.3 Enterprise n’en dispose malheureusement pas.

Une recherche sur « .dotx » plus loin nous permet de constater ceci :

application/vnd.openxmlformats-officedocument.wordprocessingml.template – dotx

Extractors:
org.alfresco.repo.content.metadata.PoiMetadataExtracter
Transformable To:

  • application/xhtml+xml = org.alfresco.repo.content.transform.PoiOOXMLContentTransformer
  • text/html = org.alfresco.repo.content.transform.PoiOOXMLContentTransformer
  • text/plain = org.alfresco.repo.content.transform.PoiOOXMLContentTransformer
  • text/xml = org.alfresco.repo.content.transform.PoiOOXMLContentTransformer

Ceci signifie que le format .dotx peut être converti en html, texte ou xml. C’est une bonne nouvelle pour l’indexation plein texte (passage au format texte impératif), c’est une moins bonne nouvelle pour la conversion en image : il n’en est pas fait mention.

En comparant avec « .dot » (dont le type MIME est « application/msword » et dont la définition des transformers est donc confondue avec celle des « .doc »), on se rend bien compte de l’écart qui peut exister :

application/msword – doc

Extractors:
org.alfresco.repo.content.metadata.OfficeMetadataExtracter
Transformable To:

  • application/eps = Complex via: application/pdf
  • application/pdf = Using a Direct Open Office Connection
  • application/rtf = Using a Direct Open Office Connection
  • application/vnd.oasis.opendocument.text = Using a Direct Open Office Connection
  • application/vnd.openxmlformats-officedocument.wordprocessingml.document = Using a Direct Open Office Connection
  • application/vnd.sun.xml.writer = Using a Direct Open Office Connection
  • application/x-shockwave-flash = Complex via: application/pdf
  • application/xhtml+xml = org.alfresco.repo.content.transform.PoiContentTransformer
  • image/bmp = Complex via: application/pdf
  • image/cgm = Complex via: application/pdf
  • image/gif = Complex via: application/pdf
  • image/ief = Complex via: application/pdf
  • image/jp2 = Complex via: application/pdf
  • image/jpeg = Complex via: application/pdf
  • image/png = Complex via: application/pdf
  • image/tiff = Complex via: application/pdf
  • image/x-cmu-raster = Complex via: application/pdf
  • image/x-dwg = Complex via: application/pdf
  • image/x-dwt = Complex via: application/pdf
  • image/x-portable-anymap = Complex via: application/pdf
  • image/x-portable-bitmap = Complex via: application/pdf
  • image/x-portable-graymap = Complex via: application/pdf
  • image/x-portable-pixmap = Complex via: application/pdf
  • image/x-xbitmap = Complex via: application/pdf
  • image/x-xpixmap = Complex via: application/pdf
  • image/x-xwindowdump = Complex via: application/pdf
  • text/html = org.alfresco.repo.content.transform.PoiContentTransformer
  • text/plain = org.alfresco.repo.content.transform.TextMiningContentTransformer
  • text/xml = org.alfresco.repo.content.transform.PoiContentTransformer
Transformable From:

  • application/rtf = Using a Direct Open Office Connection
  • application/vnd.oasis.opendocument.text = Using a Direct Open Office Connection
  • application/vnd.openxmlformats-officedocument.wordprocessingml.document = Using a Direct Open Office Connection
  • application/vnd.sun.xml.writer = Using a Direct Open Office Connection
  • application/wordperfect = Using a Direct Open Office Connection
  • text/html = Using a Direct Open Office Connection
  • text/plain = Using a Direct Open Office Connection

Comme on peut le voir dans cette longue liste, les renditions images sont générées en passant par le format PDF (cf. Complex via: application/pdf), et le format PDF est quant à lui obtenu par un appel à OpenOffice.org (cf. Using a Direct Open Office Connection). J’écris OpenOffice.org, mais le même résultat est obtenu avec LibreOffice.

Notre problème de .dotx provient donc du fait qu’Alfresco ne sait pas qu’OpenOffice.org sait traiter les modèles Word 2007. La correction de ce problème est alors évidente : apportons cette connaissance à Alfresco.

L’ensemble des formats de fichiers pris en charge par OpenOffice.org pour les renditions sont listés dans le fichier WEB-INF/classes/alfresco/mimetype/openoffice-document-formats.xml. On trouve dans ce fichier différentes sections, chacune correspondant à un type de fichiers en particulier.

Pour ajouter le support des modèles Word 2007/2010, il suffit d’ajouter une section comme suit :
<document-format><name>Office Word 2007 template</name>
<family>Text</family>
<mime-type>application/vnd.openxmlformats-officedocument.wordprocessingml.template</mime-type>
<file-extension>dotx</file-extension>
<export-filters>
<entry><family>Text</family><string>MS Word 2007</string></entry>
</export-filters>
</document-format>

Pour bien faire les choses, il ne faut pas modifier directement le fichier de la webapp (risque de perte lors de montées de versions), mais il est préférable d’externaliser nos configurations dans le dossier shared.
Les étapes à mener sont donc les suivantes :

  1. Créer un dossier shared/alfresco/extension/mimetype
  2. Y copier le document WEB-INF/classes/alfresco/mimetype/openoffice-document-formats.xml
  3. Référencer notre nouveau document pour qu’il soit pris en compte:
    1. Créer une extension du sous-système OOoDirect : créer un dossier shared/alfresco/extension/subsystems/OOoDirect/default/default
    2. Y surcharger le bean transformer.worker.OpenOffice en créant le fichier openoffice-transform-context.xml avec le contenu :
      <?xml version='1.0' encoding='UTF-8'?>
      <!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'>
      <beans>

      <bean id="transformer.worker.OpenOffice" class="org.alfresco.repo.content.transform.OpenOfficeContentTransformerWorker">
      <property name="mimetypeService">
      <ref bean="mimetypeService" />
      </property>
      <property name="connection">
      <ref bean="openOfficeConnection" />
      </property>
      <property name="documentFormatsConfiguration">
      <value>classpath:alfresco/extension/mimetype/openoffice-document-formats.xml</value>
      </property>
      </bean>
      </beans>

Il ne reste plus qu’à redémarrer Alfresco et s’assurer que tout fonctionne bien, par exemple en exécutant le WebScript http://localhost:8080/alfresco/service/mimetypes.

Remarque : ce mécanisme, mis en œuvre ici pour les modèles Word, peut également être utilisé pour les modèles Excel ou PowerPoint.

Cette entrée a été publiée dans Alfresco, avec comme mot(s)-clef(s) , , , . Vous pouvez la mettre en favoris avec ce permalien.

10 réponses à Support des modèles Office 2007/2010 dans Alfresco 3.4d (1ère partie)

  1. Jamal dit :

    Bonjour,

    Ca à l’air de fonctionner mais Quand on change les métadonnées d’un des modèles Office 2007/2010, tout est perdu, mimetype, thumbnail, rendering … t’as déjà détecté ce bug ?

    Merci!

    • Charles Le Seac'h dit :

      Bonjour Jamal,

      Je n’ai pas encore rencontré ce bug.
      Peux-tu m’en dire plus ?
      (qu’elle version d’Alfresco, quelle modification effectues-tu pour rencontrer le problème)

      Cordialement,
      Charles

  2. Jamal dit :

    La version entreprise 3.4.7, Après avoir appliquer les modifications ici et dans les autres articles, tout fonctionne bien, les thumbnails, mime-type, rendering …

    On change juste une métadonnée, par exemple le titre ou la description et on est au point de départ, la miniature flash disparait, le mime-type reprend la valeur Octet Stream, et le document ne se lit plus (This document can’t be previewed)

    Je parle bien des documents potx, xltx, dotx

    Cordialement

    • Charles Le Seac'h dit :

      Bonsoir,

      Je viens de faire le test sur une version 3.4d avec un fichier .dotx
      Je ne rencontre pas votre problème. Peut-être est-il lié à des customisations que vous avez mises en place ?
      Essayez avec une version non customisée pour identifier l’origine du problème.

      Cordialement,
      Charles Le Seac’h

  3. Jamal dit :

    Bonjour,

    Je refait le test sur une installation propre et Je te tiens au courant s’il y a des nouvelles

    Merci Charles

  4. Jamal dit :

    Bonjour,

    Ca y est, J’ai oublié d’ajouter ces trois lignes dans mimetype.ftl :

    Merci !

  5. Jamal dit :

    Je ne sais pas pourquoi les lignes ne s’affiche pas dans le commentaire mais Je parle de la première étape ici => « Support des modèles Office 2007/2010 dans Alfresco 3.4d (4ème partie)  »

  6. Charles Le Seac'h dit :

    Bonjour,

    Merci pour le retour qui me permet également de me rendre compte que le code ne semble pas passer dans les commentaires.
    N’hésite pas à reposter sans balises. Je ferai la mise en forme après.

  7. Jamal dit :

    C’est déjà fait dans 1) de la quatrième partie, J’ai parlé de trois lignes parce que J’avais à traiter les cas des modèles powerpoint et Excel

    @mimetypeOption mt= »application/vnd.openxmlformats-officedocument.wordprocessingml.template »

    @mimetypeOption mt= »application/vnd.openxmlformats-officedocument.spreadsheetml.template »

    mimetypeOption mt= »application/vnd.openxmlformats-
    officedocument.presentationml.template »

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Protected by WP Anti Spam