1. evince хранит закладки в метадате GVFS, откуда их можно сдампить в файл и принести куда надо (источник)
2. можно довольно легко добавить к pdf оглавление, если уже есть страницы и заголовки, с помощью pdftk
В итоге, за час-полтора ковыряния в гугле и шеле, собрал с помощью седа, awk, pdftk и такой то матери себе из кучи закладок няшное оглавление к книжке.
Как делал: gist.github.com
Не думаю, что это реюзабельно непосредственно, т.к. тут половина кода — это преобразование формата, в котором я называл букмарки. Типа было "145 — 11.5 Chapter", а надо было отрезать страницу и сделать из этого подзаголовок второго уровня.
Натолкнулся по дороге на два нюанса:
1. pdftk нет в репках Убунты, но есть snap
2. страницы в pdftk на 1 больше, чем во внутреннем представлении закладок evince
Ещё я так и не нашёл (хотя искал не долго), в каком конкретно формате хранится мета в GVFS (вроде похоже на YAML, но хз), и распарсил седом, как пришлось.