package com.ots.project.tool.libreoffice; import org.jodconverter.core.office.OfficeManager; import org.jodconverter.local.office.LocalOfficeManager; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import javax.annotation.PostConstruct; /** * @version 1.0 * @Author linzhijie * @Description //TODO * @Date 2023/02/14 0:23 */ @Component public class OfficeManagerInstance { private static OfficeManager INSTANCE = null; @Value("${jodconverter.local.office-home}") private String prilibreOfficeHome; @Value("${jodconverter.local.portNumbers}") private String portNumbers; @Value("${libreOffice.taskExecutionTimeoutMinutes:5}") private String taskExecutionTimeoutMinutes; @Value("${libreOffice.taskQueueTimeoutHours:1}") private String taskQueueTimeoutHours; public static synchronized void start() { officeManagerStart(); } @PostConstruct private void init() { try { String[] portNum = portNumbers.split(","); int[] ports = new int[portNum.length]; for (int i = 0; i < portNum.length; i++) { ports[i] = Integer.parseInt(portNum[i]); } LocalOfficeManager.Builder builder = LocalOfficeManager.builder().install(); builder.officeHome(prilibreOfficeHome); builder.portNumbers(ports); // minute builder.taskExecutionTimeout(Long.valueOf(Integer.parseInt(taskExecutionTimeoutMinutes) * 1000 * 60)); // hour builder.taskQueueTimeout(Long.valueOf(Integer.parseInt(taskQueueTimeoutHours) * 1000 * 60 * 60)); INSTANCE = builder.build(); officeManagerStart(); } catch (Exception e) { e.printStackTrace(); } } private static void officeManagerStart() { if (INSTANCE.isRunning()) { return; } try { INSTANCE.start(); } catch (Exception e) { e.printStackTrace(); } } }