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, является урок Ларса Фогеля: Как создавать плагины Eclipse из jar-файлов.
Затем экспортируйте проект в виде файла JAR, следуя инструкции по созданию файла JAR в Eclipse, и используйте его в своем проекте.
Теперь вы должны решить все ваши зависимости. Дополнительные шаги необходимы, если у вас есть динамическая загрузка классов тоже.