コード例 #1
0
ファイル: pdftypes.py プロジェクト: kaoruAngel/pdfminer
 def decode(self):
     assert self.data is None and self.rawdata is not None
     data = self.rawdata
     if self.decipher:
         # Handle encryption
         data = self.decipher(self.objid, self.genno, data, self.attrs)
     filters = self.get_filters()
     if not filters:
         self.data = data
         self.rawdata = None
         return
     for f in filters:
         params = self.get_any(('DP', 'DecodeParms', 'FDecodeParms'), {})
         if f in LITERALS_FLATE_DECODE:
             # will get errors if the document is encrypted.
             try:
                 data = zlib.decompress(data)
             except zlib.error as e:
                 if STRICT:
                     raise PDFException('Invalid zlib bytes: %r, %r' % (e, data))
                 data = ''
         elif f in LITERALS_LZW_DECODE:
             data = lzwdecode(data)
         elif f in LITERALS_ASCII85_DECODE:
             data = ascii85decode(data)
         elif f in LITERALS_ASCIIHEX_DECODE:
             data = asciihexdecode(data)
         elif f in LITERALS_RUNLENGTH_DECODE:
             data = rldecode(data)
         elif f in LITERALS_CCITTFAX_DECODE:
             data = ccittfaxdecode(data, params)
         elif f in LITERALS_DCT_DECODE:
             # This is probably a JPG stream - it does not need to be decoded twice.
             # Just return the stream to the user.
             pass
         elif f == LITERAL_CRYPT:
             # not yet..
             raise PDFNotImplementedError('/Crypt filter is unsupported')
         else:
             raise PDFNotImplementedError('Unsupported filter: %r' % f)
         # apply predictors
         if 'Predictor' in params:
             pred = int_value(params['Predictor'])
             if pred == 1:
                 # no predictor
                 pass
             elif 10 <= pred:
                 # PNG predictor
                 colors = int_value(params.get('Colors', 1))
                 columns = int_value(params.get('Columns', 1))
                 bitspercomponent = int_value(params.get('BitsPerComponent', 8))
                 data = apply_png_predictor(pred, colors, columns, bitspercomponent, data)
             else:
                 raise PDFNotImplementedError('Unsupported predictor: %r' % pred)
     self.data = data
     self.rawdata = None
     return
コード例 #2
0
     try:
         data = zlib.decompress(data)
     except zlib.error, e:
         if STRICT:
             raise PDFException('Invalid zlib bytes: %r, %r' % (e, data))
         data = ''
 elif f in LITERALS_LZW_DECODE:
     data = lzwdecode(data)
 elif f in LITERALS_ASCII85_DECODE:
     data = ascii85decode(data)
 elif f in LITERALS_ASCIIHEX_DECODE:
     data = asciihexdecode(data)
 elif f in LITERALS_RUNLENGTH_DECODE:
     data = rldecode(data)
 elif f in LITERALS_CCITTFAX_DECODE:
     data = ccittfaxdecode(data, params)
 elif f == LITERAL_CRYPT:
     # not yet..
     raise PDFNotImplementedError('/Crypt filter is unsupported')
 else:
     raise PDFNotImplementedError('Unsupported filter: %r' % f)
 # apply predictors
 if 'Predictor' in params:
     pred = int_value(params['Predictor'])
     if pred == 1:
         # no predictor
         pass
     elif 10 <= pred:
         # PNG predictor
         colors = int_value(params.get('Colors', 1))
         columns = int_value(params.get('Columns', 1))