code: def getToC(doc, simple = True):
      
  
      def recurse(olItem, liste, lvl):
          '''Recursively follow the outline item chain and record item information in a list.'''
          while olItem:
              if olItem.title:
                  title = olItem.title
              else:
                  title = " "
  
              if not olItem.isExternal:
                  if olItem.uri:
                      page = olItem.page + 1
                  else:
                      page = -1
              else:
                  page = -1
  
              if not simple:
                  link = getLinkDict(olItem)
                  liste.append([lvl, title, page, link])
              else:
                  liste.append([lvl, title, page])
  
              if olItem.down:
                  liste = recurse(olItem.down, liste, lvl+1)
              olItem = olItem.next
          return liste
  
      # check if document is open and not encrypted
      if doc.isClosed:
          raise ValueError("illegal operation on closed document")
  
      olItem = doc.outline
  
      if not olItem: return []
      lvl = 1
      liste = []
      return recurse(olItem, liste, lvl)
docs: Create a table of contents.
  
      Args:
          simple: a bool to control output. Returns a list, where each entry consists of outline level, title, page number and link destination (if simple = False). For details see PyMuPDF's documentation.