Proyectos de Subversion Moodle

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 1
<?php
2
 
3
/**
4
 * This file is part of FPDI
5
 *
6
 * @package   setasign\Fpdi
7
 * @copyright Copyright (c) 2023 Setasign GmbH & Co. KG (https://www.setasign.com)
8
 * @license   http://opensource.org/licenses/mit-license The MIT License
9
 */
10
 
11
namespace setasign\Fpdi\PdfParser\Type;
12
 
13
use setasign\Fpdi\PdfParser\PdfParser;
14
use setasign\Fpdi\PdfParser\StreamReader;
15
use setasign\Fpdi\PdfParser\Tokenizer;
16
 
17
/**
18
 * Class representing an indirect object
19
 */
20
class PdfIndirectObject extends PdfType
21
{
22
    /**
23
     * Parses an indirect object from a tokenizer, parser and stream-reader.
24
     *
25
     * @param int $objectNumber
26
     * @param int $objectGenerationNumber
27
     * @param PdfParser $parser
28
     * @param Tokenizer $tokenizer
29
     * @param StreamReader $reader
30
     * @return self|false
31
     * @throws PdfTypeException
32
     */
33
    public static function parse(
34
        $objectNumber,
35
        $objectGenerationNumber,
36
        PdfParser $parser,
37
        Tokenizer $tokenizer,
38
        StreamReader $reader
39
    ) {
40
        $value = $parser->readValue();
41
        if ($value === false) {
42
            return false;
43
        }
44
 
45
        $nextToken = $tokenizer->getNextToken();
46
        if ($nextToken === 'stream') {
47
            $value = PdfStream::parse($value, $reader, $parser);
48
        } elseif ($nextToken !== false) {
49
            $tokenizer->pushStack($nextToken);
50
        }
51
 
52
        $v = new self();
53
        $v->objectNumber = (int) $objectNumber;
54
        $v->generationNumber = (int) $objectGenerationNumber;
55
        $v->value = $value;
56
 
57
        return $v;
58
    }
59
 
60
    /**
61
     * Helper method to create an instance.
62
     *
63
     * @param int $objectNumber
64
     * @param int $generationNumber
65
     * @param PdfType $value
66
     * @return self
67
     */
68
    public static function create($objectNumber, $generationNumber, PdfType $value)
69
    {
70
        $v = new self();
71
        $v->objectNumber = (int) $objectNumber;
72
        $v->generationNumber = (int) $generationNumber;
73
        $v->value = $value;
74
 
75
        return $v;
76
    }
77
 
78
    /**
79
     * Ensures that the passed value is a PdfIndirectObject instance.
80
     *
81
     * @param mixed $indirectObject
82
     * @return self
83
     * @throws PdfTypeException
84
     */
85
    public static function ensure($indirectObject)
86
    {
87
        return PdfType::ensureType(self::class, $indirectObject, 'Indirect object expected.');
88
    }
89
 
90
    /**
91
     * The object number.
92
     *
93
     * @var int
94
     */
95
    public $objectNumber;
96
 
97
    /**
98
     * The generation number.
99
     *
100
     * @var int
101
     */
102
    public $generationNumber;
103
}