updateFieldMetadata method
bool
updateFieldMetadata(
- PdfSignatureFieldObjectInfo field, {
- String? reason,
- String? location,
- String? name,
- String? signingTimeRaw,
Updates metadata stored in the field dictionary.
Implementation
bool updateFieldMetadata(
PdfSignatureFieldObjectInfo field, {
String? reason,
String? location,
String? name,
String? signingTimeRaw,
}) {
void applyTo(PdfDict<PdfDataType> target) {
if (reason != null) {
target[PdfNameTokens.reason] = PdfString.fromString(reason);
}
if (location != null) {
target[PdfNameTokens.location] = PdfString.fromString(location);
}
if (name != null) {
target[PdfNameTokens.name] = PdfString.fromString(name);
}
if (signingTimeRaw != null) {
target[PdfNameTokens.m] = PdfString.fromString(signingTimeRaw);
}
}
// `/Reason`, `/Location`, `/Name` and `/M` are entries of the signature
// dictionary (ISO 32000-1 ยง12.8.1), not of the field. Writing them on the
// field would leave the signature dictionary value prevailing on read.
final signatureDict = field.signatureDict;
final signatureRef = field.signatureRef;
if (signatureDict != null && signatureRef != null) {
final updatedSignature = PdfDict<PdfDataType>.values(
Map<String, PdfDataType>.from(signatureDict.values),
);
applyTo(updatedSignature);
PdfObject<PdfDict<PdfDataType>>(
document,
objser: signatureRef.obj,
objgen: signatureRef.gen,
params: updatedSignature,
);
return true;
}
final updated = PdfDict<PdfDataType>.values(
Map<String, PdfDataType>.from(field.fieldDict.values),
);
applyTo(updated);
if (field.fieldRef != null) {
PdfObject<PdfDict<PdfDataType>>(
document,
objser: field.fieldRef!.obj,
objgen: field.fieldRef!.gen,
params: updated,
);
return true;
}
return _replaceDirectField(field, updated);
}