Exemplo n.º 1
0
        public void Decode()
        {
            Filter[] filters = getFilters();
            if (filters.Length == 0)
            {
                return;
            }

            _stream.Position = 0;
            try
            {
                for (int i = 0; i < filters.Length; ++i)
                {
                    switch (filters[i])
                    {
                    case Filter.ASCII85:
                        _stream = ASCII85Decoder.Decode(_stream);
                        break;

                    case Filter.ASCIIHex:
                        _stream = ASCIIHexDecoder.Decode(_stream);
                        break;

                    case Filter.RunLength:
                        _stream = RunLengthDecoder.Decode(_stream);
                        break;

                    case Filter.JPX:
                        _stream = JPXDecoder.Decode(_stream);
                        break;

                    case Filter.CCITTFax:
                        _stream = CCITTFaxDecoder.Decode(_stream, getDecodeParameters(i));
                        break;

                    case Filter.DCT:
                        _stream = DCTDecoder.Decode(_stream, getDecodeParameters(i));
                        break;

                    case Filter.Flate:
                        _stream = FlateDecoder.Decode(_stream, getDecodeParameters(i));
                        break;

                    case Filter.JBIG2:
                        _stream = JBIG2Decoder.Decode(_stream, getDecodeParameters(i));
                        break;

                    case Filter.LZW:
                        _stream = LZWDecoder.Decode(_stream, getDecodeParameters(i));
                        break;
                    }
                    _stream.Position = 0;
                }
            }
            catch
            {
                return;
            }

            _dictionary.RemoveItem("Filter");
            _dictionary.RemoveItem("DecodeParms");
        }