function pdf_resolve_object(&$c, $obj_spec, $encapsulate = true) {
        // Exit if we get invalid data
    	if (!is_array($obj_spec)) {
            return false;
    	}

    	if ($obj_spec[0] == PDF_TYPE_OBJREF) {

    		// This is a reference, resolve it
    		if (isset($this->xref['xref'][$obj_spec[1]][$obj_spec[2]])) {

    			// Save current file position
    			// This is needed if you want to resolve
    			// references while you're reading another object
    			// (e.g.: if you need to determine the length
    			// of a stream)

    			$old_pos = ftell($c->file);

    			// Reposition the file pointer and
    			// load the object header.
				
    			$c->reset($this->xref['xref'][$obj_spec[1]][$obj_spec[2]]);

    			$header = $this->pdf_read_value($c,null,true);

    			if ($header[0] != PDF_TYPE_OBJDEC || $header[1] != $obj_spec[1] || $header[2] != $obj_spec[2]) {
	 			// mPDF 4.0
           			$this->success = false;
            		$this->errormsg = sprintf("Unable to find object ({$obj_spec[1]}, {$obj_spec[2]}) at expected location");
				return false;
    			}

    			// If we're being asked to store all the information
    			// about the object, we add the object ID and generation
    			// number for later use
				$this->actual_obj =& $result;
    			if ($encapsulate) {
    				$result = array (
    					PDF_TYPE_OBJECT,
    					'obj' => $obj_spec[1],
    					'gen' => $obj_spec[2]
    				);
    			} else {
    				$result = array();
    			}

    			// Now simply read the object data until
    			// we encounter an end-of-object marker
    			while(1) {
                    $value = $this->pdf_read_value($c);
					if ($value === false || count($result) > 4) {
						// in this case the parser coudn't find an endobj so we break here
						break;
    				}

    				if ($value[0] == PDF_TYPE_TOKEN && $value[1] === 'endobj') {
    					break;
    				}

                    $result[] = $value;
    			}

    			$c->reset($old_pos);

                if (isset($result[2][0]) && $result[2][0] == PDF_TYPE_STREAM) {
                    $result[0] = PDF_TYPE_STREAM;
                }

    			return $result;
    		}
    	} else {
    		return $obj_spec;
    	}
    }
function pdf_resolve_object(&$c, $obj_spec, $encapsulate = true) {
        // Exit if we get invalid data
    	if (!is_array($obj_spec)) {
            return false;
    	}

    	if ($obj_spec[0] == PDF_TYPE_OBJREF) {

    		// This is a reference, resolve it
    		if (isset($this->xref['xref'][$obj_spec[1]][$obj_spec[2]])) {

    			// Save current file position
    			// This is needed if you want to resolve
    			// references while you're reading another object
    			// (e.g.: if you need to determine the length
    			// of a stream)

    			$old_pos = ftell($c->file);

    			// Reposition the file pointer and
    			// load the object header.
				
    			$c->reset($this->xref['xref'][$obj_spec[1]][$obj_spec[2]]);

    			$header = $this->pdf_read_value($c,null,true);

    			if ($header[0] != PDF_TYPE_OBJDEC || $header[1] != $obj_spec[1] || $header[2] != $obj_spec[2]) {
	 			// mPDF 4.0
           			$this->success = false;
            		$this->errormsg = sprintf("Unable to find object ({$obj_spec[1]}, {$obj_spec[2]}) at expected location");
				return false;
    			}

    			// If we're being asked to store all the information
    			// about the object, we add the object ID and generation
    			// number for later use
				$this->actual_obj =& $result;
    			if ($encapsulate) {
    				$result = array (
    					PDF_TYPE_OBJECT,
    					'obj' => $obj_spec[1],
    					'gen' => $obj_spec[2]
    				);
    			} else {
    				$result = array();
    			}

    			// Now simply read the object data until
    			// we encounter an end-of-object marker
    			while(1) {
                    $value = $this->pdf_read_value($c);
					if ($value === false || count($result) > 4) {
						// in this case the parser coudn't find an endobj so we break here
						break;
    				}

    				if ($value[0] == PDF_TYPE_TOKEN && $value[1] === 'endobj') {
    					break;
    				}

                    $result[] = $value;
    			}

    			$c->reset($old_pos);

                if (isset($result[2][0]) && $result[2][0] == PDF_TYPE_STREAM) {
                    $result[0] = PDF_TYPE_STREAM;
                }

    			return $result;
    		}
    	} else {
    		return $obj_spec;
    	}
    }
function pdf_resolve_object ( & $ c , $ obj_spec , $ encapsulate = true ) { // Exit if we get invalid data if ( ! is_array ( $ obj_spec ) ) { return false ; } if ( $ obj_spec [ 0 ] == PDF_TYPE_OBJREF ) { // This is a reference, resolve it if ( isset ( $ this -> xref [ 'xref' ] [ $ obj_spec [ 1 ] ] [ $ obj_spec [ 2 ] ] ) ) { // Save current file position // This is needed if you want to resolve // references while you're reading another object // (e.g.: if you need to determine the length // of a stream) $ old_pos = ftell ( $ c -> file ) ; // Reposition the file pointer and // load the object header. $ c -> reset ( $ this -> xref [ 'xref' ] [ $ obj_spec [ 1 ] ] [ $ obj_spec [ 2 ] ] ) ; $ header = $ this -> pdf_read_value ( $ c , null , true ) ; if ( $ header [ 0 ] != PDF_TYPE_OBJDEC || $ header [ 1 ] != $ obj_spec [ 1 ] || $ header [ 2 ] != $ obj_spec [ 2 ] ) { // mPDF 4.0 $ this -> success = false ; $ this -> errormsg = sprintf ( "Unable to find object ({$obj_spec[1]}, {$obj_spec[2]}) at expected location" ) ; return false ; } // If we're being asked to store all the information // about the object, we add the object ID and generation // number for later use $ this -> actual_obj = & $ result ; if ( $ encapsulate ) { $ result = array ( PDF_TYPE_OBJECT , 'obj' => $ obj_spec [ 1 ] , 'gen' => $ obj_spec [ 2 ] ) ; } else { $ result = array ( ) ; } // Now simply read the object data until // we encounter an end-of-object marker while ( 1 ) { $ value = $ this -> pdf_read_value ( $ c ) ; if ( $ value === false || count ( $ result ) > 4 ) { // in this case the parser coudn't find an endobj so we break here break ; } if ( $ value [ 0 ] == PDF_TYPE_TOKEN && $ value [ 1 ] === 'endobj' ) { break ; } $ result [ ] = $ value ; } $ c -> reset ( $ old_pos ) ; if ( isset ( $ result [ 2 ] [ 0 ] ) && $ result [ 2 ] [ 0 ] == PDF_TYPE_STREAM ) { $ result [ 0 ] = PDF_TYPE_STREAM ; } return $ result ; } } else { return $ obj_spec ; } }
Resolve an object

@param object $c pdf_context
@param array $obj_spec The object-data
@param boolean $encapsulate Must set to true, cause the parsing and fpdi use this method only without this para
Resolve an object