CommunityID/libs/Zend/Pdf/Annotation.php

231 lines
6.8 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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 Annotation
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id:
*/
/** @see Zend_Pdf_ElementFactory */
require_once 'Zend/Pdf/ElementFactory.php';
/**
* Abstract PDF annotation representation class
*
* An annotation associates an object such as a note, sound, or movie with a location
* on a page of a PDF document, or provides a way to interact with the user by
* means of the mouse and keyboard.
*
* @package Zend_Pdf
* @subpackage Annotation
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
abstract class Zend_Pdf_Annotation
{
/**
* Annotation dictionary
*
* @var Zend_Pdf_Element_Dictionary|Zend_Pdf_Element_Object|Zend_Pdf_Element_Reference
*/
protected $_annotationDictionary;
/**
* Get annotation dictionary
*
* @internal
* @return Zend_Pdf_Element
*/
public function getResource()
{
return $this->_annotationDictionary;
}
/**
* Set bottom edge of the annotation rectangle.
*
* @param float $bottom
* @return Zend_Pdf_Annotation
*/
public function setBottom($bottom) {
$this->_annotationDictionary->Rect->items[1]->touch();
$this->_annotationDictionary->Rect->items[1]->value = $bottom;
return $this;
}
/**
* Get bottom edge of the annotation rectangle.
*
* @return float
*/
public function getBottom() {
return $this->_annotationDictionary->Rect->items[1]->value;
}
/**
* Set top edge of the annotation rectangle.
*
* @param float $top
* @return Zend_Pdf_Annotation
*/
public function setTop($top) {
$this->_annotationDictionary->Rect->items[3]->touch();
$this->_annotationDictionary->Rect->items[3]->value = $top;
return $this;
}
/**
* Get top edge of the annotation rectangle.
*
* @return float
*/
public function getTop() {
return $this->_annotationDictionary->Rect->items[3]->value;
}
/**
* Set right edge of the annotation rectangle.
*
* @param float $right
* @return Zend_Pdf_Annotation
*/
public function setRight($right) {
$this->_annotationDictionary->Rect->items[2]->touch();
$this->_annotationDictionary->Rect->items[2]->value = $right;
return $this;
}
/**
* Get right edge of the annotation rectangle.
*
* @return float
*/
public function getRight() {
return $this->_annotationDictionary->Rect->items[2]->value;
}
/**
* Set left edge of the annotation rectangle.
*
* @param float $left
* @return Zend_Pdf_Annotation
*/
public function setLeft($left) {
$this->_annotationDictionary->Rect->items[0]->touch();
$this->_annotationDictionary->Rect->items[0]->value = $left;
return $this;
}
/**
* Get left edge of the annotation rectangle.
*
* @return float
*/
public function getLeft() {
return $this->_annotationDictionary->Rect->items[0]->value;
}
/**
* Return text to be displayed for the annotation or, if this type of annotation
* does not display text, an alternate description of the annotations contents
* in human-readable form.
*
* @return string
*/
public function getText() {
if ($this->_annotationDictionary->Contents === null) {
return '';
}
return $this->_annotationDictionary->Contents->value;
}
/**
* Set text to be displayed for the annotation or, if this type of annotation
* does not display text, an alternate description of the annotations contents
* in human-readable form.
*
* @param string $text
* @return Zend_Pdf_Annotation
*/
public function setText($text) {
if ($this->_annotationDictionary->Contents === null) {
$this->_annotationDictionary->touch();
$this->_annotationDictionary->Contents = new Zend_Pdf_Element_String($text);
} else {
$this->_annotationDictionary->Contents->touch();
$this->_annotationDictionary->Contents->value = new Zend_Pdf_Element_String($text);
}
return $this;
}
/**
* Annotation object constructor
*
* @throws Zend_Pdf_Exception
*/
public function __construct(Zend_Pdf_Element $annotationDictionary)
{
if ($annotationDictionary->getType() != Zend_Pdf_Element::TYPE_DICTIONARY) {
require_once 'Zend/Pdf/Exception.php';
throw new Zend_Pdf_Exception('Annotation dictionary resource has to be a dictionary.');
}
$this->_annotationDictionary = $annotationDictionary;
if ($this->_annotationDictionary->Type !== null &&
$this->_annotationDictionary->Type->value != 'Annot') {
require_once 'Zend/Pdf/Exception.php';
throw new Zend_Pdf_Exception('Wrong resource type. \'Annot\' expected.');
}
if ($this->_annotationDictionary->Rect === null) {
require_once 'Zend/Pdf/Exception.php';
throw new Zend_Pdf_Exception('\'Rect\' dictionary entry is required.');
}
if (count($this->_annotationDictionary->Rect->items) != 4 ||
$this->_annotationDictionary->Rect->items[0]->getType() != Zend_Pdf_Element::TYPE_NUMERIC ||
$this->_annotationDictionary->Rect->items[1]->getType() != Zend_Pdf_Element::TYPE_NUMERIC ||
$this->_annotationDictionary->Rect->items[2]->getType() != Zend_Pdf_Element::TYPE_NUMERIC ||
$this->_annotationDictionary->Rect->items[3]->getType() != Zend_Pdf_Element::TYPE_NUMERIC ) {
require_once 'Zend/Pdf/Exception.php';
throw new Zend_Pdf_Exception('\'Rect\' dictionary entry must be an array of four numeric elements.');
}
}
/**
* Load Annotation object from a specified resource
*
* @internal
* @param $destinationArray
* @return Zend_Pdf_Destination
*/
public static function load(Zend_Pdf_Element $resource)
{
/** @todo implementation */
}
}