You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

63 lines
2.0 KiB

/* global process */
var fs = require("fs");
var path = require("path");
var mammoth = require("./");
var promises = require("./promises");
var images = require("./images");
function main(argv) {
var docxPath = argv["docx-path"];
var outputPath = argv["output-path"];
var outputDir = argv.output_dir;
var outputFormat = argv.output_format;
var styleMapPath = argv.style_map;
readStyleMap(styleMapPath).then(function(styleMap) {
var options = {
styleMap: styleMap,
outputFormat: outputFormat
};
if (outputDir) {
var basename = path.basename(docxPath, ".docx");
outputPath = path.join(outputDir, basename + ".html");
var imageIndex = 0;
options.convertImage = images.imgElement(function(element) {
imageIndex++;
var extension = element.contentType.split("/")[1];
var filename = imageIndex + "." + extension;
return element.read().then(function(imageBuffer) {
var imagePath = path.join(outputDir, filename);
return promises.nfcall(fs.writeFile, imagePath, imageBuffer);
}).then(function() {
return {src: filename};
});
});
}
return mammoth.convert({path: docxPath}, options)
.then(function(result) {
result.messages.forEach(function(message) {
process.stderr.write(message.message);
process.stderr.write("\n");
});
var outputStream = outputPath ? fs.createWriteStream(outputPath) : process.stdout;
outputStream.write(result.value);
});
}).done();
}
function readStyleMap(styleMapPath) {
if (styleMapPath) {
return promises.nfcall(fs.readFile, styleMapPath, "utf8");
} else {
return promises.resolve(null);
}
}
module.exports = main;