OpenPDF converter fails with java.lang.NoSuchFieldError: list
andreldm opened this issue · comments
Documents with lists are not properly converted by either PDF converters. The iText-based one will not render bullet points, even the characters as plain text are missing, I think this has been reported in the past. The one based on OpenPDF fails with java.lang.NoSuchFieldError: list
, I can workaround this by replacing lists with bullet point characters but it's very annoying.
Sample document: sample.odt
Any contribution are welcome!
Do you have a full stack trace for this error?
Which version of OpenPDF?
Do you have a full stack trace for this error?
Caused by: java.lang.NoSuchFieldError: list
at fr.opensagres.odfdom.converter.pdf.internal.stylable.StylableList.addElement(StylableList.java:185)
at fr.opensagres.odfdom.converter.pdf.internal.stylable.StylableList.addElement(StylableList.java:93)
at fr.opensagres.odfdom.converter.pdf.internal.ElementVisitorForIText.addITextContainer(ElementVisitorForIText.java:848)
at fr.opensagres.odfdom.converter.pdf.internal.ElementVisitorForIText.addITextContainer(ElementVisitorForIText.java:836)
at fr.opensagres.odfdom.converter.pdf.internal.ElementVisitorForIText.visit(ElementVisitorForIText.java:606)
at org.odftoolkit.odfdom.dom.element.text.TextListItemElement.accept(TextListItemElement.java:198)
at fr.opensagres.odfdom.converter.core.ElementVisitorConverter.visit(ElementVisitorConverter.java:83)
at fr.opensagres.odfdom.converter.pdf.internal.ElementVisitorForIText.addITextContainer(ElementVisitorForIText.java:845)
at fr.opensagres.odfdom.converter.pdf.internal.ElementVisitorForIText.addITextContainer(ElementVisitorForIText.java:836)
at fr.opensagres.odfdom.converter.pdf.internal.ElementVisitorForIText.visit(ElementVisitorForIText.java:595)
at org.odftoolkit.odfdom.dom.element.text.TextListElement.accept(TextListElement.java:188)
at fr.opensagres.odfdom.converter.core.ElementVisitorConverter.visit(ElementVisitorConverter.java:83)
at org.odftoolkit.odfdom.dom.DefaultElementVisitor.visit(DefaultElementVisitor.java:2605)
at fr.opensagres.odfdom.converter.pdf.internal.ElementVisitorForIText.visit(ElementVisitorForIText.java:258)
at org.odftoolkit.odfdom.dom.element.office.OfficeTextElement.accept(OfficeTextElement.java:805)
at fr.opensagres.odfdom.converter.pdf.PdfConverter.processBody(PdfConverter.java:138)
at fr.opensagres.odfdom.converter.pdf.PdfConverter.doConvert(PdfConverter.java:66)
at fr.opensagres.odfdom.converter.pdf.PdfConverter.doConvert(PdfConverter.java:44)
at fr.opensagres.odfdom.converter.core.AbstractODFConverter.convert(AbstractODFConverter.java:42)
at fr.opensagres.xdocreport.converter.odt.odfdom.itext.ODF2PDFViaITextConverter.convert(ODF2PDFViaITextConverter.java:62)
Which version of OpenPDF?
I'm using XDocReport 2.0.6 which I believe transitively brings in OpenPDF 1.3.18. The latest release which is compatible with XDocReport is 1.3.36, same error happens, the latest Java 8-compatible release is 1.3.43 but there are breaking changes.
That's really odd, while debugging it seems like the field exists and is accessible:
I have created an empty maven project in Intellij, the only dependencies are:
<dependency>
<groupId>fr.opensagres.xdocreport</groupId>
<artifactId>xdocreport</artifactId>
<version>2.0.6</version>
</dependency>
<dependency>
<groupId>fr.opensagres.xdocreport</groupId>
<artifactId>fr.opensagres.odfdom.converter.pdf.openpdf</artifactId>
<version>2.0.6</version>
</dependency>
And the code is:
public class Main {
public static void main(String[] args) throws Exception {
InputStream in = Files.newInputStream(Paths.get("sample.odt"));
OutputStream out = Files.newOutputStream(Paths.get("sample.pdf"));
Options options = Options.getFrom(ODT).to(PDF);
ConverterRegistry.getRegistry().getConverter(options).convert(in, out, options);
}
}
I executed the application passing -verbose:class
, there is only one com.lowagie.text.List
class loaded and it comes from openpdf-1.3.18.jar
.
I created a simple reproducible example for this problem: https://github.com/asolntsev/xdocreport-openpdf-demo
@andreasrosdal It doesn't depend on OpenPDF version.
Thank you for reporting and making the test case.
How can we solve this? Is the bug in OpenPDF or xdocreport?
@andreasrosdal I don't know, judging by the stack trace, it's more likely a xdocreport bug