Проблемы при подключении OpenOffice и при формировании отчета в pdf из xlsx

Доброго времени суток!

Возникла необходимость в использовании отчетов. Генерация производится с помощью шаблона, определяемого классом, и apache poi, формат вывода - xlsx.
В отчете имеются ячейки с многострочным текстом (несколько строк в одной ячейки с переносом по строкам).
При открытии полученного отчета средствами Excel - все прекрасно (ячейки разворачиваются по количеству строк в тексте).

Суть проблемы №1:
Необходимо вывести этот же отчет в формате pdf, для чего был использован следующий подход:

ByteArrayOutputStream outputStream = new ByteArrayOutputStream();

OfficeIntegrationAPI officeIntegration = new OfficeIntegration(reportingConfig.getOpenOfficePath(),
        8100, 8101, 8102, 8103);
DocumentConverter documentConverter = new DocumentConverterImpl(officeIntegration);
documentConverter.convertToPdf(DocumentConverter.FileType.SPREADSHEET, bytes, outputStream);

return outputStream.toByteArray();

В результате вывода получаем файл, где ячейки с многострочным текстом “сжались” в одну строку и текст наложился друг на друга и стал нечитаемым.

Возможная причина:
Если выкаченный отчет в формате .xlsx открыть средствами LibreOffice Calc, то многострочные ячейки действительно “сворачиваются” в одну, в следствие чего возможно неправильная конвертация.

Если же открыть этот же файл средствами OpenOffice Calc, то все ок, ячейки расширяются под высоту текста.
image

В следствие чего было решено попробовать поставить на безинтерфейсный linux-сервер вместо libreOffice (который работал, но не совсем корректно в плане отображения многострочных ячеек) openOffice.

Проблема №2:
Запустить формирование пдф так и не получилось, в логе следующие ошибки:

Caused by: com.haulmont.yarg.formatters.impl.doc.connector.BootstrapException: com.haulmont.yarg.formatters.impl.doc.connector.BootstrapException: com.sun.star.connection.NoConnectException: java.net.ConnectException: Connection refused (Connection refused)
	at com.haulmont.yarg.formatters.impl.doc.connector.BootstrapConnector.connect(BootstrapConnector.java:130) ~[shared/:na]
	at com.haulmont.yarg.formatters.impl.doc.connector.BootstrapSocketConnector.connect(BootstrapSocketConnector.java:47) ~[shared/:na]
	at com.haulmont.yarg.formatters.impl.doc.connector.OfficeConnection.open(OfficeConnection.java:60) ~[shared/:na]
	... 5 common frames omitted
Caused by: com.haulmont.yarg.formatters.impl.doc.connector.BootstrapException: com.sun.star.connection.NoConnectException: java.net.ConnectException: Connection refused (Connection refused)
	at com.haulmont.yarg.formatters.impl.doc.connector.BootstrapConnector.connect(BootstrapConnector.java:122) ~[shared/:na]
	... 7 common frames omitted
Caused by: com.sun.star.connection.NoConnectException: java.net.ConnectException: Connection refused (Connection refused)
	at com.sun.star.lib.connections.socket.socketConnector.connect(socketConnector.java:166) ~[shared/:na]
	at com.sun.star.comp.connections.Connector.connect(Connector.java:141) ~[shared/:na]
	at com.sun.star.comp.urlresolver.UrlResolver$_UrlResolver.resolve(UrlResolver.java:128) ~[shared/:na]
	at com.haulmont.yarg.formatters.impl.doc.connector.BootstrapConnector.getRemoteContext(BootstrapConnector.java:194) ~[shared/:na]
	at com.haulmont.yarg.formatters.impl.doc.connector.BootstrapConnector.connect(BootstrapConnector.java:116) ~[shared/:na]
	... 7 common frames omitted
