example convert java osgi itext xdocreport odftoolkit

example - convert docx to pdf java



XDocReport convierte ODT a PDF con OSGI (1)

Para comenzar a trabajar con XDocReport, quiero convertir ODT a PDF.

Toda mi aplicación es OSGi. Entonces instalo los siguientes paquetes:

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

Además de la ruta de clase, tengo itext-4.2.1.jar (no es un paquete OSGi) y exporto los siguientes paquetes:

<package name="com.lowagie.text"/> <package name="com.lowagie.text.factories"/> <package name="com.lowagie.text.pdf"/> <package name="com.lowagie.text.pdf.draw"/>

Sin embargo, no consigo el convertidor usando el siguiente código:

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.

Tratando de resolver este problema, agregué los siguientes paquetes:

org.odftoolkit.odfdom.converter.core-1.0.5.jar org.odftoolkit.odfdom.converter.pdf-1.0.5.jar

Sin embargo, me sale:

org.osgi.framework.BundleException: restricción no resuelta en el paquete org.odftoolkit.odfdom.converter.core [43]: no se puede resolver 43.0: falta el requisito [43.0] osgi.wiring.package; (osgi.wiring.package = org.odftoolkit.odfdom.dom)

Para resolver un problema con org.odftoolkit.odfdom.dom , agregué odfdom-java-0.8.7.jar a classpath (tampoco es OSGi) y exporté el siguiente paquete:

<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"/>

Sin embargo, no ayudó y todavía tengo NullPointerException .

Estas son mis preguntas:

  1. ¿Cuál es la razón por la que obtengo un convertidor nulo y cómo solucionarlo?
  2. ¿Qué biblioteca utiliza XDocReport en extensión u odfdom para convertir?

Lo que normalmente hago es tomar la biblioteca, que no era un paquete OSGi, y envolverla. Un buen tutorial sobre cómo hacer esto en eclipse es el tutorial de Lars Vogel''s: Cómo crear complementos de Eclipse a partir de tarros .

Luego, exporte el proyecto como un archivo jar siguiendo la sección Creación de un archivo jar en el tutorial de Eclipse , y use esto en su proyecto.

Ahora debes tener todas tus dependencias resueltas. Se necesitan pasos adicionales en caso de que también tengas carga dinámica de clases.