diff --git a/pdfminer/image.py b/pdfminer/image.py index d937603..e7b98e8 100644 --- a/pdfminer/image.py +++ b/pdfminer/image.py @@ -71,7 +71,7 @@ class ImageWriter(object): stream = image.stream filters = stream.get_filters() (width, height) = image.srcsize - if len(filters) == 1 and filters[0] in LITERALS_DCT_DECODE: + if len(filters) == 1 and filters[0][0] in LITERALS_DCT_DECODE: ext = '.jpg' elif (image.bits == 1 or image.bits == 8 and image.colorspace in (LITERAL_DEVICE_RGB, LITERAL_DEVICE_GRAY)): diff --git a/pdfminer/pdftypes.py b/pdfminer/pdftypes.py index 8176055..10c0777 100644 --- a/pdfminer/pdftypes.py +++ b/pdfminer/pdftypes.py @@ -218,11 +218,14 @@ class PDFStream(PDFObject): def get_filters(self): filters = self.get_any(('F', 'Filter')) + params = self.get_any(('DP', 'DecodeParms', 'FDecodeParms'), {}) if not filters: return [] - if isinstance(filters, list): - return filters - return [filters] + if not isinstance(filters, list): + filters = [filters] + if not isinstance(params, list): + params = [params] + return zip(filters, params) def decode(self): assert self.data is None and self.rawdata is not None @@ -235,8 +238,7 @@ class PDFStream(PDFObject): self.data = data self.rawdata = None return - for f in filters: - params = self.get_any(('DP', 'DecodeParms', 'FDecodeParms'), {}) + for (f,params) in filters: if f in LITERALS_FLATE_DECODE: # will get errors if the document is encrypted. try: