L'une des meilleures fonctionnalités de Nuxeo Platform est la possibilité d'indexer du texte présent dans les fichiers. Les utilisateurs s'y attendent naturellement pour les fichiers Office, mais Nuxeo Platform propose également les mêmes services pour les ressources multimédia contenant généralement beaucoup de texte : Adobe Illustrator (.ai) et Encapsulated PostScript (.eps). Et le meilleur dans tout ça, c'est qu'il ne faut que quelques minutes pour configurer cette fonctionnalité avec Nuxeo Studio !

L'indexation du texte présent dans les fichiers AI et EPS se déroule en deux étapes : conversion du fichier en PDF à l'aide de Ghostscript et extraction du texte à partir du PDF. Ghostscript fait déjà partie des outils tiers utilisés par la plateforme donc il n'y a rien à installer ici. Il vous suffit de configurer quelques lignes de commande et convertisseurs avec Studio.

Commençons par les lignes de commande. Nuxeo Platform dispose d'un exécuteur de lignes de commandes et il suffit donc d'enregistrer une nouvelle commande avec le XML suivant

<extension point="command" target="org.nuxeo.ecm.platform.commandline.executor.service.CommandLineExecutorComponent">
  <command enabled="true" name="ps2pdf">
        <commandLine>gs</commandLine>
       <winCommand>gswin64c</winCommand>
       <parameterString>-dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=#{targetFilePath} #{sourceFilePath}</parameterString>
        <installationDirective>You need to install GhostScript.</installationDirective>
  </command>
</extension>

Une fois terminé, il est possible d'enregistrer un convertisseur utilisant la commande précédente.

<extension point="converter" target="org.nuxeo.ecm.core.convert.service.ConversionServiceImpl">

  <converter class="org.nuxeo.ecm.platform.convert.plugins.CommandLineConverter" name=”psi2pdf">
    <sourceMimeType>application/postscript</sourceMimeType>
    <sourceMimeType>application/eps</sourceMimeType>
    <sourceMimeType>application/x-eps</sourceMimeType>
    <sourceMimeType>image/eps</sourceMimeType>
    <sourceMimeType>image/x-eps</sourceMimeType>
    <sourceMimeType>application/illustrator</sourceMimeType>
    <destinationMimeType>application/pdf</destinationMimeType>
    <parameters>
        <parameter name="CommandLineName">ps2pdf</parameter>
    </parameters>
  </converter>
 </extension>

Enfin, nous allons utiliser une fonctionnalité peu connue du service de conversion de Nuxeo Platform, qui est sa capacité à enchaîner les sous-convertisseurs. Il faut ainsi enchaîner le convertisseur défini précédemment avec le convertisseur pdf2text enregistré dans Nuxeo Platform.

<extension point="converter" target="org.nuxeo.ecm.core.convert.service.ConversionServiceImpl"> 
 <converter name="ps2pdf2text">
      <sourceMimeType>application/postscript</sourceMimeType>
      <sourceMimeType>application/eps</sourceMimeType>
      <sourceMimeType>application/x-eps</sourceMimeType>
      <sourceMimeType>image/eps</sourceMimeType>
      <sourceMimeType>image/x-eps</sourceMimeType>
      <sourceMimeType>application/illustrator</sourceMimeType>
      <destinationMimeType>text/plain</destinationMimeType>
      <conversionSteps>
        <subconverter>ps2pdf</subconverter>
        <subconverter>pdf2text</subconverter>
      </conversionSteps>
  </converter>
</extension>

Comment la plateforme sait-elle qu'elle doit indexer le texte présent dans les fichiers ? Elle n'a besoin que d'un convertisseur pour le fichier source de type MIME qui renvoie des données textuelles "text/plain". La plateforme l'utilise ensuite pour extraire le texte et l'indexer.


Text content
Recherche de texte

Et c'est tout pour la configuration. Votre application peut désormais indexer le texte présent dans les fichiers Adobe Illustrator et Encapsulated PostScript !