summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--MAT/office.py38
-rw-r--r--MAT/parser.py19
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
24class GenericParser(object): 24class 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)