From 82816acf4a41448eb0edb60bddae451ed2242122 Mon Sep 17 00:00:00 2001 From: Luc Didry Date: Thu, 8 Mar 2018 14:44:11 +0100 Subject: [PATCH] Fix .doc export with LibreOffice (soffice) (#3338) When using LibreOffice to convert pads to doc, we got `Error: no export filter for /tmp/xxxx.doc` (tested with LO 5 and 6). Maybe it's a regression from LO. Anyway, converting HTML to odt, then to doc works. Thx to lpagliari for her review! --- src/node/utils/LibreOffice.js | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/node/utils/LibreOffice.js b/src/node/utils/LibreOffice.js index 415772456..3cf63e1d6 100644 --- a/src/node/utils/LibreOffice.js +++ b/src/node/utils/LibreOffice.js @@ -35,7 +35,21 @@ var queue = async.queue(doConvertTask, 1); * @param {Function} callback Standard callback function */ exports.convertFile = function(srcFile, destFile, type, callback) { - queue.push({"srcFile": srcFile, "destFile": destFile, "type": type, "callback": callback}); + // soffice can't convert from html to doc directly (verified with LO 5 and 6) + // we need to convert to odt first, then to doc + // to avoid `Error: no export filter for /tmp/xxxx.doc` error + if (type === 'doc') { + queue.push({ + "srcFile": srcFile, + "destFile": destFile.replace(/\.doc$/, '.odt'), + "type": 'odt', + "callback": function () { + queue.push({"srcFile": srcFile.replace(/\.html$/, '.odt'), "destFile": destFile, "type": type, "callback": callback}); + } + }); + } else { + queue.push({"srcFile": srcFile, "destFile": destFile, "type": type, "callback": callback}); + } }; function doConvertTask(task, callback) {