3030 * @copyright 2011-2026 Nicola Asuni - Tecnick.com LTD
3131 * @license https://www.gnu.org/copyleft/lesser.html GNU-LGPL v3 (see LICENSE.TXT)
3232 * @link https://github.com/tecnickcom/tc-lib-pdf-parser
33+ *
34+ * @phpstan-import-type RawObjectArray from \Com\Tecnick\Pdf\Parser\Process\RawObject
35+ * @phpstan-import-type XrefData from \Com\Tecnick\Pdf\Parser\Process\XrefStream
36+ *
37+ * @phpstan-type XrefDataPartial array{
38+ * 'trailer'?: array{
39+ * 'encrypt'?: string,
40+ * 'id': array<int, string>,
41+ * 'info': string,
42+ * 'root': string,
43+ * 'size': int,
44+ * },
45+ * 'xref': array<string, int>,
46+ * }
47+ *
48+ * @phpstan-type XrefDataInput array{
49+ * 'trailer'?: array{
50+ * 'encrypt'?: string,
51+ * 'id': array<int, string>,
52+ * 'info': string,
53+ * 'root': string,
54+ * 'size': int,
55+ * },
56+ * 'xref'?: array<string, int>,
57+ * }
3358 */
3459abstract class Xref extends \Com \Tecnick \Pdf \Parser \Process \XrefStream
3560{
3661 /**
3762 * Default empty XREF data.
3863 *
39- * @var array{
40- * 'trailer': array{
41- * 'encrypt'?: string,
42- * 'id': array<int, string>,
43- * 'info': string,
44- * 'root': string,
45- * 'size': int,
46- * },
47- * 'xref': array<string, int>,
48- * }
64+ * @var XrefData
4965 */
5066 protected const XREF_EMPTY = [
5167 'trailer ' => [
@@ -61,16 +77,7 @@ abstract class Xref extends \Com\Tecnick\Pdf\Parser\Process\XrefStream
6177 /**
6278 * XREF data.
6379 *
64- * @var array{
65- * 'trailer': array{
66- * 'encrypt'?: string,
67- * 'id': array<int, string>,
68- * 'info': string,
69- * 'root': string,
70- * 'size': int,
71- * },
72- * 'xref': array<string, int>,
73- * }
80+ * @var XrefData
7481 */
7582 protected array $ xref = self ::XREF_EMPTY ;
7683
@@ -100,28 +107,10 @@ abstract protected function getIndirectObject(string $obj_ref, int $offset = 0,
100107 /**
101108 * Get Cross-Reference (xref) table and trailer data from PDF document data.
102109 *
103- * @param int $offset Xref offset (if know).
104- * @param array{
105- * 'trailer'?: array{
106- * 'encrypt'?: string,
107- * 'id': array<int, string>,
108- * 'info': string,
109- * 'root': string,
110- * 'size': int,
111- * },
112- * 'xref'?: array<string, int>,
113- * } $xref Previous xref array (if any).
110+ * @param int $offset Xref offset (if know).
111+ * @param XrefDataInput $xref Previous xref array (if any).
114112 *
115- * @return array{
116- * 'trailer': array{
117- * 'encrypt'?: string,
118- * 'id': array<int, string>,
119- * 'info': string,
120- * 'root': string,
121- * 'size': int,
122- * },
123- * 'xref': array<string, int>,
124- * } Xref and trailer data.
113+ * @return XrefData Xref and trailer data.
125114 *
126115 * @SuppressWarnings("PHPMD.CyclomaticComplexity")
127116 */
@@ -196,28 +185,10 @@ protected function getXrefData(int $offset = 0, array $xref = []): array
196185 /**
197186 * Decode the Cross-Reference section
198187 *
199- * @param int $startxref Offset at which the xref section starts (position of the 'xref' keyword).
200- * @param array{
201- * 'trailer'?: array{
202- * 'encrypt'?: string,
203- * 'id': array<int, string>,
204- * 'info': string,
205- * 'root': string,
206- * 'size': int,
207- * },
208- * 'xref': array<string, int>,
209- * } $xref Previous xref array (if any).
188+ * @param int $startxref Offset at which the xref section starts (position of the 'xref' keyword).
189+ * @param XrefDataPartial $xref Previous xref array (if any).
210190 *
211- * @return array{
212- * 'trailer': array{
213- * 'encrypt'?: string,
214- * 'id': array<int, string>,
215- * 'info': string,
216- * 'root': string,
217- * 'size': int,
218- * },
219- * 'xref': array<string, int>,
220- * } Xref and trailer data.
191+ * @return XrefData Xref and trailer data.
221192 */
222193 protected function decodeXref (int $ startxref , array $ xref ): array
223194 {
@@ -278,28 +249,10 @@ protected function decodeXref(int $startxref, array $xref): array
278249 /**
279250 * Decode the Cross-Reference section
280251 *
281- * @param array{
282- * 'trailer'?: array{
283- * 'encrypt'?: string,
284- * 'id': array<int, string>,
285- * 'info': string,
286- * 'root': string,
287- * 'size': int,
288- * },
289- * 'xref': array<string, int>,
290- * } $xref Previous xref array (if any).
252+ * @param XrefDataPartial $xref Previous xref array (if any).
291253 * @param array<array<int, int<-1, max>|string>> $matches Matches containing trailer sections
292254 *
293- * @return array{
294- * 'trailer': array{
295- * 'encrypt'?: string,
296- * 'id': array<int, string>,
297- * 'info': string,
298- * 'root': string,
299- * 'size': int,
300- * },
301- * 'xref': array<string, int>,
302- * } Xref and trailer data.
255+ * @return XrefData Xref and trailer data.
303256 */
304257 protected function getTrailerData (array $ xref , array $ matches ): array
305258 {
@@ -348,28 +301,10 @@ protected function getTrailerData(array $xref, array $matches): array
348301 /**
349302 * Decode the Cross-Reference Stream section
350303 *
351- * @param int $startxref Offset at which the xref section starts.
352- * @param array{
353- * 'trailer'?: array{
354- * 'encrypt'?: string,
355- * 'id': array<int, string>,
356- * 'info': string,
357- * 'root': string,
358- * 'size': int,
359- * },
360- * 'xref': array<string, int>,
361- * } $xref Previous xref array (if any).
304+ * @param int $startxref Offset at which the xref section starts.
305+ * @param XrefDataPartial $xref Previous xref array (if any).
362306 *
363- * @return array{
364- * 'trailer': array{
365- * 'encrypt'?: string,
366- * 'id': array<int, string>,
367- * 'info': string,
368- * 'root': string,
369- * 'size': int,
370- * },
371- * 'xref': array<string, int>,
372- * } Xref and trailer data.
307+ * @return XrefData Xref and trailer data.
373308 *
374309 * @SuppressWarnings("PHPMD.CyclomaticComplexity")
375310 */
0 commit comments