aboutsummaryrefslogtreecommitdiff
path: root/lib/main.js
blob: 1b5655831e98c4eaf646cd430bf23f8208598390 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
var fs = require("fs");
var path = require("path");

var mammoth = require("./");
var promises = require("./promises");
var htmlPaths = require("./html-paths");

function main(argv) {
    var docxPath = argv["docx-path"];
    var outputPath = argv["output-path"];
    var outputDir = argv["output-dir"];
    
    var options = {};
    
    if (outputDir) {
        var basename = path.basename(docxPath, ".docx");
        outputPath = path.join(outputDir, basename + ".html");
        var imageIndex = 0;
        options.convertImage = function(element, html, messages, callback) {
            imageIndex++;
            var extension = element.contentType.split("/")[1];
            var filename = imageIndex + "." + extension;
            
            element.read().then(function(imageBuffer) {
                var imagePath = path.join(outputDir, filename);
                return promises.nfcall(fs.writeFile, imagePath, imageBuffer);
            }).then(function() {
                var attributes = {src: filename};
                if (element.altText) {
                    attributes.alt = element.altText;
                }
                html.selfClosing(htmlPaths.element("img", attributes));
                callback();
            }).fail(callback);
        };
    }
    
    mammoth.convertToHtml({path: docxPath}, options)
        .then(function(result) {
            var outputStream = outputPath ? fs.createWriteStream(outputPath) : process.stdout;
            
            outputStream.write(result.value);
        })
        .done();
}

module.exports = main;