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