Technical blog

A more subdued subheader

Conversion de documents Microsoft Office à l'aide d'ARender

  • Marye
  • 22 janv., 2013

Ce billet présente un exemple d’utilisation d’ARender pour la conversion d’un document Word en PDF. Pour cela, nous allons voir comment exploiter l’API du serveur de rendition d’ARender qui est chargé de convertir les documents en PDF et/ou de les transformer en images.

1. Configuration

1.1 Configuration Maven

Avant tout, il s’agit d’importer les dépendances à ARender qui sont nécessaires pour cet exemple. Dans le cas d’un projet Maven, ajouter au fichier pom.xml :

<dependency>
       <groupId>com.arondor.arender</groupId>
       <artifactId>arondor-arender-common</artifactId>
       <version>2.0.3</version>
       <type>jar</type>
       <scope>compile</scope>
</dependency>
<dependency>
       <groupId>com.arondor.arender</groupId>
       <artifactId>arondor-arender-client-javarmi</artifactId>
       <version>2.0.3</version>
       <type>jar</type>
       <scope>compile</scope>
</dependency>

1.2 Configuration du DocumentService

Cette première étape consiste en la définition des informations essentielles pour l’utilisation de l’API. L’objet DocumentService encapsule la communication avec le serveur de rendition (qui peut être distant) effectuée grâce au protocole RMI.

ClientDocumentService clientDocumentService = new ClientDocumentService();
clientDocumentService.setRemoteTarget("rmi://localhost:1789/JavaRMIDocumentService");
clientDocumentService.setMaxTries(3);

2. Chargement du document

Le chargement du document sur le serveur de rendition est réalisé grâce à l’appel de la méthode loadDocument(DocumentAccessor documentAccessor) de l’interface DocumentService (que l’objet ClientDocumentService implémente). Le paramètre fourni à cette méthode, le DocumentAccessor, est un objet permettant au serveur d’accéder à un document (i.e son contenu, ses méta-données…). Dans cet exemple, le document en question est stocké sur le système de fichier local : nous instancions donc un DocumentAccessorByteArray grâce au chemin du document à convertir.

String fileToConvertPath = "C:\\ARender_User\\Documents\\myWordDocument.docx";
FileInputStream fileInputStream = new FileInputStream(fileToConvertPath);
DocumentAccessor documentAccessor = new DocumentAccessorByteArray(fileInputStream);
DocumentId documentId = clientDocumentService.loadDocument(documentAccessor);

Nota: Différentes implémentations du DocumentAccessor sont fournies nativement par ARender. Mais cette interface reste un point d’extension d’ARender qui en lui fournissant un accesseur approprié peut être capable de récupérer un document dans n’importe quel système d’information.

3. Récupération du document converti

Au sein d’un serveur de rendition, un document peut se trouver dans différents états. Dans cet exemple, les états qui nous intéressent sont :

  • Initial : Correspond au document dans son état initial, i.e tel qu’il a été chargé soit dans son format initial
  • Rendered : Correspond au document rendered par le serveur de rendition. Pour cela, le document a été converti en PDF. C’est donc celui que nous souhaitons récupérer

Ainsi différents accesseurs, implémentant l’interface DocumentAccessor, sont stockés permettant d’accéder à ces différents états. L’énumération DocumentAccessorSelector permet ainsi de récupérer le DocumentAccessor approprié.

DocumentAccessor renderedDocumentAccessor = clientDocumentService.getDocumentAccessor(documentId,DocumentAccessorSelector.RENDERED);
InputStream pdfDocumentInputStream = renderedDocumentAccessor.getInputStream();

Conclusion

Pour récapituler, nous avons dans ce court exemple montré comment utiliser l’API d’ARender afin de convertir notre document myWordDocument.docx en PDF.