Tengo una nueva aplicación en la que trabajaré en la que tengo que generar un documento de Word que contiene tablas, gráficos, una tabla de contenido y texto. ¿Cuál es una buena API para usar para esto? ¿Qué tan seguro está de que admite gráficos, ToC y tablas? ¿Cuáles son algunos trucos ocultos al usarlos?
Algunas aclaraciones:
- No puedo generar un PDF, quieren un documento de Word.
- Están usando MS Word 2003 (o 2007), no OpenOffice
- La aplicación se está ejecutando en * nix app-server
Sería bueno si pudiera comenzar con un documento de plantilla y simplemente completar algunos espacios con tablas, gráficos, etc.
Editar: Varias buenas respuestas a continuación, cada una con sus propias fallas en cuanto a mi situación actual. Es difícil elegir una "respuesta final" de ellos. Creo que lo dejaré abierto y espero que se creen mejores soluciones.
Editar: El proyecto OpenOffice UNO parece estar más cerca de lo que pedí. Si bien el PDI es ciertamente más común, es demasiado inmaduro para lo que quiero.
Respuestas:
En 2007, mi proyecto utilizó con éxito la interfaz Universal Network Objects (UNO) de OpenOffice.org para generar mediante programación documentos compatibles con MS-Word (* .doc), así como los documentos PDF correspondientes, desde una aplicación web Java (un marco Struts / JSP).
OpenOffice UNO también le permite crear gráficos, hojas de cálculo, presentaciones, etc. compatibles con MS-Office. Pudimos crear de forma dinámica documentos de Word sofisticados, incluidos gráficos y tablas.
Simplificamos el proceso utilizando plantillas de documentos de MS-Word con inserciones de marcadores en las que el software inserta contenido; sin embargo, puede crear documentos completamente desde cero. El objetivo era que el software generara documentos de informes que los usuarios finales pudieran compartir y modificar aún más antes de convertirlos a PDF para su entrega final y archivo.
Opcionalmente, puede producir documentos en formatos OpenOffice si desea que los usuarios utilicen OpenOffice en lugar de MS-Office. En nuestro caso, los usuarios quieren utilizar herramientas de MS-Office.
UNO está incluido dentro de la suite OpenOffice. Simplemente vinculamos nuestra aplicación Java a bibliotecas relacionadas con UNO dentro de la suite. Un kit de desarrollo de software OpenOffice (SDK) está disponible con aplicaciones de ejemplo y guía de la ONU del desarrollador.
No he investigado si el último OpenOffice UNO puede generar formatos de documentos XML abiertos de MS-Office 2007.
Los aspectos importantes de OpenOffice UNO son:
Estos son algunos sitios web útiles:
fuente
Creo que Apache POI puede hacer el trabajo. Un posible problema que depende del uso al que apuntes puede ser causado por el hecho de que HWPF aún se encuentra en desarrollo temprano.
fuente
Puede usar esto: http://code.google.com/p/java2word
Implementé esta API llamada Java2Word. con unas pocas líneas de código, puede generar un documento de Microsoft Word.
P.ej.:
Hay algunos ejemplos de cómo utilizar. Básicamente necesitará un archivo jar. Avísame si necesitas más información sobre cómo configurarlo.
* Escribí esto porque teníamos una necesidad real en un proyecto. Más en mi blog:
http: //leonardo-pinho.blogspot.com/2010/07/java2word-word-document-generator-from.html *
salud Leonardo
Editar : Proyecto en enlace movido a https://github.com/leonardoanalista/java2word
fuente
Pruebe Aspose.Words para Java, se ejecuta en cualquier sistema operativo donde esté instalado Java.
Generará el documento en formato DOC, DOCX o RTF si necesita un formato de salida de MS Word. Todos reciben el mismo apoyo.
Con esta API, puede crear un documento desde cero, literalmente desde nodos y establecer sus propiedades de formato. También puede utilizar un DocumentBuilder que proporciona métodos de nivel superior, como crear una fila de tabla, insertar un campo, etc. O puede copiar / unir / mover partes entre un documento creado previamente existente, digamos que desea armar un contrato, simplemente tome y copie piezas de varios documentos y Aspose.Words fusionará estilos, formato de lista, etc. correctamente en el documento resultante.
Podrá insertar un campo TOC usando Aspose.Words, pero a partir de hoy, el campo TOC requerirá una actualización del campo cuando el documento se abra en Microsoft Word. Sin embargo, vamos a lanzar soporte completo para los campos TOC a principios de 2010. Por ejemplo, construirá un TOC completo como lo hace MS Word.
Estoy en el equipo de Aspose.Words.
fuente
Se mencionó solo brevemente una vez, por lo que me gustaría mencionar la biblioteca docx4j, ya que he tenido más éxito con docx4j que con cualquier otra cosa. El soporte de Apache POI para documentos de Word no es muy bueno. Además, a diferencia de Aspose.Words, docx4j es una biblioteca de código abierto.
El único inconveniente es que con docx4j tienes que crear documentos en formato Office Open XML (docx) en lugar de documentos en formato OLE2 (doc). Este es el formato predeterminado para Word 2007, pero Word 2003 y los usuarios anteriores deberán instalar un paquete de compatibilidad.
fuente
Pruebe Aspose.Words para java.
fuente
Puede utilizar un puente COM de Java como JACOB . Si es del lado del cliente, otra opción sería usar Javascript.
fuente
He usado Aspose.Words para combinar correspondencia en .NET. Creo que también tienen una versión de Java.
fuente
Hay una herramienta llamada JODConverter que se conecta a la oficina abierta para exponer sus convertidores de formato de archivo, hay versiones disponibles como una aplicación web (se encuentra en Tomcat) en la que publicas y una herramienta de línea de comandos. Lo he estado disparando en html y convirtiéndolo a .doc y pdf con éxito, es un proyecto bastante grande, aún no se ha lanzado, pero creo que lo voy a usar. http://sourceforge.net/projects/jodconverter/
fuente
iText es realmente fácil de usar.
Si necesita archivos doc, puede llamar a abiword (procesador de texto multi-os lightweigh gratuito) desde la línea de comandos, tiene varias opciones de conversión de formato de conversión.
fuente
docx4j o poi, ambos de ASL v2
@wondersofcomputing: iText es en realidad gratuito y de código abierto
fuente
Bill, POI e iText API son muy similares desde una perspectiva de programación. He trabajado con ambos en el pasado y los encontré fáciles de usar y bien documentados.
Con iText, obtiene la ventaja de poder cambiar entre formatos (RTF y PDF) con pequeños cambios en el código. Si mal no recuerdo, el contenido se presenta usando las mismas llamadas y luego se configura como PDF o RTF usando algunas líneas de código.
Sin embargo, creo que el formato en RTF es limitado en comparación con DOC. No sé si podrá implementar las funciones avanzadas que está buscando (tablas, imágenes en línea) sin una cantidad decente de molestias, en todo caso.
Dado lo que dijo acerca de que HWPF no tiene suficiente funcionalidad para sus necesidades (solo me he ocupado del lado de Excel de POI), su mejor opción puede ser convencer a los poderes fácticos de que PDF es la mejor tecnología para el trabajo .
fuente
He desarrollado archivos de palabras basados en XML puro en el pasado. Usé .NET, pero el idioma no debería importar ya que es realmente XML. No fue lo más fácil de hacer (tenía un proyecto que lo requería hace un par de años). Estos solo funcionan en Word 2007 o superior, pero todo lo que necesita es el documento técnico de Microsoft que describe lo que hace cada etiqueta. Puede lograr todo lo que quiera con las etiquetas de la misma manera que si estuviera usando Word (por supuesto, un poco más doloroso al principio).
fuente
Después de investigar un poco más, encontré iText , una API de creación de archivos PDF y RTF. Creo que puedo usar la generación RTF para crear un archivo legible en Doc que luego se puede editar con Doc y volver a guardar.
¿Alguien tiene alguna experiencia con iText, usado de esta manera?
fuente
Otra posibilidad más, ya que se trata de una aplicación web.
Pude renderizar una página HTML con el tipo MIME establecido en "application / msword", lo que provocó que el navegador generara Word, que importaba el html sin problemas, lo que permitía editar y guardar como si tuviera un documento Word real.
Las tablas funcionan bien, pero las imágenes aún no funcionaban. Puede ser tan fácil como una etiqueta en el HTML, o puede que tenga que transmitir una parte separada de la respuesta que contenga los datos de la imagen en binario, o algún otro método que no se me haya ocurrido todavía. :)
fuente
Aunque esto es mucho más tarde que la solicitud, podría ayudar a otros. Docmosis proporciona una API de Java para crear documentos en formato doc, pdf, odt utilizando documentos como plantillas. Utiliza OpenOffice como motor para realizar las conversiones de formato. Docmosis realiza la manipulación y la población de documentos.
fuente