2020-03-04 16:27:19.968 INFO  [OfficeIntegration-1] com.haulmont.yarg.formatters.impl.doc.connector.OOServer - OOServer is killing office instance with port 8101
2020-03-04 16:27:19.981 INFO  [OfficeIntegration-1] com.haulmont.yarg.formatters.impl.doc.connector.JavaProcessManager - Linux office process manager is going to kill following processes []
2020-03-04 16:27:19.988 ERROR [qtp869601985-20/tmkarm-core/admin] com.haulmont.cuba.core.sys.ServiceInterceptor - Exception: 
java.lang.RuntimeException: com.haulmont.yarg.exception.OpenOfficeException: Unable to create Open office components.
	at com.haulmont.yarg.formatters.impl.doc.connector.OfficeIntegration.runTaskWithTimeout(OfficeIntegration.java:96) ~[shared/:na]
	at com.haulmont.yarg.formatters.impl.xls.DocumentConverterImpl.convertOnes(DocumentConverterImpl.java:91) ~[shared/:na]
	at com.haulmont.yarg.formatters.impl.xls.DocumentConverterImpl.convertWithRetry(DocumentConverterImpl.java:69) ~[shared/:na]
	at com.haulmont.yarg.formatters.impl.xls.DocumentConverterImpl.convertToPdf(DocumentConverterImpl.java:48) ~[shared/:na]
	at ru.skblab.tmkoper.reports.ReportToPdfConverterImpl.convertXlsReportBytesToPdf(ReportToPdfConverterImpl.java:33) ~[classes/:na]
	at ru.skblab.tmkoper.service.ScoreVerificationPdfReportGenerateServiceBean.getReportByteArray(ScoreVerificationPdfReportGenerateServiceBean.java:33) ~[classes/:na]
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na]
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
	at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na]
	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:343) ~[shared/:na]
	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:198) ~[shared/:na]
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) ~[shared/:na]
	at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:88) ~[shared/:na]
	at com.haulmont.cuba.core.sys.ServiceInterceptor.aroundInvoke(ServiceInterceptor.java:116) ~[classes/:na]
	at jdk.internal.reflect.GeneratedMethodAccessor95.invoke(Unknown Source) ~[na:na]
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
	at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na]
	at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:644) ~[shared/:na]
	at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:633) ~[shared/:na]
	at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:70) ~[shared/:na]
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:175) ~[shared/:na]
	at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:93) ~[shared/:na]
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[shared/:na]
	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212) ~[shared/:na]
	at com.sun.proxy.$Proxy144.getReportByteArray(Unknown Source) ~[na:na]
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na]
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
	at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na]
	at com.haulmont.cuba.core.sys.remoting.LocalServiceInvokerImpl.invoke(LocalServiceInvokerImpl.java:94) ~[classes/:na]
	at com.haulmont.cuba.web.sys.remoting.LocalServiceProxy$LocalServiceInvocationHandler.invoke(LocalServiceProxy.java:154) ~[na:na]
	at com.sun.proxy.$Proxy258.getReportByteArray(Unknown Source) ~[na:na]
	at ru.skblab.tmkoper.web.screens.orgverification.OrgVerificationEdit.onReportPopupBtnPdfVerificationReport(OrgVerificationEdit.java:105) ~[na:na]
	at com.haulmont.bali.events.EventHub.publish(EventHub.java:170) ~[classes/:na]
	at com.haulmont.cuba.gui.components.actions.BaseAction.actionPerform(BaseAction.java:221) ~[na:na]
	at com.haulmont.cuba.web.gui.components.WebPopupButton.lambda$setPopupButtonAction$1(WebPopupButton.java:328) ~[na:na]
	at com.haulmont.cuba.web.widgets.CubaButton.fireClick(CubaButton.java:76) ~[na:na]
	at com.vaadin.ui.Button$1.click(Button.java:57) ~[shared/:na]
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na]
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
	at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na]
	at com.vaadin.server.ServerRpcManager.applyInvocation(ServerRpcManager.java:153) ~[shared/:na]
	at com.vaadin.server.ServerRpcManager.applyInvocation(ServerRpcManager.java:115) ~[shared/:na]
	at com.vaadin.server.communication.ServerRpcHandler.handleInvocation(ServerRpcHandler.java:431) ~[shared/:na]
	at com.vaadin.server.communication.ServerRpcHandler.handleInvocations(ServerRpcHandler.java:396) ~[shared/:na]
	at com.vaadin.server.communication.ServerRpcHandler.handleRpc(ServerRpcHandler.java:260) ~[shared/:na]
	at com.vaadin.server.communication.UidlRequestHandler.synchronizedHandleRequest(UidlRequestHandler.java:82) ~[shared/:na]
	at com.vaadin.server.SynchronizedRequestHandler.handleRequest(SynchronizedRequestHandler.java:40) ~[shared/:na]
	at com.vaadin.server.VaadinService.handleRequest(VaadinService.java:1577) ~[shared/:na]
	at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:425) ~[shared/:na]
	at com.haulmont.cuba.web.sys.CubaApplicationServlet.serviceAppRequest(CubaApplicationServlet.java:329) ~[na:na]
	at com.haulmont.cuba.web.sys.CubaApplicationServlet.service(CubaApplicationServlet.java:215) ~[na:na]
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) ~[tmkarm.jar:na]
	at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:876) ~[tmkarm.jar:na]
	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1623) ~[tmkarm.jar:na]
	at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:107) ~[shared/:na]
	at org.springframework.web.filter.CompositeFilter.doFilter(CompositeFilter.java:73) ~[shared/:na]
	at com.haulmont.cuba.web.sys.CubaHttpFilter.doFilter(CubaHttpFilter.java:93) ~[na:na]
	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1610) ~[tmkarm.jar:na]
	at org.eclipse.jetty.websocket.server.WebSocketUpgradeFilter.doFilter(WebSocketUpgradeFilter.java:214) ~[tmkarm.jar:na]
	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1610) ~[tmkarm.jar:na]
	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:540) ~[tmkarm.jar:na]
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146) ~[tmkarm.jar:na]
	at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548) ~[tmkarm.jar:na]
	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132) ~[tmkarm.jar:na]
	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257) ~[tmkarm.jar:na]
	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1711) ~[tmkarm.jar:na]
	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255) ~[tmkarm.jar:na]
	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1347) ~[tmkarm.jar:na]
	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203) ~[tmkarm.jar:na]
	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:480) ~[tmkarm.jar:na]
	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1678) ~[tmkarm.jar:na]
	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201) ~[tmkarm.jar:na]
	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1249) ~[tmkarm.jar:na]
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144) ~[tmkarm.jar:na]
	at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:152) ~[tmkarm.jar:na]
	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132) ~[tmkarm.jar:na]
	at org.eclipse.jetty.server.Server.handle(Server.java:505) ~[tmkarm.jar:na]
	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:370) ~[tmkarm.jar:na]
	at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:267) ~[tmkarm.jar:na]
	at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305) ~[tmkarm.jar:na]
	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103) ~[tmkarm.jar:na]
	at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117) ~[tmkarm.jar:na]
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333) ~[tmkarm.jar:na]
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310) ~[tmkarm.jar:na]
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168) ~[tmkarm.jar:na]
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126) ~[tmkarm.jar:na]
	at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366) ~[tmkarm.jar:na]
	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:781) ~[tmkarm.jar:na]
	at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:917) ~[tmkarm.jar:na]
	at java.base/java.lang.Thread.run(Thread.java:834) ~[na:na]
