Index: library/Zend/Pdf/Annotation/Markup.php =================================================================== --- library/Zend/Pdf/Annotation/Markup.php (revision 0) +++ library/Zend/Pdf/Annotation/Markup.php (revision 0) @@ -0,0 +1,110 @@ +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 || + ($annotationDictionary->Subtype->value != 'Highlight' && + $annotationDictionary->Subtype->value != 'Underline' && + $annotationDictionary->Subtype->value != 'Squiggly' && + $annotationDictionary->Subtype->value != 'StrikeOut')) { + require_once 'Zend/Pdf/Exception.php'; + throw new Zend_Pdf_Exception('Subtype => Markup entry is required'); + } + + parent::__construct($annotationDictionary); + } + + /** + * Create markup annotation object + * + * @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 + */ + 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); + + $points = new Zend_Pdf_Element_Array(); + $points->items[] = new Zend_Pdf_Element_Numeric($quadPoints[0]); + $points->items[] = new Zend_Pdf_Element_Numeric($quadPoints[1]); + $points->items[] = new Zend_Pdf_Element_Numeric($quadPoints[2]); + $points->items[] = new Zend_Pdf_Element_Numeric($quadPoints[3]); + $points->items[] = new Zend_Pdf_Element_Numeric($quadPoints[4]); + $points->items[] = new Zend_Pdf_Element_Numeric($quadPoints[5]); + $points->items[] = new Zend_Pdf_Element_Numeric($quadPoints[6]); + $points->items[] = new Zend_Pdf_Element_Numeric($quadPoints[7]); + $annotationDictionary->QuadPoints = $points; + + return new Zend_Pdf_Annotation_Markup($annotationDictionary); + } +}