function pdf_read_token(&$c)
    {
    	// If there is a token available
    	// on the stack, pop it out and
    	// return it.

    	if (count($c->stack)) {
    		return array_pop($c->stack);
    	}

    	// Strip away any whitespace

    	do {
    		if (!$c->ensure_content()) {
    			return false;
    		}
    		$c->offset += _strspn($c->buffer, " \n\r\t", $c->offset);
    	} while ($c->offset >= $c->length - 1);

    	// Get the first character in the stream

    	$char = $c->buffer[$c->offset++];

    	switch ($char) {

    		case '['	:
    		case ']'	:
    		case '('	:
    		case ')'	:

    			// This is either an array or literal string
    			// delimiter, Return it

    			return $char;

    		case '<'	:
    		case '>'	:

    			// This could either be a hex string or
    			// dictionary delimiter. Determine the
    			// appropriate case and return the token

    			if ($c->buffer[$c->offset] == $char) {
    				if (!$c->ensure_content()) {
    				    return false;
    				}
    				$c->offset++;
    				return $char . $char;
    			} else {
    				return $char;
    			}

    		default		:

    			// This is "another" type of token (probably
    			// a dictionary entry or a numeric value)
    			// Find the end and return it.

    			if (!$c->ensure_content()) {
    				return false;
    			}

    			while(1) {

    				// Determine the length of the token

    				$pos = _strcspn($c->buffer, " []<>()\r\n\t/", $c->offset);
    				if ($c->offset + $pos <= $c->length - 1) {
    					break;
    				} else {
    					// If the script reaches this point,
    					// the token may span beyond the end
    					// of the current buffer. Therefore,
    					// we increase the size of the buffer
    					// and try again--just to be safe.

    					$c->increase_length();
    				}
    			}

    			$result = substr($c->buffer, $c->offset - 1, $pos + 1);

    			$c->offset += $pos;
    			return $result;
    	}
    }
function pdf_read_token(&$c)
    {
    	// If there is a token available
    	// on the stack, pop it out and
    	// return it.

    	if (count($c->stack)) {
    		return array_pop($c->stack);
    	}

    	// Strip away any whitespace

    	do {
    		if (!$c->ensure_content()) {
    			return false;
    		}
    		$c->offset += _strspn($c->buffer, " \n\r\t", $c->offset);
    	} while ($c->offset >= $c->length - 1);

    	// Get the first character in the stream

    	$char = $c->buffer[$c->offset++];

    	switch ($char) {

    		case '['	:
    		case ']'	:
    		case '('	:
    		case ')'	:

    			// This is either an array or literal string
    			// delimiter, Return it

    			return $char;

    		case '<'	:
    		case '>'	:

    			// This could either be a hex string or
    			// dictionary delimiter. Determine the
    			// appropriate case and return the token

    			if ($c->buffer[$c->offset] == $char) {
    				if (!$c->ensure_content()) {
    				    return false;
    				}
    				$c->offset++;
    				return $char . $char;
    			} else {
    				return $char;
    			}

    		default		:

    			// This is "another" type of token (probably
    			// a dictionary entry or a numeric value)
    			// Find the end and return it.

    			if (!$c->ensure_content()) {
    				return false;
    			}

    			while(1) {

    				// Determine the length of the token

    				$pos = _strcspn($c->buffer, " []<>()\r\n\t/", $c->offset);
    				if ($c->offset + $pos <= $c->length - 1) {
    					break;
    				} else {
    					// If the script reaches this point,
    					// the token may span beyond the end
    					// of the current buffer. Therefore,
    					// we increase the size of the buffer
    					// and try again--just to be safe.

    					$c->increase_length();
    				}
    			}

    			$result = substr($c->buffer, $c->offset - 1, $pos + 1);

    			$c->offset += $pos;
    			return $result;
    	}
    }
function pdf_read_token ( & $ c ) { // If there is a token available // on the stack, pop it out and // return it. if ( count ( $ c -> stack ) ) { return array_pop ( $ c -> stack ) ; } // Strip away any whitespace do { if ( ! $ c -> ensure_content ( ) ) { return false ; } $ c -> offset += _strspn ( $ c -> buffer , " \n\r\t" , $ c -> offset ) ; } while ( $ c -> offset >= $ c -> length - 1 ) ; // Get the first character in the stream $ char = $ c -> buffer [ $ c -> offset ++ ] ; switch ( $ char ) { case '[' : case ']' : case '(' : case ')' : // This is either an array or literal string // delimiter, Return it return $ char ; case '<' : case '>' : // This could either be a hex string or // dictionary delimiter. Determine the // appropriate case and return the token if ( $ c -> buffer [ $ c -> offset ] == $ char ) { if ( ! $ c -> ensure_content ( ) ) { return false ; } $ c -> offset ++ ; return $ char . $ char ; } else { return $ char ; } default : // This is "another" type of token (probably // a dictionary entry or a numeric value) // Find the end and return it. if ( ! $ c -> ensure_content ( ) ) { return false ; } while ( 1 ) { // Determine the length of the token $ pos = _strcspn ( $ c -> buffer , " []<>()\r\n\t/" , $ c -> offset ) ; if ( $ c -> offset + $ pos <= $ c -> length - 1 ) { break ; } else { // If the script reaches this point, // the token may span beyond the end // of the current buffer. Therefore, // we increase the size of the buffer // and try again--just to be safe. $ c -> increase_length ( ) ; } } $ result = substr ( $ c -> buffer , $ c -> offset - 1 , $ pos + 1 ) ; $ c -> offset += $ pos ; return $ result ; } }
Reads a token from the file

@param object $c pdf_context
@return mixed
Reads a token from the file