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:
- ¿Cuál es la razón por la que obtengo un convertidor nulo y cómo solucionarlo?
- ¿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.