getObject method

PdfIndirectObject? getObject(
  1. int objectNumber
)

Get a resolved indirect object by object number.

Implementation

PdfIndirectObject? getObject(int objectNumber) {
  // Check cache first
  if (_objectCache.containsKey(objectNumber)) {
    return _objectCache[objectNumber];
  }

  final entry = crossRef.entries[objectNumber];
  if (entry == null || !entry.inUse) return null;

  PdfIndirectObject? obj;

  if (entry.isCompressed) {
    // Object is in an object stream
    obj = _getCompressedObject(
      objectNumber,
      entry.objectStreamNumber!,
      entry.objectStreamIndex!,
    );
  } else {
    // Regular uncompressed object
    try {
      final (parsed, _) = _parseObjectAt(entry.offset);
      if (parsed is PdfIndirectObject) {
        obj = parsed;
      }
    } catch (e) {
      return null;
    }
  }

  if (obj != null) {
    _objectCache[objectNumber] = obj;
  }
  return obj;
}