Caused by: com.haulmont.yarg.exception.OpenOfficeException: Unable to create Open office components.
	at com.haulmont.yarg.formatters.impl.doc.connector.OfficeConnection.open(OfficeConnection.java:78) ~[shared/:na]
	at com.haulmont.yarg.formatters.impl.doc.connector.OfficeIntegration.lambda$runTaskWithTimeout$0(OfficeIntegration.java:82) ~[shared/:na]
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[na:na]
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[na:na]
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[na:na]
	... 1 common frames omitted
Caused by: com.haulmont.yarg.formatters.impl.doc.connector.BootstrapException: com.haulmont.yarg.formatters.impl.doc.connector.BootstrapException: com.sun.star.connection.NoConnectException: java.net.ConnectException: Connection refused (Connection refused)
	at com.haulmont.yarg.formatters.impl.doc.connector.BootstrapConnector.connect(BootstrapConnector.java:130) ~[shared/:na]
	at com.haulmont.yarg.formatters.impl.doc.connector.BootstrapSocketConnector.connect(BootstrapSocketConnector.java:47) ~[shared/:na]
	at com.haulmont.yarg.formatters.impl.doc.connector.OfficeConnection.open(OfficeConnection.java:60) ~[shared/:na]
	... 5 common frames omitted
Caused by: com.haulmont.yarg.formatters.impl.doc.connector.BootstrapException: com.sun.star.connection.NoConnectException: java.net.ConnectException: Connection refused (Connection refused)
	at com.haulmont.yarg.formatters.impl.doc.connector.BootstrapConnector.connect(BootstrapConnector.java:122) ~[shared/:na]
	... 7 common frames omitted
