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,

Это мои вопросы:

  1. По какой причине я получаю нулевой конвертер и как это исправить?
  2. В какой библиотеке XDocReport использует itext или odfdom для конвертации?

1 ответ

Обычно я беру библиотеку, которая не была пакетом OSGi, и упаковываю ее. Хорошим уроком о том, как сделать это в Eclipse, является урок Ларса Фогеля: Как создавать плагины Eclipse из jar-файлов.

Затем экспортируйте проект в виде файла JAR, следуя инструкции по созданию файла JAR в Eclipse, и используйте его в своем проекте.

Теперь вы должны решить все ваши зависимости. Дополнительные шаги необходимы, если у вас есть динамическая загрузка классов тоже.

Другие вопросы по тегам