value = (string)$val; } /** * Return type of the element. * * @return integer */ public function getType() { return Zend_Pdf_Element::TYPE_NAME; } /** * Escape string according to the PDF rules * * @param string $inStr * @return string */ public static function escape($inStr) { $outStr = ''; for ($count = 0; $count < strlen($inStr); $count++) { $nextCode = ord($inStr[$count]); switch ($inStr[$count]) { case '(': // fall through to next case case ')': // fall through to next case case '<': // fall through to next case case '>': // fall through to next case case '[': // fall through to next case case ']': // fall through to next case case '{': // fall through to next case case '}': // fall through to next case case '/': // fall through to next case case '%': // fall through to next case case '\\': // fall through to next case case '#': $outStr .= sprintf('#%02X', $nextCode); break; default: if ($nextCode >= 33 && $nextCode <= 126 ) { // Visible ASCII symbol $outStr .= $inStr[$count]; } else { $outStr .= sprintf('#%02X', $nextCode); } } } return $outStr; } /** * Unescape string according to the PDF rules * * @param string $inStr * @return string */ public static function unescape($inStr) { $outStr = ''; for ($count = 0; $count < strlen($inStr); $count++) { if ($inStr[$count] != '#' ) { $outStr .= $inStr[$count]; } else { // Escape sequence $outStr .= chr(base_convert(substr($inStr, $count+1, 2), 16, 10 )); $count +=2; } } return $outStr; } /** * Return object as string * * @param Zend_Pdf_Factory $factory * @return string */ public function toString($factory = null) { return '/' . self::escape((string)$this->value); } }