Hello, I’m using JMIX 2.6 and I’m trying to convert a report with a DOCX template to PDF.
This fails with the following exception:
java.lang.ExceptionInInitializerError: Exception java.lang.AbstractMethodError: Receiver class org.apache.pdfbox.io.RandomAccessReadBuffer does not define or inherit an implementation of the resolved method 'abstract int available()' of interface org.apache.pdfbox.io.RandomAccessRead. [in thread "http-nio-8080-exec-7"]
at org.apache.pdfbox.io.RandomAccessReadBuffer.read(RandomAccessReadBuffer.java:237)
at org.apache.fontbox.cff.CFFParser.parse(CFFParser.java:99)
at org.docx4j.fonts.fop.fonts.truetype.OTFFile.initializeFont(OTFFile.java:109)
at org.docx4j.fonts.fop.fonts.truetype.OpenFont.readFont(OpenFont.java:823)
at org.docx4j.fonts.fop.fonts.truetype.OFFontLoader.read(OFFontLoader.java:121)
at org.docx4j.fonts.fop.fonts.truetype.OFFontLoader.read(OFFontLoader.java:105)
at org.docx4j.fonts.fop.fonts.FontLoader.getFont(FontLoader.java:130)
at org.docx4j.fonts.fop.fonts.FontLoader.loadFont(FontLoader.java:114)
at org.docx4j.fonts.fop.fonts.autodetect.FontInfoFinder.find(FontInfoFinder.java:268)
at org.docx4j.fonts.PhysicalFonts.getPhysicalFont(PhysicalFonts.java:307)
at org.docx4j.fonts.PhysicalFonts.addPhysicalFonts(PhysicalFonts.java:246)
at org.docx4j.fonts.PhysicalFonts.addPhysicalFont(PhysicalFonts.java:236)
at org.docx4j.fonts.PhysicalFonts.discoverPhysicalFonts(PhysicalFonts.java:183)
at org.docx4j.fonts.IdentityPlusMapper.<clinit>(IdentityPlusMapper.java:74)
at org.docx4j.openpackaging.packages.WordprocessingMLPackage.getFontMapper(WordprocessingMLPackage.java:375)
at org.docx4j.convert.out.FOSettings.setOpcPackage(FOSettings.java:99)
at org.docx4j.Docx4J.toPDF(Docx4J.java:738)
at io.jmix.reports.yarg.formatters.impl.DocxFormatter.saveAndClose(DocxFormatter.java:156)
at io.jmix.reports.yarg.formatters.impl.DocxFormatter.renderDocument(DocxFormatter.java:94)
at io.jmix.reports.yarg.reporting.Reporting.generateReport(Reporting.java:132)
at io.jmix.reports.yarg.reporting.Reporting.runReport(Reporting.java:91)
at io.jmix.reports.yarg.reporting.Reporting.runReport(Reporting.java:114)
at io.jmix.reports.runner.impl.ReportRunnerImpl.createReportDocumentInternal(ReportRunnerImpl.java:134)
at io.jmix.reports.runner.impl.ReportRunnerImpl.run(ReportRunnerImpl.java:82)
at io.jmix.reportsflowui.runner.impl.UiReportRunnerImpl.runAndShow(UiReportRunnerImpl.java:113)
at io.jmix.reportsflowui.runner.FluentUiReportRunner.runAndShow(FluentUiReportRunner.java:184)
at io.jmix.reportsflowui.view.run.InputParametersDialog.onPrintReportButtonClick(InputParametersDialog.java:154)
I checked the dependencies and it looks that it’s a mix between different library versions:
Gradle: org.apache.pdfbox:fontbox:3.0.3
Gradle: org.apache.pdfbox:pdfbox:2.0.24
Gradle: org.apache.pdfbox:pdfbox-io:3.0.3
Gradle: org.apache.pdfbox:xmpbox:2.0.24
With the dependency analyser it looks like this for pdfbox:2.0.24:
io.jmix.reports:jmix-reports-rest-starter:2.6.0
io.jmix.reports:jmix-reports-rest:2.6.0
io.jmix.reports:jmix-reports:2.6.0
com.openhtmltopdf:openhtmltopdf-pdfbox:1.0.10
de.rototor.pdfbox:graphics2d:0.32
org.apache.pdfbox:pdfbox:2.0.24
org.apache.pdfbox:pdfbox:2.0.24
and for fontbox:3.0.3
:
io.jmix.reports:jmix-reports-rest-starter:2.6.0
io.jmix.reports:jmix-reports-rest:2.6.0
io.jmix.reports:jmix-reports:2.6.0
org.docx4j:docx4j-JAXB-ReferenceImpl:11.5.3
org.docx4j:docx4j-core:11.5.3
org.apache.pdfbox:fontbox:3.0.3
org.apache.xmlgraphics:fop:2.11
org.apache.xmlgraphics:fop-core:2.11
org.apache.pdfbox:fontbox:3.0.3
com.openhtmltopdf:openhtmltopdf-pdfbox:1.0.10
org.apache.pdfbox:pdfbox:2.0.24
org.apache.pdfbox:fontbox:3.0.3
The reports shows conflicts on fontbox:3.0.3 vs. 2.0.24
Is this a known problem?