setPageOrder method

Future<bool> setPageOrder(
  1. List<UPdfRef> order
)

Implementation

Future<bool> setPageOrder(List<UPdfRef> order) async {
  final Object? rootRef = document.catalog?["Pages"];
  if (rootRef is! UPdfRef) return false;
  final Object? root = await current(rootRef);
  if (root is! UPdfDict) return false;
  final UPdfDict mutable = _changed[rootRef.number] is UPdfDict ? _changed[rootRef.number]! as UPdfDict : root.copy();
  mutable["Kids"] = List<Object?>.from(order);
  mutable["Count"] = order.length;
  mutable["Type"] = const UPdfName("Pages");
  put(rootRef.number, mutable);
  document.notePageCount(order.length);
  for (final UPdfRef ref in order) {
    final Object? page = await current(ref);
    if (page is! UPdfDict) continue;
    final UPdfDict pageCopy = _changed[ref.number] is UPdfDict ? _changed[ref.number]! as UPdfDict : page.copy();
    pageCopy["Parent"] = rootRef;
    put(ref.number, pageCopy);
  }
  return true;
}