function o_procset( $id, $action, $options = '' )
    {
        if ( $action != 'new' )
        {
            $o =& $this->objects[$id];
        }
        switch ( $action )
        {
        case 'new':
            $this->objects[$id] = array( 't' => 'procset',
                                         'info' => array( 'PDF' => 1, 'Text' => 1 ) );
            $this->o_pages( $this->currentNode, 'procset', $id );
            $this->procsetObjectId = $id;
            break;
        case 'add':
            // this is to add new items to the procset list, despite the fact that this is considered
            // obselete, the items are required for printing to some postscript printers
            switch ( $options )
            {
            case 'ImageB':
            case 'ImageC':
            case 'ImageI':
                $o['info'][$options] = 1;
                break;
            }
            break;
        case 'out':
            $res = "\n" . $id . " 0 obj\n[";
            foreach ( $o['info'] as $label => $val )
            {
                $res .= '/'.$label.' ';
            }
            $res .= "]\nendobj";
            return $res;
            break;
        }
    }