MCPcopy Create free account
hub / github.com/LibPDF-js/core / resolveLength

Method resolveLength

src/parser/indirect-object-parser.ts:355–389  ·  view source on GitHub ↗

* Resolve the /Length value from the stream dict. * Handles both direct values and indirect references.

(dict: PdfDict)

Source from the content-addressed store, hash-verified

353 * Handles both direct values and indirect references.
354 */
355 private resolveLength(dict: PdfDict): number {
356 const lengthObj = dict.get("Length");
357
358 if (lengthObj === undefined) {
359 throw new ObjectParseError("Stream missing required /Length entry");
360 }
361
362 // Direct number
363 if (lengthObj.type === "number") {
364 return lengthObj.value;
365 }
366
367 // Indirect reference
368 if (lengthObj.type === "ref") {
369 const ref = lengthObj;
370
371 if (!this.lengthResolver) {
372 throw new ObjectParseError(
373 `Cannot resolve indirect /Length reference ${ref.objectNumber} ${ref.generation} R: no resolver provided`,
374 );
375 }
376
377 const length = this.lengthResolver(ref);
378
379 if (length === null) {
380 throw new ObjectParseError(
381 `Could not resolve /Length reference ${ref.objectNumber} ${ref.generation} R`,
382 );
383 }
384
385 return length;
386 }
387
388 throw new ObjectParseError(`Invalid /Length type: ${lengthObj.type}`);
389 }
390}

Callers 1

readStreamMethod · 0.95

Calls 2

lengthResolverMethod · 0.80
getMethod · 0.45

Tested by

no test coverage detected