You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
<?php /** * Zend Framework * * LICENSE * * This source file is subject to the new BSD license that is bundled * with this package in the file LICENSE.txt. * It is also available through the world-wide-web at this URL: * http://framework.zend.com/license/new-bsd * If you did not receive a copy of the license and are unable to * obtain it through the world-wide-web, please send an email * to license@zend.com so we can send you a copy immediately. * * @category Zend * @package Zend_Pdf * @subpackage Actions * @copyright Copyright (c) 2005-2014 Zend Technologies USA Inc. (http://www.zend.com) * @license http://framework.zend.com/license/new-bsd New BSD License * @version $Id$ */
/** Internally used classes */ // require_once 'Zend/Pdf/Element/Dictionary.php';
// require_once 'Zend/Pdf/Element/Name.php';
// require_once 'Zend/Pdf/Element/String.php';
// require_once 'Zend/Pdf/Element/Boolean.php';
/** Zend_Pdf_Action */ // require_once 'Zend/Pdf/Action.php';
/** * PDF 'Resolve a uniform resource identifier' action * * A URI action causes a URI to be resolved. * * @package Zend_Pdf * @subpackage Actions * @copyright Copyright (c) 2005-2014 Zend Technologies USA Inc. (http://www.zend.com) * @license http://framework.zend.com/license/new-bsd New BSD License */ class Zend_Pdf_Action_URI extends Zend_Pdf_Action { /** * Object constructor * * @param Zend_Pdf_Element_Dictionary $dictionary * @param SplObjectStorage $processedActions list of already processed action dictionaries, used to avoid cyclic references * @throws Zend_Pdf_Exception */ public function __construct(Zend_Pdf_Element $dictionary, SplObjectStorage $processedActions) { parent::__construct($dictionary, $processedActions);
if ($dictionary->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; } }
|