diff options
Diffstat (limited to 'MAT')
| -rw-r--r-- | MAT/office.py | 38 | ||||
| -rw-r--r-- | MAT/parser.py | 19 |
2 files changed, 28 insertions, 29 deletions
diff --git a/MAT/office.py b/MAT/office.py index c44a52b..583e0f9 100644 --- a/MAT/office.py +++ b/MAT/office.py | |||
| @@ -156,23 +156,27 @@ class PdfStripper(parser.GenericParser): | |||
| 156 | python-cairo segfaults on unicode. | 156 | python-cairo segfaults on unicode. |
| 157 | See http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=699457 | 157 | See http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=699457 |
| 158 | ''' | 158 | ''' |
| 159 | output = tempfile.mkstemp()[1] | 159 | try: |
| 160 | page = self.document.get_page(0) | 160 | output = tempfile.mkstemp()[1] |
| 161 | # assume that every pages are the same size | 161 | page = self.document.get_page(0) |
| 162 | page_width, page_height = page.get_size() | 162 | # assume that every pages are the same size |
| 163 | surface = cairo.PDFSurface(output, page_width, page_height) | 163 | page_width, page_height = page.get_size() |
| 164 | context = cairo.Context(surface) # context draws on the surface | 164 | surface = cairo.PDFSurface(output, page_width, page_height) |
| 165 | logging.debug('PDF rendering of %s' % self.filename) | 165 | context = cairo.Context(surface) # context draws on the surface |
| 166 | for pagenum in range(self.document.get_n_pages()): | 166 | logging.debug('PDF rendering of %s' % self.filename) |
| 167 | page = self.document.get_page(pagenum) | 167 | for pagenum in range(self.document.get_n_pages()): |
| 168 | context.translate(0, 0) | 168 | page = self.document.get_page(pagenum) |
| 169 | if self.pdf_quality: | 169 | context.translate(0, 0) |
| 170 | page.render(context) # render the page on context | 170 | if self.pdf_quality: |
| 171 | else: | 171 | page.render(context) # render the page on context |
| 172 | page.render_for_printing(context) # render the page on context | 172 | else: |
| 173 | context.show_page() # draw context on surface | 173 | page.render_for_printing(context) # render the page on context |
| 174 | surface.finish() | 174 | context.show_page() # draw context on surface |
| 175 | shutil.move(output, self.output) | 175 | surface.finish() |
| 176 | shutil.move(output, self.output) | ||
| 177 | except: | ||
| 178 | logging.error('Something went wrong when cleaning %s. File not cleaned' % self.filename) | ||
| 179 | return False | ||
| 176 | 180 | ||
| 177 | try: | 181 | try: |
| 178 | import pdfrw # For now, poppler cannot write meta, so we must use pdfrw | 182 | import pdfrw # For now, poppler cannot write meta, so we must use pdfrw |
diff --git a/MAT/parser.py b/MAT/parser.py index c57eb00..c1c3f4c 100644 --- a/MAT/parser.py +++ b/MAT/parser.py | |||
| @@ -22,8 +22,7 @@ FIELD = object() | |||
| 22 | 22 | ||
| 23 | 23 | ||
| 24 | class GenericParser(object): | 24 | class GenericParser(object): |
| 25 | ''' | 25 | ''' Parent class of all parsers |
| 26 | Parent class of all parsers | ||
| 27 | ''' | 26 | ''' |
| 28 | def __init__(self, filename, parser, mime, backup, is_writable, **kwargs): | 27 | def __init__(self, filename, parser, mime, backup, is_writable, **kwargs): |
| 29 | self.filename = '' | 28 | self.filename = '' |
| @@ -66,8 +65,7 @@ class GenericParser(object): | |||
| 66 | return True | 65 | return True |
| 67 | 66 | ||
| 68 | def remove_all(self): | 67 | def remove_all(self): |
| 69 | ''' | 68 | ''' Remove all compromising fields |
| 70 | Remove all compromising fields | ||
| 71 | ''' | 69 | ''' |
| 72 | state = self._remove_all(self.editor) | 70 | state = self._remove_all(self.editor) |
| 73 | hachoir_core.field.writeIntoFile(self.editor, self.output) | 71 | hachoir_core.field.writeIntoFile(self.editor, self.output) |
| @@ -75,8 +73,7 @@ class GenericParser(object): | |||
| 75 | return state | 73 | return state |
| 76 | 74 | ||
| 77 | def _remove_all(self, fieldset): | 75 | def _remove_all(self, fieldset): |
| 78 | ''' | 76 | ''' Recursive way to handle tree metadatas |
| 79 | Recursive way to handle tree metadatas | ||
| 80 | ''' | 77 | ''' |
| 81 | try: | 78 | try: |
| 82 | for field in fieldset: | 79 | for field in fieldset: |
| @@ -90,8 +87,7 @@ class GenericParser(object): | |||
| 90 | return False | 87 | return False |
| 91 | 88 | ||
| 92 | def _remove(self, fieldset, field): | 89 | def _remove(self, fieldset, field): |
| 93 | ''' | 90 | ''' Delete the given field |
| 94 | Delete the given field | ||
| 95 | ''' | 91 | ''' |
| 96 | del fieldset[field] | 92 | del fieldset[field] |
| 97 | 93 | ||
| @@ -104,8 +100,7 @@ class GenericParser(object): | |||
| 104 | return metadata | 100 | return metadata |
| 105 | 101 | ||
| 106 | def _get_meta(self, fieldset, metadata): | 102 | def _get_meta(self, fieldset, metadata): |
| 107 | ''' | 103 | ''' Recursive way to handle tree metadatas |
| 108 | Recursive way to handle tree metadatas | ||
| 109 | ''' | 104 | ''' |
| 110 | for field in fieldset: | 105 | for field in fieldset: |
| 111 | remove = self._should_remove(field) | 106 | remove = self._should_remove(field) |
| @@ -119,7 +114,7 @@ class GenericParser(object): | |||
| 119 | 114 | ||
| 120 | def _should_remove(self, key): | 115 | def _should_remove(self, key): |
| 121 | ''' | 116 | ''' |
| 122 | return True if the field is compromising | 117 | Return True if the field is compromising |
| 123 | abstract method | 118 | abstract method |
| 124 | ''' | 119 | ''' |
| 125 | raise NotImplementedError | 120 | raise NotImplementedError |
| @@ -137,7 +132,7 @@ class GenericParser(object): | |||
| 137 | but it greatly simplify new strippers implementation. | 132 | but it greatly simplify new strippers implementation. |
| 138 | ''' | 133 | ''' |
| 139 | if self.backup: | 134 | if self.backup: |
| 140 | os.rename(self.filename, self.filename + '.bak') | 135 | shutil.move(self.filename, self.filename + '.bak') |
| 141 | else: | 136 | else: |
| 142 | mat.secure_remove(self.filename) | 137 | mat.secure_remove(self.filename) |
| 143 | os.rename(self.output, self.filename) | 138 | os.rename(self.output, self.filename) |
