import v2.0.0.0_RC3 | 2012-07-01

https://github.com/lucanos/CommunityID -> http://www.itadmins.net/archives/357
This commit is contained in:
2019-07-17 22:31:04 +02:00
parent 38c146901c
commit 2f397f01f7
2677 changed files with 296182 additions and 45159 deletions

View File

@ -16,7 +16,7 @@
* @package Zend_Pdf
* @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: Array.php 17532 2009-08-10 19:04:14Z alexander $
* @version $Id: Array.php 18993 2009-11-15 17:09:16Z alexander $
*/
@ -57,11 +57,13 @@ class Zend_Pdf_Element_Array extends Zend_Pdf_Element
if ($val !== null && is_array($val)) {
foreach ($val as $element) {
if (!$element instanceof Zend_Pdf_Element) {
require_once 'Zend/Pdf/Exception.php';
throw new Zend_Pdf_Exception('Array elements must be Zend_Pdf_Element objects');
}
$this->items[] = $element;
}
} else if ($val !== null){
require_once 'Zend/Pdf/Exception.php';
throw new Zend_Pdf_Exception('Argument must be an array');
}
}

View File

@ -16,7 +16,7 @@
* @package Zend_Pdf
* @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: Boolean.php 16541 2009-07-07 06:59:03Z bkarwin $
* @version $Id: Boolean.php 18993 2009-11-15 17:09:16Z alexander $
*/
@ -51,6 +51,7 @@ class Zend_Pdf_Element_Boolean extends Zend_Pdf_Element
public function __construct($val)
{
if (! is_bool($val)) {
require_once 'Zend/Pdf/Exception.php';
throw new Zend_Pdf_Exception('Argument must be boolean.');
}

View File

@ -16,14 +16,17 @@
* @package Zend_Pdf
* @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: Dictionary.php 16541 2009-07-07 06:59:03Z bkarwin $
* @version $Id: Dictionary.php 18993 2009-11-15 17:09:16Z alexander $
*/
/** Internally used classes */
require_once 'Zend/Pdf/Element/Name.php';
/** Zend_Pdf_Element */
require_once 'Zend/Pdf/Element.php';
/**
* PDF file 'dictionary' element implementation
*
@ -54,14 +57,17 @@ class Zend_Pdf_Element_Dictionary extends Zend_Pdf_Element
if ($val === null) {
return;
} else if (!is_array($val)) {
require_once 'Zend/Pdf/Exception.php';
throw new Zend_Pdf_Exception('Argument must be an array');
}
foreach ($val as $name => $element) {
if (!$element instanceof Zend_Pdf_Element) {
require_once 'Zend/Pdf/Exception.php';
throw new Zend_Pdf_Exception('Array elements must be Zend_Pdf_Element objects');
}
if (!is_string($name)) {
require_once 'Zend/Pdf/Exception.php';
throw new Zend_Pdf_Exception('Array keys must be strings');
}
$this->_items[$name] = $element;
@ -145,6 +151,7 @@ class Zend_Pdf_Element_Dictionary extends Zend_Pdf_Element
foreach ($this->_items as $name => $element) {
if (!is_object($element)) {
require_once 'Zend/Pdf/Exception.php';
throw new Zend_Pdf_Exception('Wrong data');
}

View File

@ -16,7 +16,7 @@
* @package Zend_Pdf
* @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: Name.php 16541 2009-07-07 06:59:03Z bkarwin $
* @version $Id: Name.php 18993 2009-11-15 17:09:16Z alexander $
*/
@ -52,6 +52,7 @@ class Zend_Pdf_Element_Name extends Zend_Pdf_Element
{
settype($val, 'string');
if (strpos($val,"\x00") !== false) {
require_once 'Zend/Pdf/Exception.php';
throw new Zend_Pdf_Exception('Null character is not allowed in PDF Names');
}
$this->value = (string)$val;

View File

@ -16,16 +16,13 @@
* @package Zend_Pdf
* @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: Object.php 17182 2009-07-27 13:54:11Z alexander $
* @version $Id: Object.php 18993 2009-11-15 17:09:16Z alexander $
*/
/** Zend_Pdf_Element */
require_once 'Zend/Pdf/Element.php';
/** Zend_Pdf_ElementFactory */
require_once 'Zend/Pdf/ElementFactory.php';
/**
* PDF file 'indirect object' element implementation
@ -77,14 +74,17 @@ class Zend_Pdf_Element_Object extends Zend_Pdf_Element
public function __construct(Zend_Pdf_Element $val, $objNum, $genNum, Zend_Pdf_ElementFactory $factory)
{
if ($val instanceof self) {
require_once 'Zend/Pdf/Exception.php';
throw new Zend_Pdf_Exception('Object number must not be an instance of Zend_Pdf_Element_Object.');
}
if ( !(is_integer($objNum) && $objNum > 0) ) {
require_once 'Zend/Pdf/Exception.php';
throw new Zend_Pdf_Exception('Object number must be positive integer.');
}
if ( !(is_integer($genNum) && $genNum >= 0) ) {
require_once 'Zend/Pdf/Exception.php';
throw new Zend_Pdf_Exception('Generation number must be non-negative integer.');
}

View File

@ -16,32 +16,19 @@
* @package Zend_Pdf
* @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: Stream.php 16541 2009-07-07 06:59:03Z bkarwin $
* @version $Id: Stream.php 18993 2009-11-15 17:09:16Z alexander $
*/
/** Internally used classes */
require_once 'Zend/Pdf/Element/Stream.php';
require_once 'Zend/Pdf/Element/Dictionary.php';
require_once 'Zend/Pdf/Element/Numeric.php';
/** Zend_Pdf_Element_Object */
require_once 'Zend/Pdf/Element/Object.php';
/** Zend_Pdf_Element_Stream */
require_once 'Zend/Pdf/Element/Stream.php';
/** Zend_Pdf_Filter_Ascii85 */
require_once 'Zend/Pdf/Filter/Ascii85.php';
/** Zend_Pdf_Filter_AsciiHex */
require_once 'Zend/Pdf/Filter/AsciiHex.php';
/** Zend_Pdf_Filter_Compression_Flate */
require_once 'Zend/Pdf/Filter/Compression/Flate.php';
/** Zend_Pdf_Filter_Compression_Lzw */
require_once 'Zend/Pdf/Filter/Compression/Lzw.php';
/** Zend_Pdf_ElementFactory */
require_once 'Zend/Pdf/ElementFactory.php';
/**
* PDF file 'stream object' element implementation
*
@ -194,6 +181,7 @@ class Zend_Pdf_Element_Object_Stream extends Zend_Pdf_Element_Object
*/
if (isset($this->_originalDictionary['F'])) {
/** @todo Check, how external files can be processed. */
require_once 'Zend/Pdf/Exception.php';
throw new Zend_Pdf_Exception('External filters are not supported now.');
}
@ -202,24 +190,29 @@ class Zend_Pdf_Element_Object_Stream extends Zend_Pdf_Element_Object
$this->_value->value->touch();
switch ($filterName) {
case 'ASCIIHexDecode':
require_once 'Zend/Pdf/Filter/AsciiHex.php';
$valueRef = Zend_Pdf_Filter_AsciiHex::decode($valueRef);
break;
case 'ASCII85Decode':
require_once 'Zend/Pdf/Filter/Ascii85.php';
$valueRef = Zend_Pdf_Filter_Ascii85::decode($valueRef);
break;
case 'FlateDecode':
require_once 'Zend/Pdf/Filter/Compression/Flate.php';
$valueRef = Zend_Pdf_Filter_Compression_Flate::decode($valueRef,
$this->_originalDictionary['DecodeParms'][$id]);
break;
case 'LZWDecode':
require_once 'Zend/Pdf/Filter/Compression/Lzw.php';
$valueRef = Zend_Pdf_Filter_Compression_Lzw::decode($valueRef,
$this->_originalDictionary['DecodeParms'][$id]);
break;
default:
require_once 'Zend/Pdf/Exception.php';
throw new Zend_Pdf_Exception('Unknown stream filter: \'' . $filterName . '\'.');
}
}
@ -240,6 +233,7 @@ class Zend_Pdf_Element_Object_Stream extends Zend_Pdf_Element_Object
*/
if (isset($this->_originalDictionary['F'])) {
/** @todo Check, how external files can be processed. */
require_once 'Zend/Pdf/Exception.php';
throw new Zend_Pdf_Exception('External filters are not supported now.');
}
@ -250,24 +244,29 @@ class Zend_Pdf_Element_Object_Stream extends Zend_Pdf_Element_Object
$this->_value->value->touch();
switch ($filterName) {
case 'ASCIIHexDecode':
require_once 'Zend/Pdf/Filter/AsciiHex.php';
$valueRef = Zend_Pdf_Filter_AsciiHex::encode($valueRef);
break;
case 'ASCII85Decode':
require_once 'Zend/Pdf/Filter/Ascii85.php';
$valueRef = Zend_Pdf_Filter_Ascii85::encode($valueRef);
break;
case 'FlateDecode':
require_once 'Zend/Pdf/Filter/Compression/Flate.php';
$valueRef = Zend_Pdf_Filter_Compression_Flate::encode($valueRef,
$this->_originalDictionary['DecodeParms'][$id]);
break;
case 'LZWDecode':
require_once 'Zend/Pdf/Filter/Compression/Lzw.php';
$valueRef = Zend_Pdf_Filter_Compression_Lzw::encode($valueRef,
$this->_originalDictionary['DecodeParms'][$id]);
break;
default:
require_once 'Zend/Pdf/Exception.php';
throw new Zend_Pdf_Exception('Unknown stream filter: \'' . $filterName . '\'.');
}
}
@ -303,6 +302,7 @@ class Zend_Pdf_Element_Object_Stream extends Zend_Pdf_Element_Object
return $this->_value->value->getRef();
}
require_once 'Zend/Pdf/Exception.php';
throw new Zend_Pdf_Exception('Unknown stream object property requested.');
}
@ -325,6 +325,7 @@ class Zend_Pdf_Element_Object_Stream extends Zend_Pdf_Element_Object
return;
}
require_once 'Zend/Pdf/Exception.php';
throw new Zend_Pdf_Exception('Unknown stream object property: \'' . $property . '\'.');
}
@ -357,6 +358,7 @@ class Zend_Pdf_Element_Object_Stream extends Zend_Pdf_Element_Object
case 1:
return $this->_value->$method($args[0]);
default:
require_once 'Zend/Pdf/Exception.php';
throw new Zend_Pdf_Exception('Unsupported number of arguments');
}
}

