summaryrefslogtreecommitdiff
path: root/bin/report/pyPdf/utils.py
diff options
context:
space:
mode:
authorYSA (Openerp) <ysa@tinyerp.com>2011-01-20 11:07:33 +0530
committerYSA (Openerp) <ysa@tinyerp.com>2011-01-20 11:07:33 +0530
commitf030d1219e2411e4b557f960d603fca1fcbb012e (patch)
treef7cc7e772563e2a1fecc9713987b569af35bd0d4 /bin/report/pyPdf/utils.py
parent1b287f9b7b7ffc6719a7839753597341cc75d7fb (diff)
parent10a6bb350c2f054e262ee4649855185795e611d5 (diff)
Merge with trunk-server
bzr revid: ysa@tinyerp.com-20110120053733-ws7mfcfw15p0iyy1
Diffstat (limited to 'bin/report/pyPdf/utils.py')
-rw-r--r--bin/report/pyPdf/utils.py233
1 files changed, 122 insertions, 111 deletions
diff --git a/bin/report/pyPdf/utils.py b/bin/report/pyPdf/utils.py
index 2a778dd0c05..7c1d472d0b7 100644
--- a/bin/report/pyPdf/utils.py
+++ b/bin/report/pyPdf/utils.py
@@ -1,111 +1,122 @@
-# -*- coding: utf-8 -*-
-# vim: sw=4:expandtab:foldmethod=marker
-#
-# Copyright (c) 2006, Mathieu Fenniak
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-# * Redistributions of source code must retain the above copyright notice,
-# this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above copyright notice,
-# this list of conditions and the following disclaimer in the documentation
-# and/or other materials provided with the distribution.
-# * The name of the author may not be used to endorse or promote products
-# derived from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-# POSSIBILITY OF SUCH DAMAGE.
-
-
-"""
-Utility functions for PDF library.
-"""
-__author__ = "Mathieu Fenniak"
-__author_email__ = "biziqe@mathieu.fenniak.net"
-
-#ENABLE_PSYCO = False
-#if ENABLE_PSYCO:
-# try:
-# import psyco
-# except ImportError:
-# ENABLE_PSYCO = False
-#
-#if not ENABLE_PSYCO:
-# class psyco:
-# def proxy(func):
-# return func
-# proxy = staticmethod(proxy)
-
-def readUntilWhitespace(stream, maxchars=None):
- txt = ""
- while True:
- tok = stream.read(1)
- if tok.isspace() or not tok:
- break
- txt += tok
- if len(txt) == maxchars:
- break
- return txt
-
-def readNonWhitespace(stream):
- tok = ' '
- while tok == '\n' or tok == '\r' or tok == ' ' or tok == '\t':
- tok = stream.read(1)
- return tok
-
-class ConvertFunctionsToVirtualList(object):
- def __init__(self, lengthFunction, getFunction):
- self.lengthFunction = lengthFunction
- self.getFunction = getFunction
-
- def __len__(self):
- return self.lengthFunction()
-
- def __getitem__(self, index):
- if not isinstance(index, int):
- raise TypeError, "sequence indices must be integers"
- len_self = len(self)
- if index < 0:
- # support negative indexes
- index = len_self + index
- if index < 0 or index >= len_self:
- raise IndexError, "sequence index out of range"
- return self.getFunction(index)
-
-def RC4_encrypt(key, plaintext):
- S = [i for i in range(256)]
- j = 0
- for i in range(256):
- j = (j + S[i] + ord(key[i % len(key)])) % 256
- S[i], S[j] = S[j], S[i]
- i, j = 0, 0
- retval = ""
- for x in range(len(plaintext)):
- i = (i + 1) % 256
- j = (j + S[i]) % 256
- S[i], S[j] = S[j], S[i]
- t = S[(S[i] + S[j]) % 256]
- retval += chr(ord(plaintext[x]) ^ t)
- return retval
-
-class PdfReadError(Exception):
- pass
-
-if __name__ == "__main__":
- # test RC4
- out = RC4_encrypt("Key", "Plaintext")
- print repr(out)
- pt = RC4_encrypt("Key", out)
- print repr(pt)
+# vim: sw=4:expandtab:foldmethod=marker
+#
+# Copyright (c) 2006, Mathieu Fenniak
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# * Redistributions of source code must retain the above copyright notice,
+# this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright notice,
+# this list of conditions and the following disclaimer in the documentation
+# and/or other materials provided with the distribution.
+# * The name of the author may not be used to endorse or promote products
+# derived from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+
+
+"""
+Utility functions for PDF library.
+"""
+__author__ = "Mathieu Fenniak"
+__author_email__ = "biziqe@mathieu.fenniak.net"
+
+#ENABLE_PSYCO = False
+#if ENABLE_PSYCO:
+# try:
+# import psyco
+# except ImportError:
+# ENABLE_PSYCO = False
+#
+#if not ENABLE_PSYCO:
+# class psyco:
+# def proxy(func):
+# return func
+# proxy = staticmethod(proxy)
+
+def readUntilWhitespace(stream, maxchars=None):
+ txt = ""
+ while True:
+ tok = stream.read(1)
+ if tok.isspace() or not tok:
+ break
+ txt += tok
+ if len(txt) == maxchars:
+ break
+ return txt
+
+def readNonWhitespace(stream):
+ tok = ' '
+ while tok == '\n' or tok == '\r' or tok == ' ' or tok == '\t':
+ tok = stream.read(1)
+ return tok
+
+class ConvertFunctionsToVirtualList(object):
+ def __init__(self, lengthFunction, getFunction):
+ self.lengthFunction = lengthFunction
+ self.getFunction = getFunction
+
+ def __len__(self):
+ return self.lengthFunction()
+
+ def __getitem__(self, index):
+ if not isinstance(index, int):
+ raise TypeError, "sequence indices must be integers"
+ len_self = len(self)
+ if index < 0:
+ # support negative indexes
+ index = len_self + index
+ if index < 0 or index >= len_self:
+ raise IndexError, "sequence index out of range"
+ return self.getFunction(index)
+
+def RC4_encrypt(key, plaintext):
+ S = [i for i in range(256)]
+ j = 0
+ for i in range(256):
+ j = (j + S[i] + ord(key[i % len(key)])) % 256
+ S[i], S[j] = S[j], S[i]
+ i, j = 0, 0
+ retval = ""
+ for x in range(len(plaintext)):
+ i = (i + 1) % 256
+ j = (j + S[i]) % 256
+ S[i], S[j] = S[j], S[i]
+ t = S[(S[i] + S[j]) % 256]
+ retval += chr(ord(plaintext[x]) ^ t)
+ return retval
+
+def matrixMultiply(a, b):
+ return [[sum([float(i)*float(j)
+ for i, j in zip(row, col)]
+ ) for col in zip(*b)]
+ for row in a]
+
+class PyPdfError(Exception):
+ pass
+
+class PdfReadError(PyPdfError):
+ pass
+
+class PageSizeNotDefinedError(PyPdfError):
+ pass
+
+if __name__ == "__main__":
+ # test RC4
+ out = RC4_encrypt("Key", "Plaintext")
+ print repr(out)
+ pt = RC4_encrypt("Key", out)
+ print repr(pt)