metadata method

Future<UDocMetadata> metadata()

Implementation

Future<UDocMetadata> metadata() async {
  final UPdfDict? source = info;
  String? read(String key) {
    final Object? value = source?[key];
    return value is UPdfString ? value.text : null;
  }

  DateTime? readDate(String key) {
    final Object? value = source?[key];
    return value is UPdfString ? value.date : null;
  }

  final Object? language = await resolve(catalog?["Lang"]);
  final Object? markInfo = await resolve(catalog?["MarkInfo"]);
  final bool tagged = markInfo is UPdfDict && (markInfo["Marked"] as bool? ?? false);
  return UDocMetadata(
    title: read("Title"),
    author: read("Author"),
    subject: read("Subject"),
    keywords: read("Keywords"),
    creator: read("Creator"),
    producer: read("Producer"),
    creationDate: readDate("CreationDate"),
    modificationDate: readDate("ModDate"),
    language: language is UPdfString ? language.text : null,
    pageCount: pageCount,
    version: version,
    tagged: tagged,
    linearized: linearized,
    encrypted: isEncrypted,
  );
}