Можно ли удалить выбранные закладки (они же контуры)?

Можно ли удалить существующие закладки из дерева структуры документа с помощью iText 7? В классе PdfOutline есть методы для добавления контуров, но их нет для удаления.

Я пробовал выборочно копировать контуры в список, удаляя все существующие контуры с помощью PdfDocument.getCatalog.remove(PdfName.Outlines), а затем повторно заполняя контур документа элементами моего списка. Новый план получился таким, каким я хотел, но когда я щелкнул любую из закладок, они переместили меня в неправильные места в документе.


person user3969107    schedule 02.05.2020    source источник
comment
Привет, прямо сейчас нет хорошего варианта легко удалить один контур, но это действительно допустимый вариант использования, который должен поддерживать iText. Вы можете взглянуть на PdfOutline#removeOutline в исходный код и самостоятельно реализовать нечто подобное.   -  person Alexey Subach    schedule 03.05.2020


Ответы (1)


Используя версию 7.1.12-SNAPSHOT, вы уже можете удалить схему (и всех ее дочерних элементов рекурсивно) с помощью общедоступного API:

PdfOutline root = pdfDocument.getOutlines(true);
// Getting third child (as indices are 0-based)
PdfOutline toRemove = root.getAllChildren().get(2);
// Removing outline and all its children recursively (so we are removing a subtree)
toRemove.removeOutline();
person Alexey Subach    schedule 10.05.2020