diff --git a/src/core/core.js b/src/core/core.js index 689078433..13f64454c 100644 --- a/src/core/core.js +++ b/src/core/core.js @@ -291,11 +291,13 @@ var PDFDocument = (function PDFDocumentClosure() { function find(stream, needle, limit, backwards) { var pos = stream.pos; var end = stream.end; - var str = ''; + var strBuf = []; if (pos + limit > end) limit = end - pos; - for (var n = 0; n < limit; ++n) - str += String.fromCharCode(stream.getByte()); + for (var n = 0; n < limit; ++n) { + strBuf.push(String.fromCharCode(stream.getByte())); + } + var str = strBuf.join(''); stream.pos = pos; var index = backwards ? str.lastIndexOf(needle) : str.indexOf(needle); if (index == -1) diff --git a/src/core/fonts.js b/src/core/fonts.js index 1d92856fa..d27cd7b57 100644 --- a/src/core/fonts.js +++ b/src/core/fonts.js @@ -2382,11 +2382,11 @@ var Font = (function FontClosure() { } function arrayToString(arr) { - var str = ''; - for (var i = 0, ii = arr.length; i < ii; ++i) - str += String.fromCharCode(arr[i]); - - return str; + var strBuf = []; + for (var i = 0, ii = arr.length; i < ii; ++i) { + strBuf.push(String.fromCharCode(arr[i])); + } + return strBuf.join(''); } function int16(bytes) { @@ -2801,10 +2801,11 @@ var Font = (function FontClosure() { for (var i = 0, ii = strings.length; i < ii; i++) { var str = proto[1][i] || strings[i]; - var strUnicode = ''; - for (var j = 0, jj = str.length; j < jj; j++) - strUnicode += string16(str.charCodeAt(j)); - stringsUnicode.push(strUnicode); + var strBufUnicode = []; + for (var j = 0, jj = str.length; j < jj; j++) { + strBufUnicode.push(string16(str.charCodeAt(j))); + } + stringsUnicode.push(strBufUnicode.join('')); } var names = [strings, stringsUnicode]; diff --git a/src/shared/util.js b/src/shared/util.js index 343ac14e3..6ffd41985 100644 --- a/src/shared/util.js +++ b/src/shared/util.js @@ -386,11 +386,12 @@ var XRefParseException = (function XRefParseExceptionClosure() { function bytesToString(bytes) { - var str = ''; + var strBuf = []; var length = bytes.length; - for (var n = 0; n < length; ++n) - str += String.fromCharCode(bytes[n]); - return str; + for (var n = 0; n < length; ++n) { + strBuf.push(String.fromCharCode(bytes[n])); + } + return strBuf.join(''); } function stringToBytes(str) { @@ -715,19 +716,20 @@ var PDFStringTranslateTable = [ ]; function stringToPDFString(str) { - var i, n = str.length, str2 = ''; + var i, n = str.length, strBuf = []; if (str[0] === '\xFE' && str[1] === '\xFF') { // UTF16BE BOM - for (i = 2; i < n; i += 2) - str2 += String.fromCharCode( - (str.charCodeAt(i) << 8) | str.charCodeAt(i + 1)); + for (i = 2; i < n; i += 2) { + strBuf.push(String.fromCharCode( + (str.charCodeAt(i) << 8) | str.charCodeAt(i + 1))); + } } else { for (i = 0; i < n; ++i) { var code = PDFStringTranslateTable[str.charCodeAt(i)]; - str2 += code ? String.fromCharCode(code) : str.charAt(i); + strBuf.push(code ? String.fromCharCode(code) : str.charAt(i)); } } - return str2; + return strBuf.join(''); } function stringToUTF8String(str) {