View File

@ -16,23 +16,17 @@
* @package Zend_Pdf
* @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: Reference.php 17533 2009-08-10 19:06:27Z alexander $
* @version $Id: Reference.php 18993 2009-11-15 17:09:16Z alexander $
*/
/** Internally used classes */
require_once 'Zend/Pdf/Element/Null.php';
/** Zend_Pdf_Element */
require_once 'Zend/Pdf/Element.php';
/** Zend_Pdf_Element_Reference_Context */
require_once 'Zend/Pdf/Element/Reference/Context.php';
/** Zend_Pdf_Element_Reference_Table */
require_once 'Zend/Pdf/Element/Reference/Table.php';
/** Zend_Pdf_ElementFactory */
require_once 'Zend/Pdf/ElementFactory.php';
/**
* PDF file 'reference' element implementation
*
@ -97,9 +91,11 @@ class Zend_Pdf_Element_Reference extends Zend_Pdf_Element
public function __construct($objNum, $genNum = 0, Zend_Pdf_Element_Reference_Context $context, Zend_Pdf_ElementFactory $factory)
{
if ( !(is_integer($objNum) && $objNum > 0) ) {
require_once 'Zend/Pdf/Exception.php';
throw new Zend_Pdf_Exception('Object number must be positive integer');
}
if ( !(is_integer($genNum) && $genNum >= 0) ) {
require_once 'Zend/Pdf/Exception.php';
throw new Zend_Pdf_Exception('Generation number must be non-negative integer');
}
@ -178,6 +174,7 @@ class Zend_Pdf_Element_Reference extends Zend_Pdf_Element
}
if ($obj->toString() != $this->_objNum . ' ' . $this->_genNum . ' R') {
require_once 'Zend/Pdf/Exception.php';
throw new Zend_Pdf_Exception('Incorrect reference to the object');
}

View File

@ -16,17 +16,10 @@
* @package Zend_Pdf
* @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: Context.php 16978 2009-07-22 19:59:40Z alexander $
* @version $Id: Context.php 18993 2009-11-15 17:09:16Z alexander $
*/
/** Zend_Pdf_StringParser */
require_once 'Zend/Pdf/StringParser.php';
/** Zend_Pdf_Element_Reference_Table */
require_once 'Zend/Pdf/Element/Reference/Table.php';
/**
* PDF reference object context
* Reference context is defined by PDF parser and PDF Refernce table
@ -41,7 +34,7 @@ class Zend_Pdf_Element_Reference_Context
/**
* PDF parser object.
*
* @var Zend_Pdf_Parser
* @var Zend_Pdf_StringParser
*/
private $_stringParser;

