¿Existe una API de Java que pueda crear documentos de Word enriquecidos? [cerrado]

StackOverflow https://stackoverflow.com/questions/203174

  •  03-07-2019
  •  | 
  •  

Pregunta

Tengo una nueva aplicación en la que estaré trabajando para generar un documento de Word que contenga tablas, gráficos, tabla de contenido y texto. ¿Qué es una buena API para usar para esto? ¿Qué tan seguro está de que es compatible con gráficos, ToCs y tablas? ¿Cuáles son algunos gotcha ocultos en usarlos?

Algunas aclaraciones:

  • No puedo generar un PDF, quieren un documento de Word.
  • Están utilizando MS Word 2003 (o 2007), no OpenOffice
  • La aplicación se está ejecutando en * nix app-server

Sería bueno si pudiera comenzar con una plantilla de documento y simplemente rellenar 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 ser el más cercano a lo que pedí. Si bien el PDI es ciertamente más común, es demasiado inmaduro para lo que quiero.

¿Fue útil?

Solución

En 2007, mi proyecto usó con éxito Objetos de red universales de OpenOffice.org La interfaz (UNO) para generar mediante programación los 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 cuadros, hojas de cálculo, presentaciones, etc. compatibles con MS-Office. Pudimos crear dinámicamente documentos de Word sofisticados, incluidos cuadros y tablas.

Simplificamos el proceso mediante el uso de plantillas de documentos MS-Word con inserciones de marcadores en las que el software insertó el contenido, sin embargo, usted puede crear documentos completamente desde cero. El objetivo era que el software generara documentos de informe que pudieran ser compartidos y ajustados por los usuarios finales antes de convertirlos a PDF para su entrega final y archivo.

Opcionalmente, puede producir documentos en formatos de OpenOffice si desea que los usuarios usen OpenOffice en lugar de MS-Office. En nuestro caso los usuarios quieren usar herramientas de MS-Office.

UNO está incluido dentro de la suite OpenOffice. Simplemente vinculamos nuestra aplicación Java a las bibliotecas relacionadas con UNO dentro de la suite. Existe un OpenOffice Software Development Kit (SDK) que contiene aplicaciones de ejemplo y la Guía del desarrollador de UNO.

No he investigado si el último OpenOffice UNO puede generar formatos de documentos XML abiertos de MS-Office 2007.

Las cosas importantes sobre OpenOffice UNO son:

  1. Es freeware
  2. Es compatible con varios idiomas (por ejemplo, Visual Basic, Java, C ++ y otros).
  3. Es independiente de la plataforma (Windows, Linux, Unix, etc.).

Aquí hay algunos sitios web útiles:

Otros consejos

Creo que PDI de Apache puede hacer el trabajo. Un posible problema, dependiendo del uso que pueda tener su objetivo, puede deberse al hecho de que HWPF aún se encuentra en desarrollo temprano.

  

HWPF   es el conjunto de APIs para lectura y   escribiendo Microsoft Word 97 (-XP)   documentos utilizando (solo) Java.

Podrías 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.

Ej .:

IDocument myDoc = new Document2004();
myDoc.getBody().addEle(new Heading1("Heading01"));
myDoc.getBody().addEle(new Paragraph("This is a paragraph...")

Hay algunos ejemplos de cómo usar. Básicamente necesitará un archivo jar. Avíseme si necesita más información sobre cómo configurarlo.

* Escribí esto porque tuvimos una necesidad real en un proyecto. Más en mi blog:

http: //leonardo-pinho.blogspot.com/2010/07/java2word-word-document-generator-from.html *

saludos Leonardo

Editar : el proyecto en el enlace se movió a https://github.com/leonardoanalista / java2word

Pruebe Aspose.Words para Java, se ejecuta en cualquier sistema operativo donde esté instalado Java.

Enviará el documento a DOC, DOCX o RTF si necesita un formato de salida de MS Word. Todos son compatibles igualmente bien.

Usando esta API puede crear un documento desde cero, literalmente desde nodos y establecer sus propiedades de formato. También puede usar 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 pre creado existente, digamos que desea armar un contrato, solo tome y copie piezas de varios documentos y Aspose.Words fusionará estilos, formará parte del formato, 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 de campo cuando el documento se abra en Microsoft Word. Sin embargo, lanzaremos soporte completo para los campos TOC a principios de 2010. Por ejemplo, construirá TOC completa a medida que MS Word lo haga.

Estoy en el equipo de Aspose.Words.

Se mencionó solo brevemente una vez, así que me gustaría llamar a la biblioteca docx4j, ya que he tenido más éxito con docx4j que 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 tiene 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 los usuarios de Word 2003 y anteriores deberán instalar un paquete de compatibilidad.

Pruebe Aspose.Words para java.

  

Aspose.Words para Java es una biblioteca de clase avanzada (comercial) para Java que le permite realizar una gran variedad de tareas de procesamiento de documentos directamente dentro de sus aplicaciones Java.

     

Aspose.Words para Java admite los formatos DOC, OOXML, RTF, HTML y OpenDocument. Con Aspose.Words puede generar, modificar y convertir documentos sin usar Microsoft Word.

Puede usar un puente COM de Java como JACOB . Si es del lado del cliente, otra opción sería utilizar Javascript.

He usado Aspose.Words para realizar la combinación de correspondencia en .NET. Creo que también tienen una versión de Java.

Hay una herramienta llamada JODConverter que se engancha en la oficina abierta para exponer sus convertidores de formato de archivo, hay versiones disponibles como una aplicación web (se encuentra en Tomcat) que publicas y una herramienta de línea de comandos. Le he estado disparando html y he convertido a .doc y pdf con éxito. Está en un proyecto bastante grande, no se ha lanzado todavía, pero creo que lo voy a usar. http://sourceforge.net/projects/jodconverter/

iText es realmente fácil de usar.

Si requiere archivos de documentos, puede llamar a abiword (el asesor de texto libre de peso ligero de múltiples pesos) desde la línea de comandos, tiene varias opciones de conversión de formato de conversión.

docx4j o poi, ambos de los cuales son ASL v2

@wondersofcomputing: iText es en realidad de código abierto y gratuito

  

Después de un poco más de investigación, encontré iText, una API de creación de archivos RTF y PDF. Creo que puedo usar la generación RTF para crear un archivo legible por Doc que luego se puede editar con Doc y volver a guardar.

     

¿Alguien tiene alguna experiencia con iText, utilizada de esta manera?

Bill, el POI y la API de iText son muy similares desde la perspectiva de la programación. He trabajado con ambos en el pasado y los he encontrado fáciles de usar y bien documentados.

Con iText, obtiene la ventaja de poder cambiar entre formatos (RTF y PDF) con un cambio menor en el código. Si recuerdo correctamente, el contenido se distribuye con las mismas llamadas y luego se configura como PDF o RTF con 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 problemas, en todo caso.

Teniendo en cuenta lo que dijo acerca de que HWPF no tiene la funcionalidad suficiente para sus necesidades (solo he tratado con el lado de Excel del POI), su mejor opción es convencer a los poderes de que PDF es la mejor tecnología. para el trabajo .

He desarrollado archivos de palabras puramente basados ??en XML en el pasado. Usé .NET, pero el lenguaje no debería importar ya que es verdaderamente 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 de Microsoft que describe lo que hace cada etiqueta. Puedes lograr todo lo que quieras con las etiquetas de la misma manera que si estuvieras usando Word (por supuesto, un poco más doloroso inicialmente).

Después de un poco más de investigación, encontré iText , una creación de archivos PDF y RTF API. Creo que puedo usar la generación RTF para crear un archivo legible por Doc que luego se puede editar con Doc y volver a guardar.

¿Alguien tiene alguna experiencia con iText, utilizada de esta manera?

Otra posibilidad más, ya que esta es una aplicación web.

Pude renderizar una página HTML con el tipo MIME configurado en " application / msword " ;, lo que provocó que el navegador generara Word, que importó el HTML correctamente, permitiendo ediciones y guardando solo como si hubiera publicado documento de Word real.

Las tablas funcionan bien, pero aún no he podido trabajar con las imágenes. Puede ser tan fácil como solo una etiqueta en el HTML, o puede que tenga que transmitir una parte separada de la respuesta que contiene los datos de la imagen en binario, o algún otro método que no haya encontrado todavía. :)

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 el motor para realizar las conversiones de formato. La manipulación de documentos y la población se realiza mediante la propia Docmosis.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top