Pav*_*l_K 17 java osgi itext odftoolkit xdocreport
要开始使用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
Run Code Online (Sandbox Code Playgroud)
除了类路径我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"/>
Run Code Online (Sandbox Code Playgroud)
但是,我没有使用以下代码获取转换器:
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.
Run Code Online (Sandbox Code Playgroud)
试图解决这个问题我添加了以下包:
org.odftoolkit.odfdom.converter.core-1.0.5.jar
org.odftoolkit.odfdom.converter.pdf-1.0.5.jar
Run Code Online (Sandbox Code Playgroud)
但是,我得到:
org.osgi.framework.BundleException:bundle 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"/>
Run Code Online (Sandbox Code Playgroud)
然而它没有帮助,我仍然得到NullPointerException.
这些是我的问题:
小智 2
我通常做的就是获取不是 OSGi 包的库,并将其包装起来。关于如何在 Eclipse 中执行此操作的一个很好的教程是 Lars Vogel 的教程:如何从 jar 创建 Eclipse 插件。
然后按照在 Eclipse 中创建 jar 文件教程将项目导出为 jar 文件,并在项目中使用它。
现在您应该已经解决了所有依赖项。如果您也有动态类加载,则需要额外的步骤。