Caused by: com.sun.star.connection.NoConnectException: java.net.ConnectException: Connection refused (Connection refused)
	at com.sun.star.lib.connections.socket.socketConnector.connect(socketConnector.java:166) ~[shared/:na]
	at com.sun.star.comp.connections.Connector.connect(Connector.java:141) ~[shared/:na]
	at com.sun.star.comp.urlresolver.UrlResolver$_UrlResolver.resolve(UrlResolver.java:128) ~[shared/:na]
	at com.haulmont.yarg.formatters.impl.doc.connector.BootstrapConnector.getRemoteContext(BootstrapConnector.java:194) ~[shared/:na]
	at com.haulmont.yarg.formatters.impl.doc.connector.BootstrapConnector.connect(BootstrapConnector.java:116) ~[shared/:na]
	... 7 common frames omitted
2020-03-04 16:27:19.996 ERROR [qtp869601985-20/tmkarm/admin] com.haulmont.cuba.web.log.AppLog - Exception in com.haulmont.cuba.web.widgets.CubaButton: 
com.vaadin.server.ServerRpcManager$RpcInvocationException: Unable to invoke method click in com.vaadin.shared.ui.button.ButtonServerRpc
	at com.vaadin.server.ServerRpcManager.applyInvocation(ServerRpcManager.java:157) ~[shared/:na]
	at com.vaadin.server.ServerRpcManager.applyInvocation(ServerRpcManager.java:115) ~[shared/:na]
	at com.vaadin.server.communication.ServerRpcHandler.handleInvocation(ServerRpcHandler.java:431) ~[shared/:na]
	at com.vaadin.server.communication.ServerRpcHandler.handleInvocations(ServerRpcHandler.java:396) ~[shared/:na]
	at com.vaadin.server.communication.ServerRpcHandler.handleRpc(ServerRpcHandler.java:260) ~[shared/:na]
	at com.vaadin.server.communication.UidlRequestHandler.synchronizedHandleRequest(UidlRequestHandler.java:82) ~[shared/:na]
	at com.vaadin.server.SynchronizedRequestHandler.handleRequest(SynchronizedRequestHandler.java:40) ~[shared/:na]
	at com.vaadin.server.VaadinService.handleRequest(VaadinService.java:1577) ~[shared/:na]
	at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:425) ~[shared/:na]
	at com.haulmont.cuba.web.sys.CubaApplicationServlet.serviceAppRequest(CubaApplicationServlet.java:329) ~[classes/:na]
	at com.haulmont.cuba.web.sys.CubaApplicationServlet.service(CubaApplicationServlet.java:215) ~[classes/:na]
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) ~[tmkarm.jar:na]
	at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:876) ~[tmkarm.jar:na]
	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1623) ~[tmkarm.jar:na]
	at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:107) ~[shared/:na]
	at org.springframework.web.filter.CompositeFilter.doFilter(CompositeFilter.java:73) ~[shared/:na]
	at com.haulmont.cuba.web.sys.CubaHttpFilter.doFilter(CubaHttpFilter.java:93) ~[classes/:na]
	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1610) ~[tmkarm.jar:na]
	at org.eclipse.jetty.websocket.server.WebSocketUpgradeFilter.doFilter(WebSocketUpgradeFilter.java:214) ~[tmkarm.jar:na]
	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1610) ~[tmkarm.jar:na]
	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:540) ~[tmkarm.jar:na]
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146) ~[tmkarm.jar:na]
	at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548) ~[tmkarm.jar:na]
	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132) ~[tmkarm.jar:na]
	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257) ~[tmkarm.jar:na]
	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1711) ~[tmkarm.jar:na]
	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255) ~[tmkarm.jar:na]
	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1347) ~[tmkarm.jar:na]
	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203) ~[tmkarm.jar:na]
	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:480) ~[tmkarm.jar:na]
	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1678) ~[tmkarm.jar:na]
	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201) ~[tmkarm.jar:na]
	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1249) ~[tmkarm.jar:na]
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144) ~[tmkarm.jar:na]
	at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:152) ~[tmkarm.jar:na]
	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132) ~[tmkarm.jar:na]
	at org.eclipse.jetty.server.Server.handle(Server.java:505) ~[tmkarm.jar:na]
	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:370) ~[tmkarm.jar:na]
	at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:267) ~[tmkarm.jar:na]
	at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305) ~[tmkarm.jar:na]
	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103) ~[tmkarm.jar:na]
	at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117) ~[tmkarm.jar:na]
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333) ~[tmkarm.jar:na]
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310) ~[tmkarm.jar:na]
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168) ~[tmkarm.jar:na]
	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126) ~[tmkarm.jar:na]
	at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366) ~[tmkarm.jar:na]
	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:781) ~[tmkarm.jar:na]
	at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:917) ~[tmkarm.jar:na]
	at java.base/java.lang.Thread.run(Thread.java:834) ~[na:na]
