function read_object($stream, $pdf) { $tok = fread($stream, 1); fseek($stream, -1, 1); if ($tok == 't' || $tok == 'f') { return BooleanObject::read_from_stream($stream); } else { if ($tok == '(') { return read_string_from_stream($stream); } else { if ($tok == '/') { return NameObject::read_from_stream($stream); } else { if ($tok == '[') { return ListObject::read_from_stream($stream, $pdf); } else { if ($tok == 'n') { return NullObject::read_from_stream($stream); } else { if ($tok == '<') { $peek = fread($stream, 2); fseek($stream, -2, 1); if ($peek == '<<') { $r = DictionaryObject::read_from_stream($stream, $pdf); return $r; } else { return read_hex_string_from_stream($stream); } } else { if ($tok == '%') { while ($tok != "\r" && $tok != "\n") { $tok = fread($stream, 1); } $tok = read_non_whitespace($stream); fseek($stream, -1, 1); return read_object($stream, $pdf); } else { if ($tok == '+' || $tok == '-') { return NumberObject::read_from_stream($stream); } $peek = fread($stream, 20); fseek($stream, -strlen($peek), 1); if (preg_match("/^(\\d+)\\s(\\d+)\\sR[^a-zA-Z]/", $peek)) { return IndirectObject::read_from_stream($stream, $pdf); } else { return NumberObject::read_from_stream($stream); } } } } } } } } }
/** * @return NullObject */ public function assume() { return NullObject::Instance(); }