summaryrefslogtreecommitdiffstats
path: root/pydyf/__init__.py
diff options
context:
space:
mode:
authorDaniel Baumann <mail@daniel-baumann.ch>2021-11-15 03:31:32 +0000
committerDaniel Baumann <mail@daniel-baumann.ch>2021-11-15 03:31:32 +0000
commit8348ac7e15ea3923f448b8c8da927d343ea560eb (patch)
treea9ac602b4370b837ae50f1fd9456c2c436c34345 /pydyf/__init__.py
parentAdding upstream version 0.1.1. (diff)
downloadpydyf-8348ac7e15ea3923f448b8c8da927d343ea560eb.tar.xz
pydyf-8348ac7e15ea3923f448b8c8da927d343ea560eb.zip
Adding upstream version 0.1.2.upstream/0.1.2
Signed-off-by: Daniel Baumann <mail@daniel-baumann.ch>
Diffstat (limited to 'pydyf/__init__.py')
-rwxr-xr-xpydyf/__init__.py10
1 files changed, 8 insertions, 2 deletions
diff --git a/pydyf/__init__.py b/pydyf/__init__.py
index 4ad0bde..05dccf6 100755
--- a/pydyf/__init__.py
+++ b/pydyf/__init__.py
@@ -3,10 +3,11 @@ A low-level PDF generator.
"""
+import re
import zlib
from codecs import BOM_UTF16_BE
-VERSION = __version__ = '0.1.1'
+VERSION = __version__ = '0.1.2'
def _to_bytes(item):
@@ -375,7 +376,12 @@ class String(Object):
@property
def data(self):
try:
- return b'(' + _to_bytes(self.string) + b')'
+ # "A literal string is written as an arbitrary number of characters
+ # enclosed in parentheses. Any characters may appear in a string
+ # except unbalanced parentheses and the backslash, which must be
+ # treated specially."
+ escaped = re.sub(rb'([\\\(\)])', rb'\\\1', _to_bytes(self.string))
+ return b'(' + escaped + b')'
except UnicodeEncodeError:
encoded = BOM_UTF16_BE + str(self.string).encode('utf-16-be')
return b'<' + encoded.hex().encode() + b'>'