From 4498554a881d3012a8770a3bc535f161f59a51cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=C5=99=C3=ADk?= Date: Thu, 25 Feb 2021 10:24:26 +0100 Subject: [PATCH] gnujpdf proper string escaping --- .../gnujpdf/src/gnu/jpdf/PDFStringHelper.java | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/libsrc/gnujpdf/src/gnu/jpdf/PDFStringHelper.java b/libsrc/gnujpdf/src/gnu/jpdf/PDFStringHelper.java index 9a2fb9faf..4f3be72b8 100644 --- a/libsrc/gnujpdf/src/gnu/jpdf/PDFStringHelper.java +++ b/libsrc/gnujpdf/src/gnu/jpdf/PDFStringHelper.java @@ -61,18 +61,18 @@ public class PDFStringHelper { try { byte[] utf16be = s.getBytes("UTF-16BE"); List bytes = new ArrayList<>(); - for (int i = 0; i < utf16be.length; i += 2) { - if (utf16be[i] == 0 && utf16be[i + 1] == '(') { - bytes.add((byte) 0); - bytes.add((byte) '\\'); - bytes.add((byte) '('); - } else if (utf16be[i] == 0 && utf16be[i + 1] == ')') { - bytes.add((byte) 0); - bytes.add((byte) '\\'); - bytes.add((byte) ')'); - } else { - bytes.add(utf16be[i]); - bytes.add(utf16be[i + 1]); + for (int i = 0; i < utf16be.length; i++) { + switch (utf16be[i]) { + case '\r': + bytes.add((byte) '\\'); + bytes.add((byte) 'r'); + break; + case '(': + case ')': + case '\\': + bytes.add((byte) '\\'); + default: + bytes.add(utf16be[i]); } } byte[] ret = new byte[bytes.size()];