Caused by: java.lang.reflect.InvocationTargetException: null
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na]
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
	at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na]
	at com.vaadin.server.ServerRpcManager.applyInvocation(ServerRpcManager.java:153) ~[shared/:na]
	... 49 common frames omitted
Caused by: com.haulmont.cuba.core.global.RemoteException: java.net.ConnectException: Connection refused (Connection refused)
	at com.haulmont.cuba.core.sys.ServiceInterceptor.aroundInvoke(ServiceInterceptor.java:124) ~[na:na]
	at jdk.internal.reflect.GeneratedMethodAccessor95.invoke(Unknown Source) ~[na:na]
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
	at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na]
	at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:644) ~[shared/:na]
	at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:633) ~[shared/:na]
	at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:70) ~[shared/:na]
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:175) ~[shared/:na]
	at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:93) ~[shared/:na]
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[shared/:na]
	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212) ~[shared/:na]
	at com.sun.proxy.$Proxy144.getReportByteArray(Unknown Source) ~[na:na]
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na]
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
	at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na]
	at com.haulmont.cuba.core.sys.remoting.LocalServiceInvokerImpl.invoke(LocalServiceInvokerImpl.java:94) ~[na:na]
	at com.haulmont.cuba.web.sys.remoting.LocalServiceProxy$LocalServiceInvocationHandler.invoke(LocalServiceProxy.java:154) ~[classes/:na]
	at com.sun.proxy.$Proxy258.getReportByteArray(Unknown Source) ~[na:na]
	at ru.skblab.tmkoper.web.screens.orgverification.OrgVerificationEdit.onReportPopupBtnPdfVerificationReport(OrgVerificationEdit.java:105) ~[classes/:na]
	at com.haulmont.bali.events.EventHub.publish(EventHub.java:170) ~[classes/:na]
	at com.haulmont.cuba.gui.components.actions.BaseAction.actionPerform(BaseAction.java:221) ~[classes/:na]
	at com.haulmont.cuba.web.gui.components.WebPopupButton.lambda$setPopupButtonAction$1(WebPopupButton.java:328) ~[classes/:na]
	at com.haulmont.cuba.web.widgets.CubaButton.fireClick(CubaButton.java:76) ~[classes/:na]
	at com.vaadin.ui.Button$1.click(Button.java:57) ~[shared/:na]
	... 54 common frames omitted

