Windows 服务器上的 LibreOffice

LibreOffice on Windows Server

无法解决 Java Web 应用程序中的问题。该应用程序已经投入生产多年,我只会在必要时添加新功能。下半年,所有要做的就是更新库。但从去年12月开始,开始对客户“冻结”

该应用程序的功能是处理各种格式的文档:上传到服务器、删除文档、创建预览和下载文件。上传到服务器后,文件将转换为 .pdf 格式。因此,应用程序 运行 Windows Server 2016 Standart 10.0.14393 Build 14393 x64-based PC and LibreOffice 6.4.x.x 也已安装,WildFly 20.0.0 Final 在其上启动应用程序。

任务是将 LibreOffice 6 升级到 7。我阅读了发行说明,没有发现任何阻止我升级 LibreOffice 版本的内容。我们安装了 7.1 版本(12 月份),然后问题就开始了。

问题是加载.docx/.doc格式的文件时,文件加载不正确,预览“坏掉”,“杀不死” ” soffice.bin/.exe 进程保留在任务管理器中的服务器上。

后来发现,客户在文档中使用条形码(但是4年多了),我也去LibreOffice中的“文件”属性并选择“属性...”,所以我发现 embed fonts 的复选框已启用。如果删除此复选框,那么一切都可以在任何版本的 LibreOffice 上正常工作。但是有了它,从 版本 6.4 开始 - 程序“冻结” 2 分钟。这是每个进程 jodconverter 中的超时限制。

但是,如果我在安装了 Windows 10 的本地计算机上执行相同的操作,那么一切对我来说都很好,在其他本地计算机上也是如此机器。问题仅出现在 Windows Server 2016 上,我们已将其用于测试以及客户端。 我在服务器上尝试了什么:我安装了 2020 年的旧版本 Java 应用程序以及 LibreOffice 6.4 和 7.1 - 它仍然不起作用。 我使用了最新的Java 应用程序的版本,但 LibreOffice 6.0 - 6.3(含) - 和 一切正常。 我还从文件中安装了带有条形码的字体 - 9 个免费 3 个,它也对 LibreOffice 6.4 及更高版本没有帮助。

安装 LibreOffice 6.0 还安装了 Microsoft Visual C++ Redistributable 2015 x64,我认为这是问题所在。但是在尝试了不同的组合之后,我并没有成功地解决问题。目前服务器上安装了Microsoft Visual C++ Redistributable 2015-2022 x64和Microsoft Visual C++ Redistributable 2017 x86。由 this 篇文章指导。

关于Microsoft Visual C++ Redistributable,之前看过一篇文章说,在安装LibreOffice的时候,并行安装了这个包,但是微软更改了license来使用该软件之类的,然后Document Foundation 停止插入 LibreOffice 安装文件 Microsoft Visual C++ Redistributable。

我想指出问题不在于文件或条形码的规范,因为我通过 LibreOffice 在服务器上创建了一个完全空的文档,格式为 .docx / .doc 并选中了字体复选框 - 它也“僵住了”,出现了我上面描述的所有症状。

我得出的结论是 Java 应用程序本身、字体或 .docx / .doc 格式不太可能参与错误,尽管不排除。

你能告诉我解决方案或在哪里寻找问题吗?

也许以后会有人遇到,我从WindowsServer 2016切换到WindowsServer 2019解决了这个问题。