write static method
void
write(
- BytesBuilder out,
- Object? value, {
- UPdfEncryption? encryption,
- int objectNumber = 0,
- int generation = 0,
- int depth = 0,
Implementation
static void write(BytesBuilder out, Object? value, {UPdfEncryption? encryption, int objectNumber = 0, int generation = 0, int depth = 0}) {
if (depth > 48) {
out.add("null".codeUnits);
return;
}
if (value == null) {
out.add("null".codeUnits);
return;
}
if (value is bool) {
out.add((value ? "true" : "false").codeUnits);
return;
}
if (value is num) {
out.add(number(value).codeUnits);
return;
}
if (value is UPdfName) {
out.add(name(value.value).codeUnits);
return;
}
if (value is UPdfRef) {
out.add("${value.number} ${value.generation} R".codeUnits);
return;
}
if (value is UPdfString) {
final Uint8List bytes = encryption == null ? value.bytes : encryption.encrypt(value.bytes, objectNumber, generation, isString: true);
out.add(value.hex || encryption != null ? hexString(bytes) : literalString(bytes));
return;
}
if (value is List<Object?>) {
out.add("[".codeUnits);
for (final Object? entry in value) {
out.add(" ".codeUnits);
write(out, entry, encryption: encryption, objectNumber: objectNumber, generation: generation, depth: depth + 1);
}
out.add(" ]".codeUnits);
return;
}
if (value is UPdfStream) {
final Uint8List data = value.rawBytes ?? Uint8List(0);
final Uint8List payload = encryption == null ? data : encryption.encrypt(data, objectNumber, generation, isString: false);
final UPdfDict dict = value.dict.copy();
dict["Length"] = payload.length;
write(out, dict, encryption: encryption, objectNumber: objectNumber, generation: generation, depth: depth + 1);
out.add("\n".codeUnits);
out.add(_stream);
out.add("\n".codeUnits);
out.add(payload);
out.add("\n".codeUnits);
out.add(_endstream);
return;
}
if (value is UPdfDict) {
out.add("<<".codeUnits);
value.entries.forEach((String key, Object? entry) {
out.add(" ".codeUnits);
out.add(name(key).codeUnits);
out.add(" ".codeUnits);
write(out, entry, encryption: encryption, objectNumber: objectNumber, generation: generation, depth: depth + 1);
});
out.add(" >>".codeUnits);
return;
}
out.add("null".codeUnits);
}