Esempio n. 1
0
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);
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
Esempio n. 2
0
 /**
  * @return NullObject
  */
 public function assume()
 {
     return NullObject::Instance();
 }