QR Code Libre Office issue

Hi,
I am working on a copy of GitHub - aleksey-stukalov/sample-report-generation: The sample shows how to use reporting add-on in the CUBA Platform (requires premium package). I have installed libreoffice on the server as recommended on the reporting docs. However when i try to add qr to the document i get the following error:
Caused by: com.haulmont.reports.exception.ReportingException: An error occurred while inserting bitmap to docx file Report name [Payment Receipt]
Error checking image format
Cannot run program “imconvert”: error=2, No such file or directory

Kindly assist

Hi @kech,

Could you please more detailed stack trace?

Note that this sample can work without libreoffice at all.

Regards,
Aleksey

Hi @stukalov ,
Sorry for the late response.
Here is the stack trace:

 16:25:55.199 ERROR c.h.cuba.core.sys.ServiceInterceptor    - Exception:
com.haulmont.reports.exception.ReportingException: An error occurred while inserting bitmap to docx file Report name [Collection Report]
Error checking image format
Cannot run program "imconvert": error=2, No such file or directory
error=2, No such file or directory
        at com.haulmont.reports.ReportingBean.createReportDocument(ReportingBean.java:361) ~[classes/:na]
        at com.haulmont.reports.ReportingBean.createReportDocument(ReportingBean.java:304) ~[classes/:na]
        at com.haulmont.reports.ReportingBean.createReport(ReportingBean.java:198) ~[classes/:na]
        at com.haulmont.reports.ReportServiceBean.createReport(ReportServiceBean.java:35) ~[classes/:na]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_242]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_242]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_242]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_242]
        at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:333) ~[shared/:na]
        at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190) [shared/:na]
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) [shared/:na]
        at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:84) ~[shared/:na]
        at com.haulmont.cuba.core.sys.ServiceInterceptor.aroundInvoke(ServiceInterceptor.java:116) ~[classes/:na]
        at sun.reflect.GeneratedMethodAccessor126.invoke(Unknown Source) ~[na:na]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_242]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_242]
        at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:627) [shared/:na]
        at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:616) [shared/:na]
        at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:70) [shared/:na]
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:168) [shared/:na]
        at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92) [shared/:na]
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) [shared/:na]
        at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:213) [shared/:na]
        at com.sun.proxy.$Proxy127.createReport(Unknown Source) [na:na]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_242]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_242]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_242]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_242]
        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) [classes/:na]
        at com.sun.proxy.$Proxy246.createReport(Unknown Source) [na:na]
        at com.haulmont.reports.gui.ReportGuiManager.getReportResult(ReportGuiManager.java:263) [classes/:na]
        at com.haulmont.reports.gui.ReportGuiManager.printReportSync(ReportGuiManager.java:234) [classes/:na]
        at com.haulmont.reports.gui.ReportGuiManager.printReport(ReportGuiManager.java:205) [classes/:na]
        at com.haulmont.reports.gui.report.run.InputParametersWindow.printReport(InputParametersWindow.java:112) [classes/:na]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_242]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_242]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_242]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_242]
        at com.haulmont.cuba.gui.xml.DeclarativeAction.actionPerform(DeclarativeAction.java:92) [classes/:na]
        at com.haulmont.cuba.web.gui.components.WebButton.performAction(WebButton.java:46) [classes/:na]
        at com.haulmont.cuba.web.gui.components.WebButton.lambda$new$61446b05$1(WebButton.java:38) [classes/:na]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_242]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_242]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_242]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_242]
        at com.vaadin.event.ListenerMethod.receiveEvent(ListenerMethod.java:510) ~[shared/:na]
        at com.vaadin.event.EventRouter.fireEvent(EventRouter.java:200) ~[shared/:na]
        at com.vaadin.event.EventRouter.fireEvent(EventRouter.java:163) ~[shared/:na]
        at com.vaadin.server.AbstractClientConnector.fireEvent(AbstractClientConnector.java:1037) ~[shared/:na]
        at com.vaadin.ui.Button.fireClick(Button.java:377) ~[shared/:na]
        at com.haulmont.cuba.web.toolkit.ui.CubaButton.fireClick(CubaButton.java:69) ~[classes/:na]
        at com.vaadin.ui.Button$1.click(Button.java:54) ~[shared/:na]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_242]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_242]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_242]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_242]
        at com.vaadin.server.ServerRpcManager.applyInvocation(ServerRpcManager.java:158) ~[shared/:na]
        at com.vaadin.server.ServerRpcManager.applyInvocation(ServerRpcManager.java:119) ~[shared/:na]
        at com.vaadin.server.communication.ServerRpcHandler.handleInvocation(ServerRpcHandler.java:444) ~[shared/:na]
        at com.vaadin.server.communication.ServerRpcHandler.handleInvocations(ServerRpcHandler.java:409) ~[shared/:na]
        at com.vaadin.server.communication.ServerRpcHandler.handleRpc(ServerRpcHandler.java:274) ~[shared/:na]
        at com.vaadin.server.communication.UidlRequestHandler.synchronizedHandleRequest(UidlRequestHandler.java:90) ~[shared/:na]
        at com.vaadin.server.SynchronizedRequestHandler.handleRequest(SynchronizedRequestHandler.java:41) ~[shared/:na]
        at com.vaadin.server.VaadinService.handleRequest(VaadinService.java:1435) ~[shared/:na]

