1<?php 2/** 3 * This file is part of FPDI 4 * 5 * @package setasign\Fpdi 6 * @copyright Copyright (c) 2020 Setasign GmbH & Co. KG (https://www.setasign.com) 7 * @license http://opensource.org/licenses/mit-license The MIT License 8 */ 9 10namespace setasign\Fpdi\PdfParser\Filter; 11 12/** 13 * Class for handling ASCII hexadecimal encoded data 14 * 15 * @package setasign\Fpdi\PdfParser\Filter 16 */ 17class AsciiHex implements FilterInterface 18{ 19 /** 20 * Converts an ASCII hexadecimal encoded string into its binary representation. 21 * 22 * @param string $data The input string 23 * @return string 24 */ 25 public function decode($data) 26 { 27 $data = \preg_replace('/[^0-9A-Fa-f]/', '', \rtrim($data, '>')); 28 if ((\strlen($data) % 2) === 1) { 29 $data .= '0'; 30 } 31 32 return \pack('H*', $data); 33 } 34 35 /** 36 * Converts a string into ASCII hexadecimal representation. 37 * 38 * @param string $data The input string 39 * @param boolean $leaveEOD 40 * @return string 41 */ 42 public function encode($data, $leaveEOD = false) 43 { 44 $t = \unpack('H*', $data); 45 return \current($t) 46 . ($leaveEOD ? '' : '>'); 47 } 48} 49