PageRenderTime 30ms CodeModel.GetById 20ms app.highlight 6ms RepoModel.GetById 1ms app.codeStats 0ms

/framework/vendor/zend/Zend/Pdf/Element/String/Binary.php

http://zoop.googlecode.com/
PHP | 98 lines | 31 code | 12 blank | 55 comment | 3 complexity | 1440a6b84869e92e837acd18f21df794 MD5 | raw file
 1<?php
 2/**
 3 * Zend Framework
 4 *
 5 * LICENSE
 6 *
 7 * This source file is subject to the new BSD license that is bundled
 8 * with this package in the file LICENSE.txt.
 9 * It is also available through the world-wide-web at this URL:
10 * http://framework.zend.com/license/new-bsd
11 * If you did not receive a copy of the license and are unable to
12 * obtain it through the world-wide-web, please send an email
13 * to license@zend.com so we can send you a copy immediately.
14 *
15 * @category   Zend
16 * @package    Zend_Pdf
17 * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
18 * @license    http://framework.zend.com/license/new-bsd     New BSD License
19 * @version    $Id: Binary.php 20096 2010-01-06 02:05:09Z bkarwin $
20 */
21
22
23/** Zend_Pdf_Element_String */
24require_once 'Zend/Pdf/Element/String.php';
25
26
27/**
28 * PDF file 'binary string' element implementation
29 *
30 * @category   Zend
31 * @package    Zend_Pdf
32 * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
33 * @license    http://framework.zend.com/license/new-bsd     New BSD License
34 */
35class Zend_Pdf_Element_String_Binary extends Zend_Pdf_Element_String
36{
37    /**
38     * Object value
39     *
40     * @var string
41     */
42    public $value;
43
44
45    /**
46     * Escape string according to the PDF rules
47     *
48     * @param string $inStr
49     * @return string
50     */
51    public static function escape($inStr)
52    {
53        return strtoupper(bin2hex($inStr));
54    }
55
56
57    /**
58     * Unescape string according to the PDF rules
59     *
60     * @param string $inStr
61     * @return string
62     */
63    public static function unescape($inStr)
64    {
65        $chunks = array();
66        $offset = 0;
67        $length = 0;
68        while ($offset < strlen($inStr)) {
69            // Collect hexadecimal characters
70            $start = $offset;
71            $offset += strspn($inStr, "0123456789abcdefABCDEF", $offset);
72            $chunks[] = substr($inStr, $start, $offset - $start);
73            $length += strlen(end($chunks));
74
75            // Skip non-hexadecimal characters
76            $offset += strcspn($inStr, "0123456789abcdefABCDEF", $offset);
77        }
78        if ($length % 2 != 0) {
79            // We have odd number of digits.
80            // Final digit is assumed to be '0'
81            $chunks[] = '0';
82        }
83
84        return pack('H*' , implode($chunks));
85    }
86
87
88    /**
89     * Return object as string
90     *
91     * @param Zend_Pdf_Factory $factory
92     * @return string
93     */
94    public function toString($factory = null)
95    {
96        return '<' . self::escape((string)$this->value) . '>';
97    }
98}