Tengo una aplicación web. He generado documentos de MS Word en formato xml (Documento XML de Word 2003) en el lado del servidor. Necesito mostrar este documento a un usuario del lado del cliente usando algún tipo de visor. Entonces, la pregunta es: ¿qué bibliotecas puedo usar para resolver este problema? Necesito una API para ver el documento de Word en el lado del cliente usando java.Visualización del archivo .doc con java applet
Respuesta
No se puede mostrar de forma fiable un documento de Word en una página web utilizando Java (o cualquier otra tecnología simple para el caso). Existen varias bibliotecas comerciales para renderizar Word, pero no las encontrará como soluciones fáciles, baratas o confiables.
Lo que debe hacer es la siguiente:
(1) Abrir el motor de Word en el servidor utilizando un programa .NET (2) Convertir el documento de texto enriquecido utilizando el motor Palabra (3) Visualización el texto enriquecido, ya sea usando el widget RTF swing, o convertir a HTML:
String rtf = [your document rich text];
BufferedReader input = new BufferedReader(new StringReader(rtf));
RTFEditorKit rtfKit = new RTFEditorKit();
StyledDocument doc = (StyledDocument) rtfKit.createDefaultDocument();
rtfEdtrKt.read(input, doc, 0);
input.close();
HTMLEditorKit htmlKit = new HTMLEditorKit();
StringWriter output = new StringWriter();
htmlKit.write(output, doc, 0, doc.getLength());
String html = output.toString();
el principal riesgo de este enfoque es que el motor Palabra ya sea accidente o tiene una pérdida de memoria. Por esta razón, debe tener un mecanismo para reiniciarlo periódicamente y probarlo para asegurarse de que sea funcional y no acapara la memoria.
docx4all es un applet basado en Swing que hace Word 2007 XML (es decir, no Word 2003 XML), que escribimos hace varios años.
Obtenlo de svn.
Ese es un posible enfoque para la edición. Si todo lo que quieres es un visor, ¿qué no convertir a HTML o PDF? Puedes usar docx4j para eso. (Divulgación: "mi" proyecto).
si te entiendo correctamente, docx4j puede ver archivos xml doc a través de applet? – kant
¿Es posible ver el archivo Doc con la clase JRViewer de jasperreport? – kant
El applet docx4all usa docx4j para ver/editar el archivo docx – JasonPlutext
Puede echar un vistazo a Apache POI - Java API to Handle Microsoft Word Files que es capaz de leer todo tipo de documentos de Word (formatos OLE2 y OOXML, extensiones .doc y .docx, respectivamente).
La lectura de un archivo doc puede ser fácil como:
import java.io.*;
import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.extractor.WordExtractor;
public class ReadDocFile {
public static void main(String[] args) {
File file = null;
WordExtractor extractor = null ;
try {
file = new File("c:\\New.doc");
FileInputStream fis=new FileInputStream(file.getAbsolutePath());
HWPFDocument document=new HWPFDocument(fis);
extractor = new WordExtractor(document);
String [] fileData = extractor.getParagraphText();
for(int i=0;i<fileData.length;i++){
if(fileData[i] != null)
System.out.println(fileData[i]);
}
}
catch(Exception exep){}
}
}
Puede encontrar más información en: HWPF Quick-Guide (específicamente HWPF unit tests)
Tenga en cuenta que, de acuerdo con el sitio PDI:
HWPF todavía está en desarrollo temprano.
Necesito escribir archivos de doc. 'POI' no es aplicable para eso. – kant
Sugiero que mire el código fuente de openoffice y lo implemente. Se supone que debe estar escrito en Java.
- 1. Lectura del archivo .Doc con DocumentFormat.OpenXml dll
- 2. Applet de Java en archivo JAR
- 3. Incrustar Java Applet en el archivo .html
- 4. Java Applet Permissions
- 5. Java - Convertir archivo doc/docx en archivo chm
- 6. Visualización de ecuaciones sofisticadas con Java
- 7. Applet: Java heap space
- 8. Automatizar el applet de Java con Python
- 9. Java Applet no en caché
- 10. ver archivo .doc, .docx, .rtf, .ppt en iphone con Webview
- 11. Visualización de árbol con Java
- 12. Java - java.lang.UnsupportedClassVersionError en el applet
- 13. Dónde colocar el archivo de política de java applet?
- 14. ¿Cómo se leía el archivo Doc o Docx en Java?
- 15. Reducción del tiempo de carga del applet
- 16. Java Web Start vs Embedded Java Applet
- 17. Java VNC Applet vs Screen Capture
- 18. Obtenga la dirección IP local correcta del applet de java
- 19. applet de Java con init() en un paquete?
- 20. cómo simular el applet de la tarjeta java con Netbeans?
- 21. Ejecutando un applet de java desde netbeans?
- 22. Visualización del tamaño del archivo: 1000b = 1kb o 1024b = 1kb?
- 23. Convertir programáticamente el archivo docx al doc.
- 24. Problema con Java Applet <--> Comunicación de Javascript
- 25. ¿Cómo puedo iniciar un applet de Java con más memoria?
- 26. ¿Cómo puedo incrustar un applet de Java dinámicamente con Javascript?
- 27. ¿Cuál es la diferencia entre java FX applet y java applet?
- 28. ¿Cómo automatizar el applet de Java?
- 29. Applet ID's y APDU en Java Card
- 30. Silenciar el sonido en Java Applet
Dado que el código del lado del servidor genera el informe, ¿por qué no generarlo como HTML y mostrarlo en una pestaña del navegador
'JEditorPane'? –porque la tarea es generar un informe de doc, que se puede abrir en ms word si es necesario. – kant
Si el usuario desea abrirlo en MS Word, inserte la palabra doc directamente en el navegador con el tipo de contenido apropiado. (Tenga en cuenta que en este cuadro sería cargado por Open Office.) Si el usuario quiere obtener una vista previa primero, genere eso como HTML y muéstrelo en el navegador. –