Путь к офису проверяли, совпадает с фактическим.

По факту на сервер были установлены следующие пакеты OpenOffice (возможно, необходимо что-то еще!?):

openoffice-4.1.7-9800.x86_64.rpm 
openoffice-core07-4.1.7-9800.x86_64.rpm 
openoffice-core06-4.1.7-9800.x86_64.rpm 
openoffice-core05-4.1.7-9800.x86_64.rpm 
openoffice-core04-4.1.7-9800.x86_64.rpm 
openoffice-core03-4.1.7-9800.x86_64.rpm 
openoffice-core02-4.1.7-9800.x86_64.rpm 
openoffice-images-4.1.7-9800.x86_64.rpm 
openoffice-calc-4.1.7-9800.x86_64.rpm 
openoffice-core01-4.1.7-9800.x86_64.rpm 
openoffice-ure-4.1.7-9800.x86_64.rpm

Подскажите, как можно решить возникшие проблемы?

Здравствуйте,

Попробуйте вместо создания через конструктор

OfficeIntegrationAPI officeIntegration = new OfficeIntegration(reportingConfig.getOpenOfficePath(),
        8100, 8101, 8102, 8103);

использовать bean который конфигурирует office integration используя API:

OfficeIntegrationAPI officeIntegration = AppBeans.get("reporting_lib_OfficeIntegration")

Возможно это поможет.

К сожалению, ситуация не изменилась, ошибка сохранилась в том же виде.

А в логах кроме эксепшиона какие еще есть сообщения?
И если попробовать создать отчет XSLX c выводом с PDF сработает ли это?

Попробуйте на сервере проверить работу OpenOffice при помощи команды (возможно процесс офиса не запускается на сервере):

 strace -e trace=signal /usr/lib/libreoffice/program/soffice.bin --headless --accept="socket,host=localhost,port=8100;urp" --nologo --nolockcheck
  1. Лог прикладываю, я ничего интересного не заметила
    app.log (168.2 КБ)
  2. Не получается, полагаю, это связано с тем, что отчет формируется с помощью шаблона, определяемого классом, итоговый файл - книга xlsx и при попытке сделать вывод в формате pdf получаем:
    image
    image
  3. При выполнении указанной команды получаем:
strace -e trace=signal /opt/openoffice4/program/soffice.bin --headless --accept="socket,host=localhost,port=8100;urp" --nologo --nolockcheck
rt_sigaction(SIGRTMIN, {0x7f040f790790, [], SA_RESTORER|SA_SIGINFO, 0x7f040f7995d0}, NULL, 8) = 0
rt_sigaction(SIGRT_1, {0x7f040f790820, [], SA_RESTORER|SA_RESTART|SA_SIGINFO, 0x7f040f7995d0}, NULL, 8) = 0
rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0
rt_sigaction(SIGHUP, {0x7f04111e1d80, ~[RTMIN RT_1], SA_RESTORER|SA_RESTART, 0x7f040fe17340}, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGINT, {0x7f04111e1d80, ~[RTMIN RT_1], SA_RESTORER|SA_RESTART, 0x7f040fe17340}, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGQUIT, {0x7f04111e1d80, ~[RTMIN RT_1], SA_RESTORER|SA_RESTART, 0x7f040fe17340}, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGTRAP, {0x7f04111e1d80, ~[RTMIN RT_1], SA_RESTORER|SA_RESTART, 0x7f040fe17340}, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGABRT, {0x7f04111e1d80, ~[RTMIN RT_1], SA_RESTORER|SA_RESTART, 0x7f040fe17340}, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGFPE, {0x7f04111e1d80, ~[RTMIN RT_1], SA_RESTORER|SA_RESTART, 0x7f040fe17340}, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGBUS, {0x7f04111e1d80, ~[RTMIN RT_1], SA_RESTORER|SA_RESTART, 0x7f040fe17340}, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGSEGV, {0x7f04111e1d80, ~[RTMIN RT_1], SA_RESTORER|SA_RESTART, 0x7f040fe17340}, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGSYS, {0x7f04111e1d80, ~[RTMIN RT_1], SA_RESTORER|SA_RESTART, 0x7f040fe17340}, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGPIPE, {SIG_IGN, [], SA_RESTORER, 0x7f040fe17340}, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGALRM, {0x7f04111e1d80, ~[RTMIN RT_1], SA_RESTORER|SA_RESTART, 0x7f040fe17340}, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGTERM, {0x7f04111e1d80, ~[RTMIN RT_1], SA_RESTORER|SA_RESTART, 0x7f040fe17340}, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGPWR, {0x7f04111e1d80, ~[RTMIN RT_1], SA_RESTORER|SA_RESTART, 0x7f040fe17340}, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGWINCH, {0x7f04111e1d80, ~[RTMIN RT_1], SA_RESTORER|SA_RESTART, 0x7f040fe17340}, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGURG, {0x7f04111e1d80, ~[RTMIN RT_1], SA_RESTORER|SA_RESTART, 0x7f040fe17340}, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGIO, {0x7f04111e1d80, ~[RTMIN RT_1], SA_RESTORER|SA_RESTART, 0x7f040fe17340}, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGVTALRM, {0x7f04111e1d80, ~[RTMIN RT_1], SA_RESTORER|SA_RESTART, 0x7f040fe17340}, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGXCPU, {0x7f04111e1d80, ~[RTMIN RT_1], SA_RESTORER|SA_RESTART, 0x7f040fe17340}, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGXFSZ, {0x7f04111e1d80, ~[RTMIN RT_1], SA_RESTORER|SA_RESTART, 0x7f040fe17340}, {SIG_DFL, [], 0}, 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8= 0
+++ exited with 77 +++

Проблема с Connection refused была решена путем установки полного комплекта пакетов OpenOffice (видимо, каких-то пакетов для полноценной работы не хватило все же) и удалением LibreOffice.

Но хотелось бы знать, можно ли как-то решить проблему с некорректной конвертацией из LibreOffice (проблема №1 из исходного описания проблемы, пример приложен в виде скрина)

Думаю, что проблему 1 не получится решить, поскольку это особенности реализации LibreOffice.
Но касательно POI стоит еще глянуть, как в нем реализована поддержка multiline cell. Возможно некоторые манипуляции нужно провести с исходным xlsx отчетом.
Например (https://stackoverflow.com/questions/11428274/multiline-text-in-excel-cells):

 CellStyle cs = wb.createCellStyle();
 cs.setWrapText(true);
 cell.setCellStyle(cs);
1 симпатия

WrapText установлен, но в случае с LibreOffice это не помогает, к сожалению, хотя Excel и OpenOffice открывают документ корректно.
Спасибо за помощь!

Похожая ситуация с неправильным отображением высоты ячеек была, когда в ячейке добавлено множество пробелов. MS Excel отображает такие документы, не так как OO.

Одно из решений - написать свой обработчик и зарегистрировать его для xls/xlsx:

thesis.preview.converter.xls=com.xxx.preview.converters.CustomXlsOpenOfficePdfConverter
thesis.preview.converter.xlsx=com.xxx.preview.converters.CustomXlsOpenOfficePdfConverter

@SuppressWarnings("unused")
public class CustomXlsOpenOfficePdfConverter extends XlsOpenOfficePdfConverter {

    private static final Logger LOGGER = LoggerFactory.getLogger(CustomXlsOpenOfficePdfConverter.class);

    public CustomXlsOpenOfficePdfConverter(FileDescriptor file) {
        super(file);
    }

    @Override
    protected void modifyDocument(XComponent document) {
        super.modifyDocument(document);

        XSpreadsheetDocument spreadsheetDocument = UnoRuntime.queryInterface(XSpreadsheetDocument.class, document);
        XSpreadsheets spreadsheets = spreadsheetDocument.getSheets();

        String[] sheetsNames = spreadsheets.getElementNames();
        for (String sheetsName : sheetsNames) {
            try {
                // get only used area
                XSpreadsheet xSpreadsheet = UnoRuntime.queryInterface(XSpreadsheet.class, spreadsheets.getByName(sheetsName));
                XSheetCellCursor xCursor = xSpreadsheet.createCursor();
                XUsedAreaCursor xUsedCursor = UnoRuntime.queryInterface(XUsedAreaCursor.class, xCursor);

                // filter only cells with text content
                XCellRangesQuery xRangesQuery = UnoRuntime.queryInterface(XCellRangesQuery.class, xUsedCursor);
                XSheetCellRanges xCellRanges = xRangesQuery.queryContentCells((short) STRING);

                XEnumeration enumeration = xCellRanges.getCells().createEnumeration();
                while (enumeration.hasMoreElements()) {
                    XCell xCell = UnoRuntime.queryInterface(XCell.class, enumeration.nextElement());
                    processCellSafe(UnoRuntime.queryInterface(XText.class, xCell));
                }
            } catch (Exception ex) {
                LOGGER.error("While converting spreadsheet \"" + sheetsName + '"', ex);
            }
        }
    }

    private static void processCellSafe(XText xText) {
        if (xText == null) {
            return;
        }
        try {
            // read paragraphs from text cell
            XEnumerationAccess xParaAccess = UnoRuntime.queryInterface(XEnumerationAccess.class, xText);
            XEnumeration xParaEnum = xParaAccess.createEnumeration();
            while (xParaEnum.hasMoreElements()) {
                Object paragraph = xParaEnum.nextElement();
                if (!xParaEnum.hasMoreElements()) {
                    // Processing last paragraph only, read its portions
                    XEnumerationAccess xPortionsAccess = UnoRuntime.queryInterface(XEnumerationAccess.class, paragraph);
                    XEnumeration xPortionsEnum = xPortionsAccess.createEnumeration();
                    while (xPortionsEnum.hasMoreElements()) {
                        Object portion = xPortionsEnum.nextElement();
                        if (!xPortionsEnum.hasMoreElements()) {
                            // Processing last portion only
                            XTextRange xTextRange = UnoRuntime.queryInterface(XTextRange.class, portion);
                            if (xTextRange != null) {
                                xTextRange.setString(stripSpaces(xTextRange.getString()));
                            }
                        }
                    }
                }
            }
        } catch (Exception ex) {
            LOGGER.error("While processing text \"" + xText.getString() +'"', ex);
        }
    }

    private static String stripSpaces(String text) {
        if (text == null) return null;
        // Strips spaces at the end of text
        String result = StringUtils.stripEnd(text, " ");

        // Shrinks excess amount of spaces in the middle of text
        while(countConsecutiveSpaces(result) > 5) {
            result = result.replace("  ", " ");
        }

        if (LOGGER.isDebugEnabled() && !StringUtils.equals(text, result)) {
            LOGGER.debug("Spaces stripped: \"{}\" -> \"{}\" ", text, result);
        }
        return result;
    }

    private static int countConsecutiveSpaces(String text) {
        if (text == null) return 0;

        int maxCount = 0;
        int currCount = 0;
        boolean insideSpaceSeq = false;

        for (char chr : text.toCharArray()) {
            if (chr == ' ') {
                insideSpaceSeq = true;
                currCount++;
            } else {
                if (insideSpaceSeq) {
                    maxCount = Math.max(maxCount, currCount);
                }
                insideSpaceSeq = false;
                currCount = 0;
            }
        }
        return Math.max(maxCount, currCount);
    }

}

У меня та же проблема(Connection refused connect), только под Windows. Как можно убедиться, что OpenOffice стартовал?
Upd. Метод start() класса OOServer завершается успешно. Можно ли это считать показателем успешного запуска OpenOffice? Если да, что еще может помешать установлению соединения?
Upd2. Вот мой код:
String path = version.getOpenOfficePath();
OfficeIntegrationAPI officeIntegration = new OfficeIntegration(path,
OPEN_OFFICE_PORTS);
DocumentConverter documentConverter = new DocumentConverterImpl(officeIntegration);
documentConverter.convertToPdf(DocumentConverter.FileType.SPREADSHEET, buf, outputStream);