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();
|
}
|
}
|
|
}
|