Replace \n and \r by \n and \r when saving a string

This commit is contained in:
Calixte Denizet 2020-09-14 17:34:39 +02:00
parent 741ce4f7fc
commit 0c8de5aaf9
2 changed files with 13 additions and 5 deletions

View File

@ -794,9 +794,17 @@ function stringToPDFString(str) {
} }
function escapeString(str) { function escapeString(str) {
// replace "(", ")" and "\" by "\(", "\)" and "\\" // replace "(", ")", "\n", "\r" and "\"
// by "\(", "\)", "\\n", "\\r" and "\\"
// in order to write it in a PDF file. // in order to write it in a PDF file.
return str.replace(/([\(\)\\])/g, "\\$1"); return str.replace(/([\(\)\\\n\r])/g, match => {
if (match === "\n") {
return "\\n";
} else if (match === "\r") {
return "\\r";
}
return `\\${match}`;
});
} }
function stringToUTF8String(str) { function stringToUTF8String(str) {

View File

@ -319,9 +319,9 @@ describe("util", function () {
}); });
describe("escapeString", function () { describe("escapeString", function () {
it("should escape (, ) and \\", function () { it("should escape (, ), \n, \r and \\", function () {
expect(escapeString("((a\\a))(b(b\\b)b)")).toEqual( expect(escapeString("((a\\a))\n(b(b\\b)\rb)")).toEqual(
"\\(\\(a\\\\a\\)\\)\\(b\\(b\\\\b\\)b\\)" "\\(\\(a\\\\a\\)\\)\\n\\(b\\(b\\\\b\\)\\rb\\)"
); );
}); });
}); });