Acabo de instalar mammoth.browser.min (v. 1.2.0) y, usando una etiqueta HTML como se muestra en los documentos, lo probé con éxito en archivos .docx para mostrarlos en el navegador.
Luego traté de implementar parseWordDocxFile a través de una interfaz diferente: después de cargar archivos en un servidor usando $.post , los muestro como una lista. De esta lista, se puede hacer doble clic en cualquier línea de la siguiente manera:
let myFile = {"reference": reference, "type": type}; openDocument (myFile); "referencia" y "tipo" se recuperan de una solicitud $.get : "referencia" es la ruta completa al archivo deseado; "tipo" es el tipo de archivo.
La firma del destinatario es openDocument (theFile) . Esta función incluye un interruptor:
switch (theFile.type) { case 'pdf': case 'PDF': case 'PNG': case 'png': case 'JPEG': case 'jpg': case 'JPG': window.open ( file.reference ); // browser handles it directly break; case 'docx': parseWordDocxFile(file.reference); break; // full path to the file, checked }Para los tipos de archivo .pdf, .png, .jpg, funciona sin problemas.
Ahora, en cuanto a los archivos .docx, no sirve de nada. Al ingresar parseWordDocxFile , Debugger dice:
TypeError: FileReader.readAsArrayBuffer: el argumento 1 no es un objeto
PERO si vuelvo a copiar el archivo del servidor en mi disco local e intento abrirlo con la interfaz HTML (ídem), funciona. En otras palabras, no hay nada malo con el archivo almacenado en el servidor.
Supongo que podría pasar parseWordDocxFile(theFile) un objeto de archivo así:
var objFile = new File ( [data], // type:= [] "Sample.docx", // full path correct { type: "application/vnd.openxmlformats-officedocument.wordprocessingml.document", // type displayed on debugging lastModified: 1650875824000 }pero no tengo idea de qué datos serían.
¿Qué es lo que estoy haciendo mal? ¿Cuál es la forma correcta de hacerlo funcionar?