main.js 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. /* global process */
  2. var fs = require("fs");
  3. var path = require("path");
  4. var mammoth = require("./");
  5. var promises = require("./promises");
  6. var images = require("./images");
  7. function main(argv) {
  8. var docxPath = argv["docx-path"];
  9. var outputPath = argv["output-path"];
  10. var outputDir = argv.output_dir;
  11. var outputFormat = argv.output_format;
  12. var styleMapPath = argv.style_map;
  13. readStyleMap(styleMapPath).then(function(styleMap) {
  14. var options = {
  15. styleMap: styleMap,
  16. outputFormat: outputFormat
  17. };
  18. if (outputDir) {
  19. var basename = path.basename(docxPath, ".docx");
  20. outputPath = path.join(outputDir, basename + ".html");
  21. var imageIndex = 0;
  22. options.convertImage = images.imgElement(function(element) {
  23. imageIndex++;
  24. var extension = element.contentType.split("/")[1];
  25. var filename = imageIndex + "." + extension;
  26. return element.read().then(function(imageBuffer) {
  27. var imagePath = path.join(outputDir, filename);
  28. return promises.nfcall(fs.writeFile, imagePath, imageBuffer);
  29. }).then(function() {
  30. return {src: filename};
  31. });
  32. });
  33. }
  34. return mammoth.convert({path: docxPath}, options)
  35. .then(function(result) {
  36. result.messages.forEach(function(message) {
  37. process.stderr.write(message.message);
  38. process.stderr.write("\n");
  39. });
  40. var outputStream = outputPath ? fs.createWriteStream(outputPath) : process.stdout;
  41. outputStream.write(result.value);
  42. });
  43. }).done();
  44. }
  45. function readStyleMap(styleMapPath) {
  46. if (styleMapPath) {
  47. return promises.nfcall(fs.readFile, styleMapPath, "utf8");
  48. } else {
  49. return promises.resolve(null);
  50. }
  51. }
  52. module.exports = main;