aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2013-04-01 22:39:47 +0100
committerMichael Williamson <mike@zwobble.org>2013-04-01 22:39:47 +0100
commit89d074071d250a23264e9ab82bb896af3e5ce674 (patch)
treeabc9ec9b92d3366217abe568bd0985fe6aabe4d0 /lib
parent720f997476ab2d0ac3cef17b890b423133ae5e7d (diff)
Fix image generation
Diffstat (limited to 'lib')
-rw-r--r--lib/document-to-html.js10
-rw-r--r--lib/docx-reader.js32
2 files changed, 25 insertions, 17 deletions
diff --git a/lib/document-to-html.js b/lib/document-to-html.js
index b9efe0d..916eb57 100644
--- a/lib/document-to-html.js
+++ b/lib/document-to-html.js
@@ -42,7 +42,7 @@ function DocumentConverter(options) {
function convertParagraph(element, html) {
html.style(styleForParagraph(element));
- convertElements(element.children, html);
+ return convertElements(element.children, html);
}
function styleForParagraph(element) {
@@ -63,9 +63,11 @@ function DocumentConverter(options) {
if (run.properties.isItalic) {
runHtml.push(styles.element("em"));
}
- convertElements(run.children, runHtml);
- runHtml.closeAll();
- html.append(runHtml);
+ return convertElements(run.children, runHtml)
+ .then(function() {
+ runHtml.closeAll();
+ html.append(runHtml);
+ });
}
var elementConverters = {
diff --git a/lib/docx-reader.js b/lib/docx-reader.js
index eece7bb..2902943 100644
--- a/lib/docx-reader.js
+++ b/lib/docx-reader.js
@@ -4,6 +4,7 @@ exports.DocumentReader = DocumentReader;
var q = require("q");
var _ = require("underscore");
var ZipFile = require("zipfile").ZipFile;
+var path = require("path");
var xmlreader = require("./xmlreader");
var documents = require("./documents");
@@ -12,20 +13,25 @@ var documents = require("./documents");
function read(docxFile) {
if (_.isString(docxFile)) {
var zipFile = new ZipFile(docxFile);
+ var exists = function(path) {
+ return zipFile.names.indexOf(path) !== -1;
+ }
docxFile = {
read: function(path, encoding) {
- return q.ninvoke(zipFile, "readFile", path)
- .then(function(value) {
- if (encoding) {
- return value;
- } else {
- return value.toString(encoding);
- }
- });
+ if (exists(path)) {
+ return q.ninvoke(zipFile, "readFile", path)
+ .then(function(value) {
+ if (encoding) {
+ return value.toString(encoding);
+ } else {
+ return value;
+ }
+ });
+ } else {
+ return q.reject(new Error("No file in zip: " + path));
+ }
},
- exists: function(path) {
- return zipFile.names.indexOf(path) !== -1;
- }
+ exists: exists
};
}
@@ -41,7 +47,7 @@ function read(docxFile) {
function readXmlFile(docxFile, path) {
if (docxFile.exists(path)) {
- return docxFile.read(path)
+ return docxFile.read(path, "utf-8")
.then(xmlreader.read);
} else {
return null;
@@ -168,7 +174,7 @@ function DocumentReader(relationships, docxFile) {
.attributes["r:embed"];
var imagePath = relationships[relationshipId].target;
var image = documents.Image(function() {
- return docxFile.read(imagePath);
+ return docxFile.read(path.join("word", imagePath));
})
return new Result(image);
}