[JAVA] A vous qui regrettez que la conversion de JODConverter + LibreOffice soit lente

JODConverter

--Une bibliothèque qui convertit le format des fichiers Office en utilisant Apache OpenOffice ou LibreOffice --Diverses conversions telles que Excel → PDF sont possibles


L'exemple de code trouvé dans les rues a le flux suivant. Cependant, lorsque le processus suivant est exécuté, LibreOffice est démarré et terminé en tant que processus externe, le processus prend donc du temps. Par exemple, il n'est pas approprié comme processus à exécuter pour chaque requête d'une application Web.

OfficeManager officeManager = LocalOfficeManager.make();
officeManager.start();
//・ ・ ・
//Conversion de format (omis)
//・ ・ ・
officeManager.stop();

La méthode officiellement recommandée consiste à démarrer () un seul Office Manager au démarrage de l'application Web, à le partager avec toutes les demandes et à stop () à la fin de l'application Web. https://github.com/sbraconnier/jodconverter/wiki/Web-Application


ExternalOfficeManager peut être efficace tel quel.

ExternalOfficeManager (JODConverter Local 4.3.0 API) https://www.javadoc.io/static/org.jodconverter/jodconverter-local/4.3.0/org/jodconverter/local/office/ExternalOfficeManager.html

[1] Démarrez LibreOffice en spécifiant l'argument comme suit.

soffice.exe -accept="socket,host=127.0.0.1,port=2002;urp;"

[2] Lors de la conversion du format, utilisez ExternalOfficeManager pour vous connecter au LibreOffice démarré. Ce processus peut être exécuté assez rapidement.

OfficeManager officeManager = ExternalOfficeManager.make();
officeManager.start();
//Omission
officeManager.stop();

Cependant, comme décrit dans Javadoc, JOD Converter ne redémarre pas LibreOffice même si LibreOffice se termine anormalement.

Since this implementation does not manage the Office process, it does not support auto-restarting the process if it exits unexpectedly.

Recommended Posts

A vous qui regrettez que la conversion de JODConverter + LibreOffice soit lente
Un mémo du programme que vous pouvez réaliser que la probabilité de lancer des dés est d'environ 1/6
A vous qui deviendrez désormais le leader de l'équipe de développement-Standardisation minimum-
Quand le survol d'Eclipse est difficile à voir
Supprimez complètement le fichier de migration que vous n'avez pas réussi à supprimer
Puisque la lecture de JdbcCodeList de TERASOLUNA est lente, j'ai essayé d'enregistrer plusieurs à la fois.
[Rails] Comment enregistrer temporairement l'URL de demande d'un utilisateur qui n'est pas connecté et revenir à cette URL après la connexion
Passez en revue les connaissances de base du rubis souvent oubliées
[Java] Code difficile à remarquer mais terriblement lent
[PostgreSQL] L'histoire selon laquelle vous devez couper la session correctement
Une collection de modèles dont vous voulez être conscient pour ne pas compliquer le code
Comment résoudre le problème de non-sortie du journal de connexion lorsque l'application Web est arrêtée
[Java débutant] Conversion d'une chaîne de caractères en valeur numérique - Quelle est la méthode parseInt de la classe Integer? ~
L'histoire de Collectors.groupingBy que je veux garder pour la postérité
Vous voulez savoir ce que Ruby n est la puissance de 2? (Jugement de puissance de 2)
La milliseconde définie dans /lib/calendars.properties de Java jre est UTC
Comment identifier le chemin sur lequel il est facile de se tromper
Extension qui exécute de manière asynchrone la fermeture transmise à l'initialiseur de Combine.Future
La version d'Elasticsearch que vous utilisez est-elle compatible avec Java 11?
Créer une ArrayList qui vous permet de lancer et de récupérer les coordonnées d'un plan bidimensionnel
[RSpec] Lorsque vous souhaitez utiliser la variable d'instance du contrôleur dans le test [attribuer n'est pas recommandé]
À propos du sujet qui a tendance à être confondu avec ARG de Dockerfile qui est une construction en plusieurs étapes
Résumé des astuces (Rails) que vous pouvez utiliser tout le temps car vous comprenez qu'il s'agit d'une remise jQuery