Basically, the qr code works when i dont use libreoffice but the format looks innacurate, so I installed liberoffice on the server and updated the properties file to use it. QR the fails with the above stack trace. It also works nicely on windows, I have raised an issue of git to follow up.
I am running the server on ubuntu 18.04 server, server is packacked in a single uber jar

Hi,
I managed to download the standalone imagemagk from ImageMagick – Download and renamed it to imconvert. Now i graduated into another error:
> 12:27:27.275 INFO c.h.r.libintegration.CubaReporting - An error occurred while running report [Collection Report] with parameters [
> entity:com.company.kilifibackend.entity.Employee-ce2073cd-acc2-7139-2782-08d178d04887 [detached]].
> 12:27:27.298 INFO c.h.r.libintegration.CubaReporting - Trace:
> com.haulmont.yarg.exception.ReportFormattingException: An error occurred while inserting bitmap to docx file
> at com.haulmont.yarg.formatters.impl.inline.AbstractInliner.inlineToDocx(AbstractInliner.java:210) ~[shared/:na]
> at com.haulmont.yarg.formatters.impl.DocxFormatter.tryToApplyInliners(DocxFormatter.java:218) ~[shared/:na]
> at com.haulmont.yarg.formatters.impl.DocxFormatterDelegate.tryToApplyInliners(DocxFormatterDelegate.java:86) ~[shared/:na]
> at com.haulmont.yarg.formatters.impl.docx.TextWrapper.fillTextWithBandData(TextWrapper.java:63) ~[shared/:na]
> at com.haulmont.yarg.formatters.impl.DocxFormatter.replaceAllAliasesInDocument(DocxFormatter.java:181) ~[shared/:na]
> at com.haulmont.yarg.formatters.impl.DocxFormatter.renderDocument(DocxFormatter.java:87) ~[shared/:na]
> at com.haulmont.yarg.reporting.Reporting.generateReport(Reporting.java:133) [shared/:na]
> at com.haulmont.yarg.reporting.Reporting.runReport(Reporting.java:100) [shared/:na]
> at com.haulmont.yarg.reporting.Reporting.runReport(Reporting.java:83) [shared/:na]
> at com.haulmont.reports.ReportingBean.createReportDocument(ReportingBean.java:335) [classes/:na]
> at com.haulmont.reports.ReportingBean.createReport(ReportingBean.java:205) [classes/:na]
> at com.haulmont.reports.ReportServiceBean.createReport(ReportServiceBean.java:40) [classes/:na]
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_242]
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_242]
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_242]
> at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_242]
> at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:333) [shared/:na]
> at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190) [shared/:na]
> at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) [shared/:na]
> at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:84) [shared/:na]
> at com.haulmont.cuba.core.sys.ServiceInterceptor.aroundInvoke(ServiceInterceptor.java:116) [classes/:na]
> at sun.reflect.GeneratedMethodAccessor118.invoke(Unknown Source) ~[na:na]
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_242]
> at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_242]
> at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:627) [shared/:na]
> at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:616) [shared/:na]
> at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:70) [shared/:na]
> at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:168) [shared/:na]
> at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92) [shared/:na]
> at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) [shared/:na]
> at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:213) [shared/:na]
> at com.sun.proxy.$Proxy127.createReport(Unknown Source) [na:na]
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_242]
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_242]
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_242]
> at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_242]
> 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) [classes/:na]
> at com.sun.proxy.$Proxy246.createReport(Unknown Source) [na:na]
> at com.haulmont.reports.gui.ReportGuiManager.getReportResult(ReportGuiManager.java:269) [classes/:na]
> at com.haulmont.reports.gui.ReportGuiManager.printReportSync(ReportGuiManager.java:234) [classes/:na]
> at com.haulmont.reports.gui.ReportGuiManager.printReport(ReportGuiManager.java:205) [classes/:na]
> at com.haulmont.reports.gui.report.run.InputParametersWindow.printReport(InputParametersWindow.java:112) [classes/:na]
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_242]
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_242]
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_242]
> at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_242]
> at com.haulmont.cuba.gui.xml.DeclarativeAction.actionPerform(DeclarativeAction.java:92) [classes/:na]
> at com.haulmont.cuba.web.gui.components.WebButton.performAction(WebButton.java:46) [classes/:na]
> at com.haulmont.cuba.web.gui.components.WebButton.lambda$new$61446b05$1(WebButton.java:38) [classes/:na]
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_242]
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_242]
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_242]
> at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_242]
> at com.vaadin.event.ListenerMethod.receiveEvent(ListenerMethod.java:510) ~[shared/:na]
> at com.vaadin.event.EventRouter.fireEvent(EventRouter.java:200) ~[shared/:na]
> at com.vaadin.event.EventRouter.fireEvent(EventRouter.java:163) ~[shared/:na]
> at com.vaadin.server.AbstractClientConnector.fireEvent(AbstractClientConnector.java:1037) ~[shared/:na]
> at com.vaadin.ui.Button.fireClick(Button.java:377) ~[shared/:na]
> at com.haulmont.cuba.web.toolkit.ui.CubaButton.fireClick(CubaButton.java:69) ~[classes/:na]
> at com.vaadin.ui.Button$1.click(Button.java:54) ~[shared/:na]
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_242]
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_242]
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_242]
> at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_242]
> at com.vaadin.server.ServerRpcManager.applyInvocation(ServerRpcManager.java:158) ~[shared/:na]
> at com.vaadin.server.ServerRpcManager.applyInvocation(ServerRpcManager.java:119) ~[shared/:na]
> at com.vaadin.server.communication.ServerRpcHandler.handleInvocation(ServerRpcHandler.java:444) ~[shared/:na]
> at com.vaadin.server.communication.ServerRpcHandler.handleInvocations(ServerRpcHandler.java:409) ~[shared/:na]
> at com.vaadin.server.communication.ServerRpcHandler.handleRpc(ServerRpcHandler.java:274) ~[shared/:na]
> at com.vaadin.server.communication.UidlRequestHandler.synchronizedHandleRequest(UidlRequestHandler.java:90) ~[shared/:na]
> at com.vaadin.server.SynchronizedRequestHandler.handleRequest(SynchronizedRequestHandler.java:41) ~[shared/:na]
> at com.vaadin.server.VaadinService.handleRequest(VaadinService.java:1435) ~[shared/:na]
> at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:361) ~[shared/:na]
> at com.haulmont.cuba.web.sys.CubaApplicationServlet.serviceAppRequest(CubaApplicationServlet.java:324) ~[classes/:na]
> at com.haulmont.cuba.web.sys.CubaApplicationServlet.service(CubaApplicationServlet.java:210) ~[classes/:na]
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) ~[app.jar:na]
> at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:812) ~[app.jar:na]
> at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1669) ~[app.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:107) ~[classes/:na]
> at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) ~[app.jar:na]
> at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585) ~[app.jar:na]
> at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) ~[app.jar:na]
> at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:577) ~[app.jar:na]
> at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223) ~[app.jar:na]
> at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127) ~[app.jar:na]
> at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515) ~[app.jar:na]
> at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185) ~[app.jar:na]
> at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061) ~[app.jar:na]
> at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) ~[app.jar:na]
> at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:110) ~[app.jar:na]
> at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97) ~[app.jar:na]
> at org.eclipse.jetty.server.Server.handle(Server.java:499) ~[app.jar:na]
> at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311) ~[app.jar:na]
> at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:258) ~[app.jar:na]
> at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544) ~[app.jar:na]
> at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635) ~[app.jar:na]
> at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555) ~[app.jar:na]
> at java.lang.Thread.run(Thread.java:748) ~[na:1.8.0_242]
> Caused by: org.docx4j.openpackaging.exceptions.Docx4JException: Error checking image format
> at org.docx4j.openpackaging.parts.WordprocessingML.BinaryPartAbstractImage.ensureFormatIsSupported(BinaryPartAbstractImage.java:612) ~[shared/:na]
> at org.docx4j.openpackaging.parts.WordprocessingML.BinaryPartAbstractImage.ensureFormatIsSupported(BinaryPartAbstractImage.java:500) ~[shared/:na]
> at org.docx4j.openpackaging.parts.WordprocessingML.BinaryPartAbstractImage.createImagePart(BinaryPartAbstractImage.java:264) ~[shared/:na]
> at com.haulmont.yarg.formatters.impl.inline.AbstractInliner.inlineToDocx(AbstractInliner.java:189) ~[shared/:na]
> … 100 common frames omitted
> Caused by: org.apache.xmlgraphics.image.loader.ImageException: The file format is not supported. No ImagePreloader found for file:/tmp/img3558200649807448175.img
> at org.apache.xmlgraphics.image.loader.ImageManager.preloadImage(ImageManager.java:181) ~[shared/:na]
> at org.apache.xmlgraphics.image.loader.cache.ImageCache.needImageInfo(ImageCache.java:128) ~[shared/:na]
> at org.apache.xmlgraphics.image.loader.ImageManager.getImageInfo(ImageManager.java:123) ~[shared/:na]
> at org.docx4j.openpackaging.parts.WordprocessingML.BinaryPartAbstractImage.getImageInfo(BinaryPartAbstractImage.java:907) ~[shared/:na]
> at org.docx4j.openpackaging.parts.WordprocessingML.BinaryPartAbstractImage.ensureFormatIsSupported(BinaryPartAbstractImage.java:603) ~[shared/:na]
> … 103 common frames omitted

I tried to exclude the xmlgraphics that comes with cuba and try to get another version but looks like its forbidden on the cuba repository.