output method
Implementation
@override
void output(PdfObjectBase o, PdfStream s, [int? indent]) {
final _values = PdfDict(values);
Uint8List? _data;
if (_values.containsKey('/Filter')) {
// The data is already in the right format
_data = data;
} else if (compress && o.settings.deflate != null) {
// Compress the data
final newData = Uint8List.fromList(o.settings.deflate!(data));
if (newData.lengthInBytes < data.lengthInBytes) {
_values['/Filter'] = const PdfName('/FlateDecode');
_data = newData;
}
}
if (_data == null) {
if (isBinary) {
// This is an Ascii85 stream
final e = Ascii85Encoder();
_data = e.convert(data);
_values['/Filter'] = const PdfName('/ASCII85Decode');
} else {
// This is a non-deflated stream
_data = data;
}
}
if (encrypt && o.settings.encryptCallback != null) {
_data = o.settings.encryptCallback!(_data, o);
}
_values['/Length'] = PdfNum(_data.length);
_values.output(o, s, indent);
if (indent != null) {
s.putByte(0x0a);
}
s.putString('stream\n');
s.putBytes(_data);
s.putString('\nendstream');
}