4.4.0的docker版本转换带有批注的docx文件时失败
Windows环境下,直接启动服务器,转换带有批注的docx文件正常,预览的时候还可以直接看到批注信息。官方没有4.4.0版本的docker,我自己本地构建,然后启动镜像,预览带有批注的docx文件报错,通过查看docker日志,报错信息如下
2025-09-30 23:07:11.468 INFO 1 --- [tp1243806178-27] c.k.w.c.OnlinePreviewController : 预览文件url:http://localhost:40011/demo/有批注.docx,previewType:OFFICE
2025-09-30 23:07:11.509 INFO 1 --- [ter-poolentry-2] o.j.local.task.LocalConversionTask : Executing local conversion task [docx -> pdf]...
terminate called after throwing an instance of 'com::sun::star::container::NoSuchElementException'
Unspecified Application Error
Fatal exception: Signal 6
Stack:
/usr/lib/libreoffice/program/libuno_sal.so.3(+0x43258)[0x791940982258]
/usr/lib/libreoffice/program/libuno_sal.so.3(+0x43432)[0x791940982432]
/lib/x86_64-linux-gnu/libc.so.6(+0x45320)[0x79193b335320]
/lib/x86_64-linux-gnu/libc.so.6(pthread_kill+0x11c)[0x79193b38eb1c]
/lib/x86_64-linux-gnu/libc.so.6(gsignal+0x1e)[0x79193b33526e]
/lib/x86_64-linux-gnu/libc.so.6(abort+0xdf)[0x79193b3188ff]
/usr/lib/libreoffice/program/libmergedlo.so(+0x137bd1d)[0x79193c883d1d]
/usr/lib/libreoffice/program/libmergedlo.so(+0x27184d2)[0x79193dc204d2]
/usr/lib/libreoffice/program/libmergedlo.so(+0x3a0afe8)[0x79193ef12fe8]
/usr/lib/libreoffice/program/libuno_sal.so.3(+0x1a902)[0x791940959902]
/usr/lib/libreoffice/program/libuno_sal.so.3(+0x43374)[0x791940982374]
/lib/x86_64-linux-gnu/libc.so.6(+0x45320)[0x79193b335320]
/lib/x86_64-linux-gnu/libc.so.6(pthread_kill+0x11c)[0x79193b38eb1c]
/lib/x86_64-linux-gnu/libc.so.6(gsignal+0x1e)[0x79193b33526e]
/lib/x86_64-linux-gnu/libc.so.6(abort+0xdf)[0x79193b3188ff]
/lib/x86_64-linux-gnu/libstdc++.so.6(+0xa5ff5)[0x79193b0fbff5]
/lib/x86_64-linux-gnu/libstdc++.so.6(+0xbb0da)[0x79193b1110da]
/lib/x86_64-linux-gnu/libstdc++.so.6(_ZSt10unexpectedv+0x0)[0x79193b0fba55]
/lib/x86_64-linux-gnu/libstdc++.so.6(+0xa5a6f)[0x79193b0fba6f]
/usr/lib/libreoffice/program/libmergedlo.so(+0x133cccb)[0x79193c844ccb]
/usr/lib/libreoffice/program/libmergedlo.so(+0x39d1284)[0x79193eed9284]
/usr/lib/libreoffice/program/libmergedlo.so(_ZN11SalInstance20CreateInterimBuilderEPN3vcl6WindowERKN3rtl8OUStringES6_bm+0x5a)[0x79193eed940a]
/usr/lib/libreoffice/program/libmergedlo.so(_ZN11Application20CreateInterimBuilderEPN3vcl6WindowERKN3rtl8OUStringEbm+0x120)[0x79193eb27ff0]
/usr/lib/libreoffice/program/libmergedlo.so(_ZN17InterimItemWindowC2EPN3vcl6WindowERKN3rtl8OUStringES6_bm+0x17c)[0x79193ec4a7bc]
/usr/lib/libreoffice/program/libswlo.so(+0xdfa6cf)[0x7919139c86cf]
/usr/lib/libreoffice/program/libswlo.so(+0x76f13e)[0x79191333d13e]
/usr/lib/libreoffice/program/libswlo.so(+0xe14798)[0x7919139e2798]
/usr/lib/libreoffice/program/libmergedlo.so(+0x36f02a1)[0x79193ebf82a1]
/usr/lib/libreoffice/program/libmergedlo.so(_ZN14SvpSalInstance12ProcessEventEN16SalUserEventList12SalUserEventE+0x34)[0x79193f09afe4]
/usr/lib/libreoffice/program/libmergedlo.so(_ZN16SalUserEventList18DispatchUserEventsEb+0x147)[0x79193eebe4f7]
/usr/lib/libreoffice/program/libmergedlo.so(_ZN14SvpSalInstance9ImplYieldEbb+0x38)[0x79193f09b828]
/usr/lib/libreoffice/program/libmergedlo.so(_ZN14SvpSalInstance7DoYieldEbb+0x18d)[0x79193f09bc8d]
/usr/lib/libreoffice/program/libmergedlo.so(+0x3a0151e)[0x79193ef0951e]
/usr/lib/libreoffice/program/libmergedlo.so(_ZN11Application7ExecuteEv+0x6d)[0x79193ef09e4d]
/usr/lib/libreoffice/program/libmergedlo.so(+0x271df32)[0x79193dc25f32]
/usr/lib/libreoffice/program/libmergedlo.so(_Z10ImplSVMainv+0x51)[0x79193ef147b1]
/usr/lib/libreoffice/program/libmergedlo.so(soffice_main+0xa7)[0x79193dc44a57]
/usr/lib/libreoffice/program/soffice.bin(+0x10b7)[0x5a64e93bd0b7]
/lib/x86_64-linux-gnu/libc.so.6(+0x2a1ca)[0x79193b31a1ca]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0x8b)[0x79193b31a28b]
/usr/lib/libreoffice/program/soffice.bin(+0x10f5)[0x5a64e93bd0f5]
2025-09-30 23:07:12.589 INFO 1 --- [ssageDispatcher] o.j.local.office.OfficeConnection : Disconnected from 'socket,host=127.0.0.1,port=2001,tcpNoDelay=1'
2025-09-30 23:07:12.589 WARN 1 --- [ssageDispatcher] o.j.l.o.LocalOfficeManagerPoolEntry : Connection lost unexpectedly; attempting restart
2025-09-30 23:07:12.589 INFO 1 --- [ssageDispatcher] o.j.l.office.LocalOfficeProcessManager : Restarting due to lost connection...
2025-09-30 23:07:12.590 INFO 1 --- [er-offprocmng-0] o.j.l.office.LocalOfficeProcessManager : Process exited with code 134
2025-09-30 23:07:12.592 ERROR 1 --- [ter-poolentry-2] o.j.local.task.LocalConversionTask : Local conversion failed.
org.jodconverter.core.office.OfficeException: Could not apply filter org.jodconverter.local.filter.RefreshFilter.
at org.jodconverter.local.filter.AbstractFilterChain.doFilter(AbstractFilterChain.java:113) ~[jodconverter-local-4.4.6.jar!/:4.4.6]
at org.jodconverter.local.filter.AbstractFilterChain.doFilter(AbstractFilterChain.java:92) ~[jodconverter-local-4.4.6.jar!/:4.4.6]
at org.jodconverter.local.task.LocalConversionTask.modifyDocument(LocalConversionTask.java:179) ~[jodconverter-local-4.4.6.jar!/:4.4.6]
at org.jodconverter.local.task.LocalConversionTask.execute(LocalConversionTask.java:130) ~[jodconverter-local-4.4.6.jar!/:4.4.6]
at org.jodconverter.local.office.LocalOfficeManagerPoolEntry.doExecute(LocalOfficeManagerPoolEntry.java:121) [jodconverter-local-4.4.6.jar!/:4.4.6]
at org.jodconverter.core.office.AbstractOfficeManagerPoolEntry.lambda$execute$0(AbstractOfficeManagerPoolEntry.java:81) [jodconverter-core-4.4.6.jar!/:4.4.6]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[na:1.8.0_432]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) ~[na:1.8.0_432]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) ~[na:1.8.0_432]
at java.lang.Thread.run(Thread.java:750) ~[na:1.8.0_432]
Caused by: com.sun.star.uno.RuntimeException: com.sun.star.lib.uno.environments.remote.JobQueue.removeJob - unexpected:java.lang.InterruptedException
at com.sun.star.lib.uno.environments.remote.JobQueue.removeJob(JobQueue.java:222) ~[jurt-4.1.2.jar!/:na]
at com.sun.star.lib.uno.environments.remote.JobQueue.enter(JobQueue.java:330) ~[jurt-4.1.2.jar!/:na]
at com.sun.star.lib.uno.environments.remote.JobQueue.enter(JobQueue.java:303) ~[jurt-4.1.2.jar!/:na]
at com.sun.star.lib.uno.environments.remote.JavaThreadPool.enter(JavaThreadPool.java:87) ~[jurt-4.1.2.jar!/:na]
at com.sun.star.lib.uno.bridges.java_remote.java_remote_bridge.sendRequest(java_remote_bridge.java:636) ~[jurt-4.1.2.jar!/:na]
at com.sun.star.lib.uno.bridges.java_remote.ProxyFactory$Handler.request(ProxyFactory.java:146) ~[jurt-4.1.2.jar!/:na]
at com.sun.star.lib.uno.bridges.java_remote.ProxyFactory$Handler.invoke(ProxyFactory.java:128) ~[jurt-4.1.2.jar!/:na]
at com.sun.proxy.$Proxy81.refresh(Unknown Source) ~[na:na]
at java.util.Optional.ifPresent(Optional.java:159) ~[na:1.8.0_432]
at org.jodconverter.local.filter.RefreshFilter.doFilter(RefreshFilter.java:88) ~[jodconverter-local-4.4.6.jar!/:4.4.6]
at org.jodconverter.local.filter.AbstractFilterChain.doFilter(AbstractFilterChain.java:111) ~[jodconverter-local-4.4.6.jar!/:4.4.6]
... 9 common frames omitted
2025-09-30 23:07:12.593 WARN 1 --- [tp1243806178-27] cn.keking.service.OfficeToPdfService : Primary conversion attempt for /opt/kkFileView-4.4.1/file/有批注.docx failed when exporting notes. Retrying without notes.
org.jodconverter.core.office.OfficeException: Task was cancelled: LocalConversionTask{source=SourceDocumentSpecsFromFile{file=有批注.docx, format=docx}, loadProperties={ReadOnly=true, Hidden=true, UpdateDocMode=0}, target=TargetDocumentSpecsFromFile{file=有批注docx.pdf, format=pdf}, storeProperties={FilterData={ExportNotes=true, EncryptFile=false, Quality=80, MaxImageResolution=150, ExportBookmarks=true}}, useStreamAdapters=false}
at org.jodconverter.core.office.AbstractOfficeManagerPoolEntry.waitTaskCompletion(AbstractOfficeManagerPoolEntry.java:101) ~[jodconverter-core-4.4.6.jar!/:4.4.6]
at org.jodconverter.core.office.AbstractOfficeManagerPoolEntry.execute(AbstractOfficeManagerPoolEntry.java:86) ~[jodconverter-core-4.4.6.jar!/:4.4.6]
at org.jodconverter.core.office.AbstractOfficeManagerPool.execute(AbstractOfficeManagerPool.java:216) ~[jodconverter-core-4.4.6.jar!/:4.4.6]
at org.jodconverter.local.LocalConverter$LocalConversionJob.doExecute(LocalConverter.java:181) ~[jodconverter-local-4.4.6.jar!/:4.4.6]
at org.jodconverter.core.job.AbstractConversionJob.execute(AbstractConversionJob.java:63) ~[jodconverter-core-4.4.6.jar!/:4.4.6]
at cn.keking.service.OfficeToPdfService.convertInternal(OfficeToPdfService.java:94) [classes!/:na]
at cn.keking.service.OfficeToPdfService.converterFile(OfficeToPdfService.java:40) [classes!/:na]
at cn.keking.service.OfficeToPdfService.office2pdf(OfficeToPdfService.java:73) [classes!/:na]
at cn.keking.service.OfficeToPdfService.openOfficeToPDF(OfficeToPdfService.java:29) [classes!/:na]
at cn.keking.service.impl.OfficeFilePreviewImpl.filePreviewHandle(OfficeFilePreviewImpl.java:85) [classes!/:na]
at cn.keking.web.controller.OnlinePreviewController.onlinePreview(OnlinePreviewController.java:84) [classes!/:na]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_432]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_432]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_432]
at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_432]
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:197) [spring-web-5.3.3.jar!/:5.3.3]
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:141) [spring-web-5.3.3.jar!/:5.3.3]
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106) [spring-webmvc-5.3.3.jar!/:5.3.3]
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:894) [spring-webmvc-5.3.3.jar!/:5.3.3]
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808) [spring-webmvc-5.3.3.jar!/:5.3.3]
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) [spring-webmvc-5.3.3.jar!/:5.3.3]
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1060) [spring-webmvc-5.3.3.jar!/:5.3.3]
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:962) [spring-webmvc-5.3.3.jar!/:5.3.3]
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) [spring-webmvc-5.3.3.jar!/:5.3.3]
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898) [spring-webmvc-5.3.3.jar!/:5.3.3]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:497) [jakarta.servlet-api-4.0.4.jar!/:4.0.4]
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) [spring-webmvc-5.3.3.jar!/:5.3.3]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:584) [jakarta.servlet-api-4.0.4.jar!/:4.0.4]
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:791) [jetty-servlet-9.4.35.v20201120.jar!/:9.4.35.v20201120]
at org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1626) [jetty-servlet-9.4.35.v20201120.jar!/:9.4.35.v20201120]
at org.eclipse.jetty.websocket.server.WebSocketUpgradeFilter.doFilter(WebSocketUpgradeFilter.java:228) [websocket-server-9.4.35.v20201120.jar!/:9.4.35.v20201120]
at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) [jetty-servlet-9.4.35.v20201120.jar!/:9.4.35.v20201120]
at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) [jetty-servlet-9.4.35.v20201120.jar!/:9.4.35.v20201120]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:113) [spring-web-5.3.3.jar!/:5.3.3]
at cn.keking.web.filter.SecurityFilterProxy.doFilterInternal(SecurityFilterProxy.java:28) [classes!/:na]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) [spring-web-5.3.3.jar!/:5.3.3]
at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) [jetty-servlet-9.4.35.v20201120.jar!/:9.4.35.v20201120]
at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) [jetty-servlet-9.4.35.v20201120.jar!/:9.4.35.v20201120]
at cn.keking.web.filter.AttributeSetFilter.doFilter(AttributeSetFilter.java:26) [classes!/:na]
at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) [jetty-servlet-9.4.35.v20201120.jar!/:9.4.35.v20201120]
at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) [jetty-servlet-9.4.35.v20201120.jar!/:9.4.35.v20201120]
at cn.keking.web.filter.TrustDirFilter.doFilter(TrustDirFilter.java:49) [classes!/:na]
at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) [jetty-servlet-9.4.35.v20201120.jar!/:9.4.35.v20201120]
at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) [jetty-servlet-9.4.35.v20201120.jar!/:9.4.35.v20201120]
at cn.keking.web.filter.TrustHostFilter.doFilter(TrustHostFilter.java:49) [classes!/:na]
at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) [jetty-servlet-9.4.35.v20201120.jar!/:9.4.35.v20201120]
at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) [jetty-servlet-9.4.35.v20201120.jar!/:9.4.35.v20201120]
at cn.keking.web.filter.UrlCheckFilter.doFilter(UrlCheckFilter.java:49) [classes!/:na]
at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) [jetty-servlet-9.4.35.v20201120.jar!/:9.4.35.v20201120]
at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) [jetty-servlet-9.4.35.v20201120.jar!/:9.4.35.v20201120]
at cn.keking.web.filter.BaseUrlFilter.doFilter(BaseUrlFilter.java:61) [classes!/:na]
at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) [jetty-servlet-9.4.35.v20201120.jar!/:9.4.35.v20201120]
at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) [jetty-servlet-9.4.35.v20201120.jar!/:9.4.35.v20201120]
at cn.keking.web.filter.ChinesePathFilter.doFilter(ChinesePathFilter.java:21) [classes!/:na]
at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) [jetty-servlet-9.4.35.v20201120.jar!/:9.4.35.v20201120]
at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) [jetty-servlet-9.4.35.v20201120.jar!/:9.4.35.v20201120]
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) [spring-web-5.3.3.jar!/:5.3.3]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) [spring-web-5.3.3.jar!/:5.3.3]
at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) [jetty-servlet-9.4.35.v20201120.jar!/:9.4.35.v20201120]
at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) [jetty-servlet-9.4.35.v20201120.jar!/:9.4.35.v20201120]
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) [spring-web-5.3.3.jar!/:5.3.3]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) [spring-web-5.3.3.jar!/:5.3.3]
at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) [jetty-servlet-9.4.35.v20201120.jar!/:9.4.35.v20201120]
at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) [jetty-servlet-9.4.35.v20201120.jar!/:9.4.35.v20201120]
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) [spring-web-5.3.3.jar!/:5.3.3]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) [spring-web-5.3.3.jar!/:5.3.3]
at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) [jetty-servlet-9.4.35.v20201120.jar!/:9.4.35.v20201120]
at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) [jetty-servlet-9.4.35.v20201120.jar!/:9.4.35.v20201120]
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:548) [jetty-servlet-9.4.35.v20201120.jar!/:9.4.35.v20201120]
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) [jetty-server-9.4.35.v20201120.jar!/:9.4.35.v20201120]
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:602) [jetty-security-9.4.35.v20201120.jar!/:9.4.35.v20201120]
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) [jetty-server-9.4.35.v20201120.jar!/:9.4.35.v20201120]
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235) [jetty-server-9.4.35.v20201120.jar!/:9.4.35.v20201120]
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624) [jetty-server-9.4.35.v20201120.jar!/:9.4.35.v20201120]
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233) [jetty-server-9.4.35.v20201120.jar!/:9.4.35.v20201120]
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1435) [jetty-server-9.4.35.v20201120.jar!/:9.4.35.v20201120]
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188) [jetty-server-9.4.35.v20201120.jar!/:9.4.35.v20201120]
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:501) [jetty-servlet-9.4.35.v20201120.jar!/:9.4.35.v20201120]
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594) [jetty-server-9.4.35.v20201120.jar!/:9.4.35.v20201120]
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186) [jetty-server-9.4.35.v20201120.jar!/:9.4.35.v20201120]
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1350) [jetty-server-9.4.35.v20201120.jar!/:9.4.35.v20201120]
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) [jetty-server-9.4.35.v20201120.jar!/:9.4.35.v20201120]
at org.eclipse.jetty.server.handler.gzip.GzipHandler.handle(GzipHandler.java:766) [jetty-server-9.4.35.v20201120.jar!/:9.4.35.v20201120]
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) [jetty-server-9.4.35.v20201120.jar!/:9.4.35.v20201120]
at org.eclipse.jetty.server.Server.handle(Server.java:516) [jetty-server-9.4.35.v20201120.jar!/:9.4.35.v20201120]
at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:388) [jetty-server-9.4.35.v20201120.jar!/:9.4.35.v20201120]
at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:633) [jetty-server-9.4.35.v20201120.jar!/:9.4.35.v20201120]
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:380) [jetty-server-9.4.35.v20201120.jar!/:9.4.35.v20201120]
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:273) ~[jetty-server-9.4.35.v20201120.jar!/:9.4.35.v20201120]
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311) ~[jetty-io-9.4.35.v20201120.jar!/:9.4.35.v20201120]
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) ~[jetty-io-9.4.35.v20201120.jar!/:9.4.35.v20201120]
at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104) ~[jetty-io-9.4.35.v20201120.jar!/:9.4.35.v20201120]
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:336) ~[jetty-util-9.4.35.v20201120.jar!/:9.4.35.v20201120]
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:313) ~[jetty-util-9.4.35.v20201120.jar!/:9.4.35.v20201120]
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:171) ~[jetty-util-9.4.35.v20201120.jar!/:9.4.35.v20201120]
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.produce(EatWhatYouKill.java:135) ~[jetty-util-9.4.35.v20201120.jar!/:9.4.35.v20201120]
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:773) ~[jetty-util-9.4.35.v20201120.jar!/:9.4.35.v20201120]
at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:905) ~[jetty-util-9.4.35.v20201120.jar!/:9.4.35.v20201120]
at java.lang.Thread.run(Thread.java:750) ~[na:1.8.0_432]
Caused by: java.util.concurrent.CancellationException: null
at java.util.concurrent.FutureTask.report(FutureTask.java:121) ~[na:1.8.0_432]
at java.util.concurrent.FutureTask.get(FutureTask.java:206) ~[na:1.8.0_432]
at org.jodconverter.core.office.AbstractOfficeManagerPoolEntry.waitTaskCompletion(AbstractOfficeManagerPoolEntry.java:95) ~[jodconverter-core-4.4.6.jar!/:4.4.6]
... 98 common frames omitted
2025-09-30 23:07:12.597 INFO 1 --- [ter-poolentry-3] o.j.local.task.LocalConversionTask : Executing local conversion task [docx -> pdf]...
2025-09-30 23:07:12.596 INFO 1 --- [er-offprocmng-0] o.j.local.office.OfficeDescriptor : soffice info (from exec path): Product: LibreOffice - Version: ??? - useLongOptionNameGnuStyle: true
2025-09-30 23:07:12.688 INFO 1 --- [er-offprocmng-0] o.j.local.office.OfficeDescriptor : soffice info (from help output): Product: LibreOffice - Version: 24.2.7.2 - useLongOptionNameGnuStyle: true
2025-09-30 23:07:12.695 INFO 1 --- [er-offprocmng-0] o.j.l.office.LocalOfficeProcessManager : Starting process with --accept 'socket,host=127.0.0.1,port=2001,tcpNoDelay=1;urp;StarOffice.ServiceManager' and profileDir '/tmp/.jodconverter_socket_host-127.0.0.1_port-2001_tcpNoDelay-1'
terminate called after throwing an instance of 'com::sun::star::container::NoSuchElementException'
Unspecified Application Error
Fatal exception: Signal 6
Stack:
/usr/lib/libreoffice/program/libuno_sal.so.3(+0x43258)[0x7408ed030258]
/usr/lib/libreoffice/program/libuno_sal.so.3(+0x43432)[0x7408ed030432]
/lib/x86_64-linux-gnu/libc.so.6(+0x45320)[0x7408e79e3320]
/lib/x86_64-linux-gnu/libc.so.6(pthread_kill+0x11c)[0x7408e7a3cb1c]
/lib/x86_64-linux-gnu/libc.so.6(gsignal+0x1e)[0x7408e79e326e]
/lib/x86_64-linux-gnu/libc.so.6(abort+0xdf)[0x7408e79c68ff]
/usr/lib/libreoffice/program/libmergedlo.so(+0x137bd1d)[0x7408e8f31d1d]
/usr/lib/libreoffice/program/libmergedlo.so(+0x27184d2)[0x7408ea2ce4d2]
/usr/lib/libreoffice/program/libmergedlo.so(+0x3a0afe8)[0x7408eb5c0fe8]
/usr/lib/libreoffice/program/libuno_sal.so.3(+0x1a902)[0x7408ed007902]
/usr/lib/libreoffice/program/libuno_sal.so.3(+0x43374)[0x7408ed030374]
/lib/x86_64-linux-gnu/libc.so.6(+0x45320)[0x7408e79e3320]
/lib/x86_64-linux-gnu/libc.so.6(pthread_kill+0x11c)[0x7408e7a3cb1c]
/lib/x86_64-linux-gnu/libc.so.6(gsignal+0x1e)[0x7408e79e326e]
/lib/x86_64-linux-gnu/libc.so.6(abort+0xdf)[0x7408e79c68ff]
/lib/x86_64-linux-gnu/libstdc++.so.6(+0xa5ff5)[0x7408e77a9ff5]
/lib/x86_64-linux-gnu/libstdc++.so.6(+0xbb0da)[0x7408e77bf0da]
/lib/x86_64-linux-gnu/libstdc++.so.6(_ZSt10unexpectedv+0x0)[0x7408e77a9a55]
/lib/x86_64-linux-gnu/libstdc++.so.6(+0xa5a6f)[0x7408e77a9a6f]
/usr/lib/libreoffice/program/libmergedlo.so(+0x133cccb)[0x7408e8ef2ccb]
/usr/lib/libreoffice/program/libmergedlo.so(+0x39d1284)[0x7408eb587284]
/usr/lib/libreoffice/program/libmergedlo.so(_ZN11SalInstance20CreateInterimBuilderEPN3vcl6WindowERKN3rtl8OUStringES6_bm+0x5a)[0x7408eb58740a]
/usr/lib/libreoffice/program/libmergedlo.so(_ZN11Application20CreateInterimBuilderEPN3vcl6WindowERKN3rtl8OUStringEbm+0x120)[0x7408eb1d5ff0]
/usr/lib/libreoffice/program/libmergedlo.so(_ZN17InterimItemWindowC2EPN3vcl6WindowERKN3rtl8OUStringES6_bm+0x17c)[0x7408eb2f87bc]
/usr/lib/libreoffice/program/libswlo.so(+0xdfa6cf)[0x7408d0e0a6cf]
/usr/lib/libreoffice/program/libswlo.so(+0x76f13e)[0x7408d077f13e]
/usr/lib/libreoffice/program/libswlo.so(+0xe14798)[0x7408d0e24798]
/usr/lib/libreoffice/program/libmergedlo.so(+0x36f02a1)[0x7408eb2a62a1]
/usr/lib/libreoffice/program/libmergedlo.so(_ZN14SvpSalInstance12ProcessEventEN16SalUserEventList12SalUserEventE+0x34)[0x7408eb748fe4]
/usr/lib/libreoffice/program/libmergedlo.so(_ZN16SalUserEventList18DispatchUserEventsEb+0x147)[0x7408eb56c4f7]
/usr/lib/libreoffice/program/libmergedlo.so(_ZN14SvpSalInstance9ImplYieldEbb+0x38)[0x7408eb749828]
/usr/lib/libreoffice/program/libmergedlo.so(_ZN14SvpSalInstance7DoYieldEbb+0x18d)[0x7408eb749c8d]
/usr/lib/libreoffice/program/libmergedlo.so(+0x3a0151e)[0x7408eb5b751e]
/usr/lib/libreoffice/program/libmergedlo.so(_ZN11Application7ExecuteEv+0x6d)[0x7408eb5b7e4d]
/usr/lib/libreoffice/program/libmergedlo.so(+0x271df32)[0x7408ea2d3f32]
/usr/lib/libreoffice/program/libmergedlo.so(_Z10ImplSVMainv+0x51)[0x7408eb5c27b1]
/usr/lib/libreoffice/program/libmergedlo.so(soffice_main+0xa7)[0x7408ea2f2a57]
/usr/lib/libreoffice/program/soffice.bin(+0x10b7)[0x5e0cce45a0b7]
/lib/x86_64-linux-gnu/libc.so.6(+0x2a1ca)[0x7408e79c81ca]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0x8b)[0x7408e79c828b]
/usr/lib/libreoffice/program/soffice.bin(+0x10f5)[0x5e0cce45a0f5]
2025-09-30 23:07:12.966 WARN 1 --- [er-offprocmng-0] o.j.l.o.StartProcessAndConnectRetryable : Office process died with exit code 81; restarting it
2025-09-30 23:07:13.681 INFO 1 --- [ssageDispatcher] o.j.local.office.OfficeConnection : Disconnected from 'socket,host=127.0.0.1,port=2002,tcpNoDelay=1'
2025-09-30 23:07:13.682 WARN 1 --- [ssageDispatcher] o.j.l.o.LocalOfficeManagerPoolEntry : Connection lost unexpectedly; attempting restart
2025-09-30 23:07:13.682 INFO 1 --- [ssageDispatcher] o.j.l.office.LocalOfficeProcessManager : Restarting due to lost connection...
2025-09-30 23:07:13.682 INFO 1 --- [er-offprocmng-1] o.j.l.office.LocalOfficeProcessManager : Process exited with code 134
2025-09-30 23:07:13.685 ERROR 1 --- [ter-poolentry-3] o.j.local.task.LocalConversionTask : Local conversion failed.
com.sun.star.uno.RuntimeException: com.sun.star.lib.uno.environments.remote.JobQueue.removeJob - unexpected:java.lang.InterruptedException
at com.sun.star.lib.uno.environments.remote.JobQueue.removeJob(JobQueue.java:222) ~[jurt-4.1.2.jar!/:na]
at com.sun.star.lib.uno.environments.remote.JobQueue.enter(JobQueue.java:330) ~[jurt-4.1.2.jar!/:na]
at com.sun.star.lib.uno.environments.remote.JobQueue.enter(JobQueue.java:303) ~[jurt-4.1.2.jar!/:na]
at com.sun.star.lib.uno.environments.remote.JavaThreadPool.enter(JavaThreadPool.java:87) ~[jurt-4.1.2.jar!/:na]
at com.sun.star.lib.uno.bridges.java_remote.java_remote_bridge.sendRequest(java_remote_bridge.java:636) ~[jurt-4.1.2.jar!/:na]
at com.sun.star.lib.uno.bridges.java_remote.ProxyFactory$Handler.request(ProxyFactory.java:146) ~[jurt-4.1.2.jar!/:na]
at com.sun.star.lib.uno.bridges.java_remote.ProxyFactory$Handler.invoke(ProxyFactory.java:128) ~[jurt-4.1.2.jar!/:na]
at com.sun.proxy.$Proxy75.loadComponentFromURL(Unknown Source) ~[na:na]
at org.jodconverter.local.task.AbstractLocalOfficeTask.loadDocumentFromURL(AbstractLocalOfficeTask.java:240) ~[jodconverter-local-4.4.6.jar!/:4.4.6]
at org.jodconverter.local.task.AbstractLocalOfficeTask.loadDocument(AbstractLocalOfficeTask.java:204) ~[jodconverter-local-4.4.6.jar!/:4.4.6]
at org.jodconverter.local.task.LocalConversionTask.execute(LocalConversionTask.java:129) ~[jodconverter-local-4.4.6.jar!/:4.4.6]
at org.jodconverter.local.office.LocalOfficeManagerPoolEntry.doExecute(LocalOfficeManagerPoolEntry.java:121) [jodconverter-local-4.4.6.jar!/:4.4.6]
at org.jodconverter.core.office.AbstractOfficeManagerPoolEntry.lambda$execute$0(AbstractOfficeManagerPoolEntry.java:81) [jodconverter-core-4.4.6.jar!/:4.4.6]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[na:1.8.0_432]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) ~[na:1.8.0_432]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) ~[na:1.8.0_432]
at java.lang.Thread.run(Thread.java:750) ~[na:1.8.0_432]
2025-09-30 23:07:13.688 INFO 1 --- [er-offprocmng-1] o.j.local.office.OfficeDescriptor : soffice info (from exec path): Product: LibreOffice - Version: ??? - useLongOptionNameGnuStyle: true
2025-09-30 23:07:13.811 INFO 1 --- [er-offprocmng-1] o.j.local.office.OfficeDescriptor : soffice info (from help output): Product: LibreOffice - Version: 24.2.7.2 - useLongOptionNameGnuStyle: true
2025-09-30 23:07:13.817 INFO 1 --- [er-offprocmng-1] o.j.l.office.LocalOfficeProcessManager : Starting process with --accept 'socket,host=127.0.0.1,port=2002,tcpNoDelay=1;urp;StarOffice.ServiceManager' and profileDir '/tmp/.jodconverter_socket_host-127.0.0.1_port-2002_tcpNoDelay-1'
2025-09-30 23:07:13.999 INFO 1 --- [er-offprocmng-0] o.j.local.office.OfficeConnection : Connected: 'socket,host=127.0.0.1,port=2001,tcpNoDelay=1'
2025-09-30 23:07:13.999 INFO 1 --- [er-offprocmng-0] o.j.l.office.LocalOfficeProcessManager : Started process; pid: 315
2025-09-30 23:07:14.080 WARN 1 --- [er-offprocmng-1] o.j.l.o.StartProcessAndConnectRetryable : Office process died with exit code 81; restarting it
2025-09-30 23:07:15.360 INFO 1 --- [er-offprocmng-1] o.j.local.office.OfficeConnection : Connected: 'socket,host=127.0.0.1,port=2002,tcpNoDelay=1'
2025-09-30 23:07:15.360 INFO 1 --- [er-offprocmng-1] o.j.l.office.LocalOfficeProcessManager : Started process; pid: 353
不知道是不是libreoffice版本造成的问题。为了临时应急,我采用了转换时,手动去掉批注信息的方式,但与此同时预览时也丢失了批注信息。希望官方关注一下这个问题,使用更好的方式来解决,提供不同平台的一致性体验。 https://github.com/iwangbowen/kkFileView/commit/16bf9d38e0613d85ab70c9c205c666c1c5563ff3#diff-7df9982d3c40d26a284a8cf0637b25518985c5ebee5708d4a952a67dcfa22d2b
有需要临时应急的,可以使用我构建的预览时去掉批注信息的镜像 docker pull wangbowen/kkfileview:4.4.1
参考 #596 进行了修复。
我重新制作了镜像,使用docker pull wangbowen/kkfileview:4.4.2下载使用。这个镜像基于 9f3b45a4c74e501695bffd851b60e920980fd4a8 的代码制作。
相比于4.4.0版本的显著区别是JDK升级到了21,spring boot升级到了3.5.6。
有两个参数KK_OFFICE_HOME和KK_TRUST_HOST需要加到docker-compose.yml文件中。KK_OFFICE_HOME是因为使用了不同版本的LibreOffice。KK_TRUST_HOST由提交 9f3b45a4c74e501695bffd851b60e920980fd4a8 引入。参考下面的docker-compose.yml文件。
version: '3.7'
services:
kkfileview:
image: wangbowen/kkfileview:4.4.2
container_name: kkfileview
restart: unless-stopped
ports:
- 40011:40011
environment:
- TZ=Asia/Shanghai
# 生产环境配置项,开发环境或不依赖nginx反向代理的环境不需要配置这一项
# - KK_BASE_URL=https://file.zgyshj.com.cn/preview
- KK_SERVER_PORT=40011
# - KK_CONTEXT_PATH=/preview
- KK_OFFICE_PREVIEW_TYPE=pdf
- KK_OFFICE_PREVIEW_SWITCH_DISABLED=true
- KK_OFFICE_HOME=/opt/libreoffice25.8
- KK_TRUST_HOST=*
volumes:
- ./application.properties:/opt/kkFileView-4.4.0/config/application.properties:ro
基于 https://github.com/iwangbowen/kkFileView/tree/newer_libreoffice 这个分支的提交 f8fe4421ebb2493b81876d414f682030e1bd6d5b 制作的镜像