diff -r 5b37998e522e -r 162c1de6545a web/lib/Zend/Pdf/Annotation/Markup.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/Zend/Pdf/Annotation/Markup.php Fri Mar 11 15:05:35 2011 +0100 @@ -0,0 +1,142 @@ +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.'); + } + + if ($annotationDictionary->Subtype === null || + $annotationDictionary->Subtype->getType() != Zend_Pdf_Element::TYPE_NAME || + !in_array( $annotationDictionary->Subtype->value, + array(self::SUBTYPE_HIGHLIGHT, + self::SUBTYPE_UNDERLINE, + self::SUBTYPE_SQUIGGLY, + self::SUBTYPE_STRIKEOUT) )) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Subtype => Markup entry is omitted or has wrong value.'); + } + + parent::__construct($annotationDictionary); + } + + /** + * Create markup annotation object + * + * Text markup annotations appear as highlights, underlines, strikeouts or + * jagged ("squiggly") underlines in the text of a document. When opened, + * they display a pop-up window containing the text of the associated note. + * + * $subType parameter may contain + * Zend_Pdf_Annotation_Markup::SUBTYPE_HIGHLIGHT + * Zend_Pdf_Annotation_Markup::SUBTYPE_UNDERLINE + * Zend_Pdf_Annotation_Markup::SUBTYPE_SQUIGGLY + * Zend_Pdf_Annotation_Markup::SUBTYPE_STRIKEOUT + * for for a highlight, underline, squiggly-underline, or strikeout annotation, + * respectively. + * + * $quadPoints is an array of 8xN numbers specifying the coordinates of + * N quadrilaterals default user space. Each quadrilateral encompasses a word or + * group of contiguous words in the text underlying the annotation. + * The coordinates for each quadrilateral are given in the order + * x1 y1 x2 y2 x3 y3 x4 y4 + * specifying the quadrilateral’s four vertices in counterclockwise order + * starting from left bottom corner. + * The text is oriented with respect to the edge connecting points + * (x1, y1) and (x2, y2). + * + * @param float $x1 + * @param float $y1 + * @param float $x2 + * @param float $y2 + * @param string $text + * @param string $subType + * @param array $quadPoints [x1 y1 x2 y2 x3 y3 x4 y4] + * @return Zend_Pdf_Annotation_Markup + * @throws Zend_Pdf_Exception + */ + public static function create($x1, $y1, $x2, $y2, $text, $subType, $quadPoints) + { + $annotationDictionary = new Zend_Pdf_Element_Dictionary(); + + $annotationDictionary->Type = new Zend_Pdf_Element_Name('Annot'); + $annotationDictionary->Subtype = new Zend_Pdf_Element_Name($subType); + + $rectangle = new Zend_Pdf_Element_Array(); + $rectangle->items[] = new Zend_Pdf_Element_Numeric($x1); + $rectangle->items[] = new Zend_Pdf_Element_Numeric($y1); + $rectangle->items[] = new Zend_Pdf_Element_Numeric($x2); + $rectangle->items[] = new Zend_Pdf_Element_Numeric($y2); + $annotationDictionary->Rect = $rectangle; + + $annotationDictionary->Contents = new Zend_Pdf_Element_String($text); + + if (!is_array($quadPoints) || count($quadPoints) == 0 || count($quadPoints) % 8 != 0) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('$quadPoints parameter must be an array of 8xN numbers'); + } + $points = new Zend_Pdf_Element_Array(); + foreach ($quadPoints as $quadPoint) { + $points->items[] = new Zend_Pdf_Element_Numeric($quadPoint); + } + $annotationDictionary->QuadPoints = $points; + + return new Zend_Pdf_Annotation_Markup($annotationDictionary); + } +}