function decode_stream_data($stream) { $filters = $stream->data['/Filter']; if (!$filters) { $filters = array(); } if (count($filters) && !is_a($filters[0], 'NameObject')) { $filters = array($filters); } $data = $stream->stream; foreach ($filters as $filter_type) { if ($filter_type == '/FlateDecode') { $data = FlateDecode::decode($data, $stream->data['/DecodeParms']); } } return $data; }
function flate_encode() { if (in_array('/Filter', array_keys($this->data))) { $f = $this->data['/Filter']; if (is_array($f)) { array_unshift($f, new NameObject('/FlateDecode')); } else { $newf = array(); $newf[] = new NameObject('/FlateDecode'); $newf[] = $f; $f = $newf; } } else { $f = new NameObject('/FlateDecode'); } $retval = new EncodedStreamObject(); $filter = new NameObject('/Filter'); $retval[$filter] = $f; $retval->stream = FlateDecode::encode($this->stream); return $retval; }