Conversion de documents avec Collabora Online

JODConverter (pour le convertisseur Java OpenDocument) est un outil largement utilisé qui automatise les conversions de documents. unoconv est un outil écrit en Python et dispose d'un but similaire. Vous pouvez lire ici les détails du pourquoi vous devriez considérer le passage au convertisseur JODConverter du backend de Collabora Online voire d'envisager complètement le passage à Collabora Online.

Les formats pris en charge par ces outils sont l'OpenDocument, le PDF, l'HTML, les formats Microsoft Office (DOC/DOCX/RTF, XLS/XLSX, PPT/PPTX) et bien d'autres. Ils peuvent être utilisés en tant que bibliothèque Java/Python, en tant qu'outil en ligne de commande ou en tant qu'application web. Les versions plus récentes disposent d'un backend de conversion JOD qui utilise LibreOffice Online à la place d'utiliser LibreOffice directement.

Quels sont les avantages d'utiliser Collabora Online en tant qu'outil de conversion de documents ?

  • Perfomance améliorée comparée à une approche nécessitant un démarrage, un processus de conversion et un arrêt.
  • L'API REST est plus fiable que de devoir démarrer LibreOffice en mode serveur et communiquer via UNO en appel de procédure distantes.
  • Plus sécurisé, car la conversion s'effectue dans un environnement isolé et cette approche en couches permet de protéger votre infrastrucutre (des niveaux les plus hauts à ceux plus bas) :
    • C'est facile à utiliser via une machine virtuelle ou un conteneur Docker
    • Isolation des données du document dans des chroots créés par document
    • Seccomp-bpf : dans chaque chroot, presqu'aucun appel système n'est autorisé
    • Dans le chroot, le système de fichiers est vraiment réduit au minimum : pas de shell, etc.

Avantages Convertisseur JOD unoconv Collabora Online
Beaucoup de formats de fichiers Oui Oui Oui
Coût de démarrage Non Non Oui
API REST standard Non Non Oui
Isolation aisée via une VM ou Docker Non Non Oui
Isolation de documents Non Non Oui
Filtre d'appels systèmes Non Non Oui
Système de fichiers réduit Non Non Oui

Ceci veut dire que vous bénéficiez à la fois d'une performance accrue mais également d'une meilleure sécurité lors de la conversion de vos documents à l'aide de Collabora Online.

Performance

Le premier graphique montre comment Collabora Online se comporte comparé au convertisseur JOD du backend de LibreOffice et à unoconv lorsqu'on prend en compte le multi-thread et qu'on mesure le nombre de documents convertis en une seconde :

Vous voulez installer et essayer CODE ?

Obtenez le ici !

Vous pouvez voir que Collabora Online ne dispose pas seulement de performances accrues, mais se déploie mieux à grande échelle vu qu'il utilise plus de threads. (Nous comparons les appels à curl pour Collabora Online avec les appels à java pour le convertisseur JOD et les appels à python pour unoconv.)

Compilation

Si vous souhaitez essayer le convertisseur JOD avec le backend Collabora Online :

git clone https://github.com/sbraconnier/jodconverter
cd jodconverter
sh gradlew build -x integTest distZip
cd build/distributions
unzip jodconverter-cli-*.zip
cd jodconverter-cli-*/

Exécution

  • Exemple :
    bin/jodconverter-cli -c https://localhost:9980/ -f pdf README.txt
  • Le format d'entrée est détecté automatiquement, -f détermine le format de sortie.
  • L'URL est l'URL de votre serveur Collabora Online, c'est la valeur qui débute par https:// du guide d'installation.

Utiliser l'API REST de Collabora Online directement

  • Dans le cas où vous n'utiliseriez pas déjà le convertisseur JOD, vous pouvez utiliser l'API REST directement, par exemple :
    curl -F "data=@test.txt" https://localhost:9980/lool/convert-to/pdf > out.pdf
    curl -F "data=@test.txt" https://localhost:9980/lool/convert-to/png > out.png
  • Vous pouvez aussi utiliser les formulaires HTML pour spécifier le format, par exemple :
    curl -F "data=@test.txt" -F "format=pdf" https://localhost:9980/lool/convert-to > out.pdf

Formats pris en charge

Formats d'entrée pris en charge :

Documents Formats d'entrée
Documents Writer sxw (lecture seule), odt et fodt (lecture-écriture)
Documents Calc sxc (lecture seule), ods et fods (lecture-écriture)
Documents Impress sxi (lecture seule), odp et fodp (lecture-écriture)
Documents Draw sxd (lecture seule), odg et fodg (lecture-écriture)
Documents de graphiques odc (lecture-écriture)
Documents maître de texte sxg (lecture), odm (lecture-écriture)
Modèles de documents texte stw (lecture), ott (lecture-écriture)
Modèles de documents maîtres Writer otm (lecture-écriture)
Modèles de documents de feuilles de calcul stc (lecture), ots (lecture-écriture)
Modèles de documents de présentation sti (lecture), otp (lecture-écriture)
Modèles de documents de dessin std (lecture), otg (lecture-écriture)
Documents Base odb (lecture-écriture)
Extensions oxt (lecture-écriture)
MS Word doc et dot (lecture-écriture)
MS Excel xls (lecture-écriture)
MS PowerPoint ppt (lecture-écriture)
Traitement de texte OOXML docx et docm (lecture-écriture), dotx et dotm (lecture)
Feuille de calcul OOXML xltx et xltm (lecture), xlsx, xlsb et xlsm (lecture-écriture)
Présentation OOXML pptx, pptm, potx, potm (lecture-écriture)
Autres wpd, pdb, hwp, wps, wri, wk1, cgm, dxf, emf, wmf, cdr, vsd, pub, vss, lrf, gnumeric, mw, numbers, p65, pdf, jpg, jpeg, gif, png, etc. (lecture-écriture)
Autres dif, slk, csv, dbf, oth, rtf, txt, etc. (lecture-écriture)

Formats de sortie pris en charge pour Writer/Calc/Impress :

Documents Formats de sortie
Writer doc pour MS Word 97, docm pour MS Word 2007 XML VBA, docx pour MS Word 2007 XML, fodt pour OpenDocument Text Flat XML, html pour HTML (StarWriter), odt pour writer8, ott pour writer8_template, pdf pour writer_pdf_Export, rtf pour Rich Text Format, txt pour Text, xhtml pour XHTML Writer File, png pour writer_png_Export
Calc csv pour Text – txt – csv (StarCalc), fods pour OpenDocument Spreadsheet Flat XML, html pour HTML (StarCalc), ods pour calc8, ots pour calc8_template, pdf pour calc_pdf_Export, xhtml pour XHTML Calc File, xls pour MS Excel 97, xlsm pour Calc MS Excel 2007 VBA XML, xlsx pour Calc MS Excel 2007 XML, png pour calc_png_Export
Impress fodp pour OpenDocument Presentation Flat XML, html pour impress_html_Export, odg pour impress8_draw, odp pour impress8, otp pour impress8_template, pdf pour impress_pdf_Export, potm pour Impress MS PowerPoint 2007 XML Template, pot pour MS PowerPoint 97 Vorlage, pptm pour Impress MS PowerPoint 2007 XML VBA, pptx pour Impress MS PowerPoint 2007 XML, pps pour MS PowerPoint 97 Autoplay, ppt pour MS PowerPoint 97, svg pour impress_svg_Export, swf pour impress_flash_Export, xhtml pour XHTML Impress File, png pour impress_png_Export
Draw fodg pour draw_ODG_FlatXML, html pour draw_html_Export, odg pour draw8, pdf pour draw_pdf_Export, svg pour draw_svg_Export, swf pour draw_flash_Export, xhtml pour XHTML Draw File, png pour draw_png_Export

Prise en charge directe comme certificat racine au sein de JAVA

Ceci est seulement nécessaire si vous disposez d'un certificat auto-signé pour votre installation de Collabora Online.

  • récupérer le certificat :
    openssl s_client -connect localhost:9980 2>&1 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p'
  • collez la réponse dans un fichier nommé certfile.txt
  • importez-le dans le Java key store (le mot de passe est changeit par défaut) :
    keytool -importcert -keystore $JAVA_HOME/jre/lib/security/cacerts -alias mycert -file certfile.txt

En fonction de la valeur de $JAVA_HOME, il se peut que vous deviez aussi exécuter keytool avec des privilèges root/Administrateur.

Conclusions

  • Vous utilisez déjà le convertiseur JOD ? – considérez le passage au backend de Collabora Online, plus sûr.
  • Vous utilisez Collabora Online via le convertisseur JOD ou via unoconv? – considérez un passage à notre API de conversion REST (exemple de code Java, exemple de code Python).
  • Vous utilisez un autre outil ? – évaluez si la solution standard de Collabora Online respecte vos attentes en terme de performance de besoins de conversion.

Vous avez besoin de support ou d'aide pour intégrer la conversion de documents dans votre produit ? N'hésitez pas à nous envoyer un e-mail :

Contactez-nous !