diff options
| author | jvoisin | 2011-07-03 13:47:42 +0200 |
|---|---|---|
| committer | jvoisin | 2011-07-03 13:47:42 +0200 |
| commit | 0546f5ce28718c3ecf8e379633341234029bf794 (patch) | |
| tree | 0e64c93ec8170b7a82c3184eee3be0255b74e3ec | |
| parent | 7744e8a5add3e99e277f5eef9e76f0f7e46f2f04 (diff) | |
Fix the unicode problem
| -rw-r--r-- | lib/mat.py | 3 | ||||
| -rw-r--r-- | lib/misc.py | 18 |
2 files changed, 13 insertions, 8 deletions
| @@ -34,7 +34,6 @@ def secure_remove(filename): | |||
| 34 | ''' | 34 | ''' |
| 35 | securely remove the file | 35 | securely remove the file |
| 36 | ''' | 36 | ''' |
| 37 | #FIXME : Vulnerable to shell injection ? | ||
| 38 | try: | 37 | try: |
| 39 | subprocess.call('shred --remove %s' % filename, shell=True) | 38 | subprocess.call('shred --remove %s' % filename, shell=True) |
| 40 | except: | 39 | except: |
| @@ -78,5 +77,5 @@ def create_class_file(name, backup): | |||
| 78 | print("Don't have stripper for file type: %s" % editor.description) | 77 | print("Don't have stripper for file type: %s" % editor.description) |
| 79 | sys.exit(1) | 78 | sys.exit(1) |
| 80 | if editor.input.__class__ == hachoir_parser.misc.PDFDocument: | 79 | if editor.input.__class__ == hachoir_parser.misc.PDFDocument: |
| 81 | return stripper_class(filename, backup) | 80 | return stripper_class(filename, realname, backup) |
| 82 | return stripper_class(realname, filename, parser, editor, backup) | 81 | return stripper_class(realname, filename, parser, editor, backup) |
diff --git a/lib/misc.py b/lib/misc.py index 8063ae1..8e1b5c2 100644 --- a/lib/misc.py +++ b/lib/misc.py | |||
| @@ -10,9 +10,10 @@ class PdfStripper(parser.Generic_parser): | |||
| 10 | ''' | 10 | ''' |
| 11 | Represent a pdf file, with the help of pdfrw | 11 | Represent a pdf file, with the help of pdfrw |
| 12 | ''' | 12 | ''' |
| 13 | def __init__(self, filename, backup): | 13 | def __init__(self, filename, realname, backup): |
| 14 | self.filename = filename | 14 | self.filename = filename |
| 15 | self.backup = backup | 15 | self.backup = backup |
| 16 | self.realname = realname | ||
| 16 | self.trailer = pdfrw.PdfReader(self.filename) | 17 | self.trailer = pdfrw.PdfReader(self.filename) |
| 17 | self.writer = pdfrw.PdfWriter() | 18 | self.writer = pdfrw.PdfWriter() |
| 18 | 19 | ||
| @@ -38,21 +39,27 @@ class PdfStripper(parser.Generic_parser): | |||
| 38 | Transform each pages into a jpg, clean them, | 39 | Transform each pages into a jpg, clean them, |
| 39 | then re-assemble them into a new pdf | 40 | then re-assemble them into a new pdf |
| 40 | ''' | 41 | ''' |
| 41 | output_file = self.filename + parser.POSTFIX + '.pdf' | 42 | output_file = self.realname + parser.POSTFIX + '.pdf' |
| 42 | _, self.tmpdir = tempfile.mkstemp() | 43 | _, self.tmpdir = tempfile.mkstemp() |
| 43 | subprocess.call('gm convert %s %s' % (self.filename, self.tmpdir + | 44 | subprocess.call('gm convert %s %s' % (self.filename, self.tmpdir + |
| 44 | 'temp.jpg'), shell=True) | 45 | 'temp.jpg'), shell=True)#Convert pages to jpg |
| 46 | |||
| 45 | for current_file in glob.glob(self.tmpdir + 'temp*'): | 47 | for current_file in glob.glob(self.tmpdir + 'temp*'): |
| 48 | #Clean every jpg image | ||
| 46 | class_file = mat.create_class_file(current_file, False) | 49 | class_file = mat.create_class_file(current_file, False) |
| 47 | class_file.remove_all() | 50 | class_file.remove_all() |
| 51 | |||
| 48 | subprocess.call('gm convert %s %s' % (self.tmpdir + | 52 | subprocess.call('gm convert %s %s' % (self.tmpdir + |
| 49 | 'temp.jpg*', output_file), shell=True) | 53 | 'temp.jpg*', output_file), shell=True)#Assemble jpg into pdf |
| 54 | |||
| 50 | for current_file in glob.glob(self.tmpdir + 'temp*'): | 55 | for current_file in glob.glob(self.tmpdir + 'temp*'): |
| 56 | #remove jpg files | ||
| 51 | mat.secure_remove(current_file) | 57 | mat.secure_remove(current_file) |
| 58 | |||
| 52 | if self.backup is False: | 59 | if self.backup is False: |
| 53 | mat.secure_remove(self.filename) #remove the old file | 60 | mat.secure_remove(self.filename) #remove the old file |
| 54 | os.rename(output_file, self.filename)#rename the new | 61 | os.rename(output_file, self.filename)#rename the new |
| 55 | name = self.filename | 62 | name = self.realname |
| 56 | else: | 63 | else: |
| 57 | name = output_file | 64 | name = output_file |
| 58 | class_file = mat.create_class_file(name, False) | 65 | class_file = mat.create_class_file(name, False) |
| @@ -75,4 +82,3 @@ class PdfStripper(parser.Generic_parser): | |||
| 75 | for key, value in self.trailer.Info.iteritems(): | 82 | for key, value in self.trailer.Info.iteritems(): |
| 76 | metadata[key[1:]] = value[1:-1] | 83 | metadata[key[1:]] = value[1:-1] |
| 77 | return metadata | 84 | return metadata |
| 78 | |||
