getStreamData method

Uint8List? getStreamData(
  1. int objectNumber
)

Get decoded stream data for an object.

Implementation

Uint8List? getStreamData(int objectNumber) {
  final obj = getObject(objectNumber);
  if (obj == null || !obj.isStream) return null;

  final stream = obj.object as PdfStream;
  var streamData = stream.data;

  // Decrypt if needed
  if (encryption != null && encryption!.isAuthenticated) {
    streamData =
        encryption!.decrypt(streamData, objectNumber, obj.generation);
  }

  // Decompress
  final filters = stream.filters;
  if (filters.isNotEmpty) {
    // Get DecodeParms
    Map<String, dynamic>? decodeParms;
    final dp = stream.dict['DecodeParms'];
    if (dp is PdfDict) {
      decodeParms = {};
      for (final key in dp.keys) {
        final val = dp[key];
        if (val is PdfInt) decodeParms[key] = val.value;
        if (val is PdfBool) decodeParms[key] = val.value;
      }
    }
    return PdfStreamCodec.decode(streamData, filters,
        decodeParms: decodeParms);
  }

  return streamData;
}