PluginProbe
MxChat – AI Chatbot & Content Generation for WordPress / 2.2.6
MxChat – AI Chatbot & Content Generation for WordPress v2.2.6
3.2.21 3.2.20 3.2.19 3.2.18 3.2.17 3.2.16 3.2.15 3.2.14 3.2.12 3.2.13 3.2.11 3.2.10 3.2.9 3.2.8 3.2.7 3.2.6 3.2.5 3.2.4 3.2.3 3.2.2 3.2.1 2.0.3 2.0.4 2.0.5 2.0.6 All 152 releases
mxchat-basic / includes / pdf-parser / src / Smalot / PdfParser / Element / ElementXRef.php

ElementXRef.php in MxChat – AI Chatbot & Content Generation for WordPress 2.2.6, at includes/pdf-parser/src/Smalot/PdfParser/Element/ElementXRef.php

99 lines 2.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 /**
4 * @file
5 * This file is part of the PdfParser library.
6 *
7 * @author Sébastien MALOT <sebastien@malot.fr>
8 *
9 * @date 2017-01-03
10 *
11 * @license LGPLv3
12 *
13 * @url <https://github.com/smalot/pdfparser>
14 *
15 * PdfParser is a pdf library written in PHP, extraction oriented.
16 * Copyright (C) 2017 - Sébastien MALOT <sebastien@malot.fr>
17 *
18 * This program is free software: you can redistribute it and/or modify
19 * it under the terms of the GNU Lesser General Public License as published by
20 * the Free Software Foundation, either version 3 of the License, or
21 * (at your option) any later version.
22 *
23 * This program is distributed in the hope that it will be useful,
24 * but WITHOUT ANY WARRANTY; without even the implied warranty of
25 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
26 * GNU Lesser General Public License for more details.
27 *
28 * You should have received a copy of the GNU Lesser General Public License
29 * along with this program.
30 * If not, see <http://www.pdfparser.org/sites/default/LICENSE.txt>.
31 */
32
33 namespace Smalot\PdfParser\Element;
34
35 use Smalot\PdfParser\Document;
36 use Smalot\PdfParser\Element;
37
38 /**
39 * Class ElementXRef
40 */
41 class ElementXRef extends Element
42 {
43 public function getId(): string
44 {
45 return $this->getContent();
46 }
47
48 public function getObject()
49 {
50 return $this->document->getObjectById($this->getId());
51 }
52
53 public function equals($value): bool
54 {
55 /**
56 * In case $value is a number and $this->value is a string like 5_0
57 *
58 * Without this if-clause code like:
59 *
60 * $element = new ElementXRef('5_0');
61 * $this->assertTrue($element->equals(5));
62 *
63 * would fail (= 5_0 and 5 are not equal in PHP 8.0+).
64 */
65 if (
66 true === is_numeric($value)
67 && true === \is_string($this->getContent())
68 && 1 === preg_match('/[0-9]+\_[0-9]+/', $this->getContent(), $matches)
69 ) {
70 return (float) $this->getContent() == $value;
71 }
72
73 $id = ($value instanceof self) ? $value->getId() : $value;
74
75 return $this->getId() == $id;
76 }
77
78 public function __toString(): string
79 {
80 return '#Obj#'.$this->getId();
81 }
82
83 /**
84 * @return bool|ElementXRef
85 */
86 public static function parse(string $content, ?Document $document = null, int &$offset = 0)
87 {
88 if (preg_match('/^\s*(?P<id>[0-9]+\s+[0-9]+\s+R)/s', $content, $match)) {
89 $id = $match['id'];
90 $offset += strpos($content, $id) + \strlen($id);
91 $id = str_replace(' ', '_', rtrim($id, ' R'));
92
93 return new self($id, $document);
94 }
95
96 return false;
97 }
98 }
99