diff -r 5b37998e522e -r 162c1de6545a web/lib/Zend/Pdf/Action/URI.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/Zend/Pdf/Action/URI.php Fri Mar 11 15:05:35 2011 +0100 @@ -0,0 +1,167 @@ +URI === null) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('URI action dictionary entry is required'); + } + } + + /** + * Validate URI + * + * @param string $uri + * @return true + * @throws Zend_Pdf_Exception + */ + protected static function _validateUri($uri) + { + $scheme = parse_url((string)$uri, PHP_URL_SCHEME); + if ($scheme === false || $scheme === null) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Invalid URI'); + } + } + + /** + * Create new Zend_Pdf_Action_URI object using specified uri + * + * @param string $uri The URI to resolve, encoded in 7-bit ASCII + * @param boolean $isMap A flag specifying whether to track the mouse position when the URI is resolved + * @return Zend_Pdf_Action_URI + */ + public static function create($uri, $isMap = false) + { + self::_validateUri($uri); + + $dictionary = new Zend_Pdf_Element_Dictionary(); + $dictionary->Type = new Zend_Pdf_Element_Name('Action'); + $dictionary->S = new Zend_Pdf_Element_Name('URI'); + $dictionary->Next = null; + $dictionary->URI = new Zend_Pdf_Element_String($uri); + if ($isMap) { + $dictionary->IsMap = new Zend_Pdf_Element_Boolean(true); + } + + return new Zend_Pdf_Action_URI($dictionary, new SplObjectStorage()); + } + + /** + * Set URI to resolve + * + * @param string $uri The uri to resolve, encoded in 7-bit ASCII. + * @return Zend_Pdf_Action_URI + */ + public function setUri($uri) + { + $this->_validateUri($uri); + + $this->_actionDictionary->touch(); + $this->_actionDictionary->URI = new Zend_Pdf_Element_String($uri); + + return $this; + } + + /** + * Get URI to resolve + * + * @return string + */ + public function getUri() + { + return $this->_actionDictionary->URI->value; + } + + /** + * Set IsMap property + * + * If the IsMap flag is true and the user has triggered the URI action by clicking + * an annotation, the coordinates of the mouse position at the time the action is + * performed should be transformed from device space to user space and then offset + * relative to the upper-left corner of the annotation rectangle. + * + * @param boolean $isMap A flag specifying whether to track the mouse position when the URI is resolved + * @return Zend_Pdf_Action_URI + */ + public function setIsMap($isMap) + { + $this->_actionDictionary->touch(); + + if ($isMap) { + $this->_actionDictionary->IsMap = new Zend_Pdf_Element_Boolean(true); + } else { + $this->_actionDictionary->IsMap = null; + } + + return $this; + } + + /** + * Get IsMap property + * + * If the IsMap flag is true and the user has triggered the URI action by clicking + * an annotation, the coordinates of the mouse position at the time the action is + * performed should be transformed from device space to user space and then offset + * relative to the upper-left corner of the annotation rectangle. + * + * @return boolean + */ + public function getIsMap() + { + return $this->_actionDictionary->IsMap !== null && + $this->_actionDictionary->IsMap->value; + } +}