Skip to content

Commit

Permalink
Merge pull request #8540 from Rob--W/svg-oom
Browse files Browse the repository at this point in the history
Reduce memory requirements of pdf2svg.js example to avoid OOM
  • Loading branch information
yurydelendik authored Jun 20, 2017
2 parents 054fe13 + 0cc1735 commit 9bed695
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 15 deletions.
29 changes: 16 additions & 13 deletions examples/node/domstubs.js
Original file line number Diff line number Diff line change
Expand Up @@ -95,24 +95,27 @@ DOMElement.prototype = {
},

toString: function DOMElement_toString() {
var attrList = [];
for (i in this.attributes) {
attrList.push(i + '="' + xmlEncode(this.attributes[i]) + '"');
var buf = [];
buf.push('<' + this.nodeName);
if (this.nodeName === 'svg:svg') {
buf.push(' xmlns:xlink="http://www.w3.org/1999/xlink"' +
' xmlns:svg="http://www.w3.org/2000/svg"');
}
for (var i in this.attributes) {
buf.push(' ' + i + '="' + xmlEncode(this.attributes[i]) + '"');
}

buf.push('>');

if (this.nodeName === 'svg:tspan' || this.nodeName === 'svg:style') {
var encText = xmlEncode(this.textContent);
return '<' + this.nodeName + ' ' + attrList.join(' ') + '>' +
encText + '</' + this.nodeName + '>';
} else if (this.nodeName === 'svg:svg') {
var ns = 'xmlns:xlink="http://www.w3.org/1999/xlink" ' +
'xmlns:svg="http://www.w3.org/2000/svg"'
return '<' + this.nodeName + ' ' + ns + ' ' + attrList.join(' ') + '>' +
this.childNodes.join('') + '</' + this.nodeName + '>';
buf.push(xmlEncode(this.textContent));
} else {
return '<' + this.nodeName + ' ' + attrList.join(' ') + '>' +
this.childNodes.join('') + '</' + this.nodeName + '>';
this.childNodes.forEach(function(childNode) {
buf.push(childNode.toString());
});
}
buf.push('</' + this.nodeName + '>');
return buf.join('');
},

cloneNode: function DOMElement_cloneNode() {
Expand Down
9 changes: 7 additions & 2 deletions examples/node/pdf2svg.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ var pdfPath = process.argv[2] || '../../web/compressed.tracemonkey-pldi-09.pdf';
var data = new Uint8Array(fs.readFileSync(pdfPath));

// Dumps svg outputs to a folder called svgdump
function writeToFile(svgdump, pageNum) {
function writeToFile(svgdump, pageNum, callback) {
var name = getFileNameFromPath(pdfPath);
fs.mkdir('./svgdump/', function(err) {
if (!err || err.code === 'EEXIST') {
Expand All @@ -29,7 +29,10 @@ function writeToFile(svgdump, pageNum) {
} else {
console.log('Page: ' + pageNum);
}
callback();
});
} else {
callback();
}
});
}
Expand Down Expand Up @@ -67,7 +70,9 @@ pdfjsLib.getDocument({
svgGfx.embedFonts = true;
return svgGfx.getSVG(opList, viewport).then(function (svg) {
var svgDump = svg.toString();
writeToFile(svgDump, pageNum);
return new Promise(function(resolve) {
writeToFile(svgDump, pageNum, resolve);
});
});
});
})
Expand Down

0 comments on commit 9bed695

Please sign in to comment.