XDocReport конвертирует ODT в PDF с OSGI
Чтобы начать работу с XDocReport, я хочу преобразовать ODT в PDF.
Все мое приложение OSGi. Поэтому я устанавливаю следующие пакеты:
fr.opensagres.xdocreport.converter-1.0.5.jar
fr.opensagres.xdocreport.core-1.0.5.jar
fr.opensagres.xdocreport.document-1.0.5.jar
fr.opensagres.xdocreport.itext.extension-1.0.5.jar
fr.opensagres.xdocreport.template-1.0.5.jar
Кроме того, в пути класса у меня есть itext-4.2.1.jar
(это не комплект OSGi), а я
экспортируйте следующие пакеты:
<package name="com.lowagie.text"/>
<package name="com.lowagie.text.factories"/>
<package name="com.lowagie.text.pdf"/>
<package name="com.lowagie.text.pdf.draw"/>
Однако я не получаю конвертер, используя следующий код:
Options options = Options.getFrom(DocumentKind.ODT).to(ConverterTypeTo.PDF);
IConverter converter = ConverterRegistry.getRegistry().getConverter(options);
in = new FileInputStream(new File("/Temp/Test1.odt"));
OutputStream out = new FileOutputStream(new File("/Temp/Test1.pdf"));
converter.convert(in, out, options); //HERE I GET NullPointerException - converter is null.
Пытаясь решить эту проблему, я добавил следующие пакеты:
org.odftoolkit.odfdom.converter.core-1.0.5.jar
org.odftoolkit.odfdom.converter.pdf-1.0.5.jar
Однако я получаю:
org.osgi.framework.BundleException: неопределенное ограничение в пакете org.odftoolkit.odfdom.converter.core [43]: невозможно выполнить 43.0: отсутствует требование [43.0] osgi.wiring.package; (Osgi.wiring.package = org.odftoolkit.odfdom.dom)
Чтобы решить проблему с org.odftoolkit.odfdom.dom
, я добавил odfdom-java-0.8.7.jar
в classpath (это также не OSGi) и экспортирует следующий пакет:
<package name="org.odftoolkit.odfdom.doc"/>
<package name="org.odftoolkit.odfdom.dom"/>
<package name="org.odftoolkit.odfdom.dom.element.draw"/>
<package name="org.odftoolkit.odfdom.dom.element.office"/>
<package name="org.odftoolkit.odfdom.dom.element.style"/>
<package name="org.odftoolkit.odfdom.dom.element.table"/>
<package name="org.odftoolkit.odfdom.dom.style"/>
<package name="org.odftoolkit.odfdom.incubator.doc.office"/>
<package name="org.odftoolkit.odfdom.incubator.doc.style"/>
<package name="org.odftoolkit.odfdom.pkg"/>
<package name="org.odftoolkit.odfdom.dom.attribute.fo"/>
<package name="org.odftoolkit.odfdom.dom.attribute.style"/>
<package name="org.odftoolkit.odfdom.dom.attribute.table"/>
<package name="org.odftoolkit.odfdom.dom.element"/>
<package name="org.odftoolkit.odfdom.dom.element.svg"/>
<package name="org.odftoolkit.odfdom.dom.element.text"/>
Однако это не помогло, и я до сих пор получаю NullPointerException
.
Это мои вопросы:
- В чем причина, почему я получаю нулевой конвертер и как его исправить?
- В какой библиотеке XDocReport использует itext или odfdom для преобразования?
Ответы
Ответ 1
То, что я обычно делаю, это взять библиотеку, которая не была пакетом OSGi, и завернула ее. Хороший учебник о том, как это сделать в eclipse, - это учебник Lars Vogel: Как создать плагины Eclipse из jars.
Затем экспортируйте проект как файл jar, следуя Создание jar файла в Eclipse, и используйте его в своем проекте.
Теперь у вас должны быть разрешены все ваши зависимости. Дополнительные шаги необходимы, если у вас также есть динамическая загрузка классов.