View File

@ -16,7 +16,7 @@
* @package Zend_Pdf
* @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: Table.php 16541 2009-07-07 06:59:03Z bkarwin $
* @version $Id: Table.php 18993 2009-11-15 17:09:16Z alexander $
*/
@ -93,6 +93,7 @@ class Zend_Pdf_Element_Reference_Table
{
$refElements = explode(' ', $ref);
if (!is_numeric($refElements[0]) || !is_numeric($refElements[1]) || $refElements[2] != 'R') {
require_once 'Zend/Pdf/Exception.php';
throw new Zend_Pdf_Exception("Incorrect reference: '$ref'");
}
$objNum = (int)$refElements[0];
@ -153,6 +154,7 @@ class Zend_Pdf_Element_Reference_Table
public function getNextFree($ref)
{
if (isset($this->_inuse[$ref])) {
require_once 'Zend/Pdf/Exception.php';
throw new Zend_Pdf_Exception('Object is not free');
}
@ -164,6 +166,7 @@ class Zend_Pdf_Element_Reference_Table
return $this->_parent->getNextFree($ref);
}
require_once 'Zend/Pdf/Exception.php';
throw new Zend_Pdf_Exception('Object not found.');
}
@ -177,6 +180,7 @@ class Zend_Pdf_Element_Reference_Table
public function getNewGeneration($objNum)
{
if (isset($this->_usedObjects[$objNum])) {
require_once 'Zend/Pdf/Exception.php';
throw new Zend_Pdf_Exception('Object is not free');
}
@ -188,7 +192,7 @@ class Zend_Pdf_Element_Reference_Table
return $this->_parent->getNewGeneration($objNum);
}
require_once 'Zend/Pdf/Exception.php';
throw new Zend_Pdf_Exception('Object not found.');
}
}

