Я разрабатываю утилиту, которая использует текстовый файл с вкладками в качестве входных данных для создания дерева закладок (или контуров) в существующем файле PDF с использованием iText7.
Очевидно, что это не настоящий код, но это в основном то, как я строю дерево:
PdfReader reader = new PdfReader(srcFilePath);
PdfWriter writer = new PdfWriter(targetFilePath);
PdfDocument pdfDoc = new PdfDocument(reader, writer);
PdfOutline rootOutline = pdfDoc.GetOutlines(false);
PdfOutline mainTitleOutline;
(mainTitleOutline = rootOutline.AddOutline("Title 1")).AddDestination(PdfExplicitDestination.CreateFit(pdfDoc.GetPage(1)));
mainTitleOutline.AddOutline("Sub title 1.1").AddDestination(PdfExplicitDestination.CreateFit(pdfDoc.GetPage(2)));
mainTitleOutline.AddOutline("Sub title 1.2").AddDestination(PdfExplicitDestination.CreateFit(pdfDoc.GetPage(3)));
(mainTitleOutline = rootOutline.AddOutline("Title 2")).AddDestination(PdfExplicitDestination.CreateFit(pdfDoc.GetPage(4)));
mainTitleOutline.AddOutline("Sub title 2.1").AddDestination(PdfExplicitDestination.CreateFit(pdfDoc.GetPage(5)));
mainTitleOutline.AddOutline("Sub title 2.2").AddDestination(PdfExplicitDestination.CreateFit(pdfDoc.GetPage(6)));
pdfDoc.Close();
Это работает очень хорошо, когда в PDF еще нет закладки, но когда есть (pdfDoc.GetOutlines(false).GetAllChildren().Count > 0
), я хотел бы удалить все дерево перед рукой (следовательно, перезаписать их), потому что, если я этого не сделаю, я добавлю новые контуры к старым.
Есть ли способ сделать это?