AddExtGState(['ca'=>$alpha, 'CA'=>$alpha, 'BM'=>'/'.$bm]); $this->SetExtGState($gs); } public function AddExtGState($parms) { $n = count($this->extgstates)+1; $this->extgstates[$n]['parms'] = $parms; return $n; } public function SetExtGState($gs) { $this->_out(sprintf('/GS%d gs', $gs)); } protected function _enddoc() { if (!empty($this->extgstates) && $this->PDFVersion < '1.4') { $this->PDFVersion='1.4'; } parent::_enddoc(); } protected function _putextgstates() { $count = count($this->extgstates); for ($i = 1; $i <= $count; $i++) { $this->_newobj(); $this->extgstates[$i]['n'] = $this->n; $this->_put('<extgstates[$i]['parms']; $this->_put(sprintf('/ca %.3F', $parms['ca'])); $this->_put(sprintf('/CA %.3F', $parms['CA'])); $this->_put('/BM '.$parms['BM']); $this->_put('>>'); $this->_put('endobj'); } } protected function _putresourcedict() { parent::_putresourcedict(); $this->_put('/ExtGState <<'); foreach ($this->extgstates as $k => $extgstate) { $this->_put('/GS'.$k.' '.$extgstate['n'].' 0 R'); } $this->_put('>>'); } protected function _putresources() { $this->_putextgstates(); parent::_putresources(); } }