View File

@ -16,24 +16,16 @@
* @package Zend_Pdf
* @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: Stream.php 16541 2009-07-07 06:59:03Z bkarwin $
* @version $Id: Stream.php 18993 2009-11-15 17:09:16Z alexander $
*/
/**
* @see Zend_Pdf
*/
/** Internally used classes */
require_once 'Zend/Pdf.php';
/**
* @see Zend_Pdf_Element
*/
require_once 'Zend/Pdf/Element.php';
/**
* @see Zend_Memory
*/
require_once 'Zend/Memory.php';
/** Zend_Pdf_Element */
require_once 'Zend/Pdf/Element.php';
/**
* PDF file 'stream' element implementation

View File

@ -16,14 +16,13 @@
* @package Zend_Pdf
* @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: String.php 16541 2009-07-07 06:59:03Z bkarwin $
* @version $Id: String.php 18993 2009-11-15 17:09:16Z alexander $
*/
/** Zend_Pdf_Element */
require_once 'Zend/Pdf/Element.php';
/**
* PDF file 'string' element implementation
*
@ -78,170 +77,187 @@ class Zend_Pdf_Element_String extends Zend_Pdf_Element
/**
* Escape string according to the PDF rules
*
* @param string $inStr
* @param string $str
* @return string
*/
public static function escape($inStr)
public static function escape($str)
{
$outStr = '';
$lastNL = 0;
$outEntries = array();
for ($count = 0; $count < strlen($inStr); $count++) {
if (strlen($outStr) - $lastNL > 128) {
$outStr .= "\\\n";
$lastNL = strlen($outStr);
foreach (str_split($str, 128) as $chunk) {
// Collect sequence of unescaped characters
$offset = strcspn($chunk, "\n\r\t\x08\x0C()\\");
$chunkOut = substr($chunk, 0, $offset);
while ($offset < strlen($chunk)) {
$nextCode = ord($chunk[$offset++]);
switch ($nextCode) {
// "\n" - line feed (LF)
case 10:
$chunkOut .= '\\n';
break;
// "\r" - carriage return (CR)
case 13:
$chunkOut .= '\\r';
break;
// "\t" - horizontal tab (HT)
case 9:
$chunkOut .= '\\t';
break;
// "\b" - backspace (BS)
case 8:
$chunkOut .= '\\b';
break;
// "\f" - form feed (FF)
case 12:
$chunkOut .= '\\f';
break;
// '(' - left paranthesis
case 40:
$chunkOut .= '\\(';
break;
// ')' - right paranthesis
case 41:
$chunkOut .= '\\)';
break;
// '\' - backslash
case 92:
$chunkOut .= '\\\\';
break;
default:
// This code is never executed extually
//
// Don't use non-ASCII characters escaping
// if ($nextCode >= 32 && $nextCode <= 126 ) {
// // Visible ASCII symbol
// $chunkEntries[] = chr($nextCode);
// } else {
// $chunkEntries[] = sprintf('\\%03o', $nextCode);
// }
break;
}
// Collect sequence of unescaped characters
$start = $offset;
$offset += strcspn($chunk, "\n\r\t\x08\x0C()\\", $offset);
$chunkOut .= substr($chunk, $start, $offset - $start);
}
$nextCode = ord($inStr[$count]);
switch ($nextCode) {
// "\n" - line feed (LF)
case 10:
$outStr .= '\\n';
break;
// "\r" - carriage return (CR)
case 13:
$outStr .= '\\r';
break;
// "\t" - horizontal tab (HT)
case 9:
$outStr .= '\\t';
break;
// "\b" - backspace (BS)
case 8:
$outStr .= '\\b';
break;
// "\f" - form feed (FF)
case 12:
$outStr .= '\\f';
break;
// '(' - left paranthesis
case 40:
$outStr .= '\\(';
break;
// ')' - right paranthesis
case 41:
$outStr .= '\\)';
break;
// '\' - backslash
case 92:
$outStr .= '\\\\';
break;
default:
// Don't use non-ASCII characters escaping
// if ($nextCode >= 32 && $nextCode <= 126 ) {
// // Visible ASCII symbol
// $outStr .= $inStr[$count];
// } else {
// $outStr .= sprintf('\\%03o', $nextCode);
// }
$outStr .= $inStr[$count];
break;
}
$outEntries[] = $chunkOut;
}
return $outStr;
return implode("\\\n", $outEntries);
}
/**
* Unescape string according to the PDF rules
*
* @param string $inStr
* @param string $str
* @return string
*/
public static function unescape($inStr)
public static function unescape($str)
{
$outStr = '';
$outEntries = array();
for ($count = 0; $count < strlen($inStr); $count++) {
if ($inStr[$count] != '\\' || $count == strlen($inStr)-1) {
$outStr .= $inStr[$count];
} else { // Escape sequence
switch ($inStr{++$count}) {
$offset = 0;
while ($offset < strlen($str)) {
// Searche for the next escaped character/sequence
$escapeCharOffset = strpos($str, '\\', $offset);
if ($escapeCharOffset === false || $escapeCharOffset == strlen($str) - 1) {
// There are no escaped characters or '\' char has came at the end of string
$outEntries[] = substr($str, $offset);
break;
} else {
// Collect unescaped characters sequence
$outEntries[] = substr($str, $offset, $escapeCharOffset - $offset);
// Go to the escaped character
$offset = $escapeCharOffset + 1;
switch ($str[$offset]) {
// '\\n' - line feed (LF)
case 'n':
$outStr .= "\n";
$outEntries[] = "\n";
break;
// '\\r' - carriage return (CR)
case 'r':
$outStr .= "\r";
$outEntries[] = "\r";
break;
// '\\t' - horizontal tab (HT)
case 't':
$outStr .= "\t";
$outEntries[] = "\t";
break;
// '\\b' - backspace (BS)
case 'b':
$outStr .= "\x08";
$outEntries[] = "\x08";
break;
// '\\f' - form feed (FF)
case 'f':
$outStr .= "\x0C";
$outEntries[] = "\x0C";
break;
// '\\(' - left paranthesis
case '(':
$outStr .= '(';
$outEntries[] = '(';
break;
// '\\)' - right paranthesis
case ')':
$outStr .= ')';
$outEntries[] = ')';
break;
// '\\\\' - backslash
case '\\':
$outStr .= '\\';
$outEntries[] = '\\';
break;
// "\\\n" or "\\\n\r"
case "\n":
// skip new line symbol
if ($inStr[$count+1] == "\r") {
$count++;
if ($str[$offset + 1] == "\r") {
$offset++;
}
break;
default:
if (ord($inStr[$count]) >= ord('0') &&
ord($inStr[$count]) <= ord('9')) {
if (strpos('0123456789', $str[$offset]) !== false) {
// Character in octal representation
// '\\xxx'
$nextCode = '0' . $inStr[$count];
$nextCode = '0' . $str[$offset];
if (ord($inStr[$count+1]) >= ord('0') &&
ord($inStr[$count+1]) <= ord('9')) {
$nextCode .= $inStr{++$count};
if (strpos('0123456789', $str[$offset + 1]) !== false) {
$nextCode .= $str[++$offset];
if (ord($inStr[$count+1]) >= ord('0') &&
ord($inStr[$count+1]) <= ord('9')) {
$nextCode .= $inStr{++$count};
if (strpos('0123456789', $str[$offset + 1]) !== false) {
$nextCode .= $str[++$offset];
}
}
$outStr .= chr($nextCode);
$outEntries[] = chr($nextCode);
} else {
$outStr .= $inStr[$count];
$outEntries[] = $str[$offset];
}
break;
}
$offset++;
}
}
return $outStr;
return implode($outEntries);
}
}

View File

@ -16,7 +16,7 @@
* @package Zend_Pdf
* @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: Binary.php 16541 2009-07-07 06:59:03Z bkarwin $
* @version $Id: Binary.php 18985 2009-11-14 18:51:34Z alexander $
*/
@ -50,12 +50,7 @@ class Zend_Pdf_Element_String_Binary extends Zend_Pdf_Element_String
*/
public static function escape($inStr)
{
$outStr = '';
for ($count = 0; $count < strlen($inStr); $count++) {
$outStr .= sprintf('%02X', ord($inStr[$count]));
}
return $outStr;
return strtoupper(bin2hex($inStr));
}
@ -67,34 +62,26 @@ class Zend_Pdf_Element_String_Binary extends Zend_Pdf_Element_String
*/
public static function unescape($inStr)
{
$outStr = '';
$nextHexCode = '';
$chunks = array();
$offset = 0;
$length = 0;
while ($offset < strlen($inStr)) {
// Collect hexadecimal characters
$start = $offset;
$offset += strspn($inStr, "0123456789abcdefABCDEF", $offset);
$chunks[] = substr($inStr, $start, $offset - $start);
$length += strlen(end($chunks));
for ($count = 0; $count < strlen($inStr); $count++) {
$nextCharCode = ord($inStr[$count]);
if( ($nextCharCode >= 48 /*'0'*/ &&
$nextCharCode <= 57 /*'9'*/ ) ||
($nextCharCode >= 97 /*'a'*/ &&
$nextCharCode <= 102 /*'f'*/ ) ||
($nextCharCode >= 65 /*'A'*/ &&
$nextCharCode <= 70 /*'F'*/ ) ) {
$nextHexCode .= $inStr[$count];
}
if (strlen($nextHexCode) == 2) {
$outStr .= chr(intval($nextHexCode, 16));
$nextHexCode = '';
}
// Skip non-hexadecimal characters
$offset += strcspn($inStr, "0123456789abcdefABCDEF", $offset);
}
if ($nextHexCode != '') {
if ($length % 2 != 0) {
// We have odd number of digits.
// Final digit is assumed to be '0'
$outStr .= chr(base_convert($nextHexCode . '0', 16, 10));
$chunks[] = '0';
}
return $outStr;
return pack('H*' , implode($chunks));
}