Adicionar e excluir marcadores de PDF em Java

Use a coleção de contorno de documento para gerenciar marcadores programaticamente.

Adicionar um marcador de nível superior

Use este exemplo quando o documento deve incluir uma única entrada de contorno de nível superior.

  1. Abra o PDF de origem em um objeto Document.
  2. Crie um OutlineItemCollection e configure seu título, estilo e ação.
  3. Adicione o marcador aos contornos do documento e salve o arquivo.
public static void addBookmark(Path inputFile, Path outputFile) {
    try (Document document = new Document(inputFile.toString())) {
        OutlineItemCollection pdfOutline = new OutlineItemCollection(document.getOutlines());
        pdfOutline.setTitle("Test Outline");
        pdfOutline.setItalic(true);
        pdfOutline.setBold(true);
        pdfOutline.setAction(new GoToAction(document.getPages().get_Item(1)));

        document.getOutlines().add(pdfOutline);
        document.save(outputFile.toString());
    }
}

Adicionar um marcador filho

Este exemplo cria um marcador pai e aninha um marcador filho sob ele.

  1. Abra o PDF de origem em um objeto Document.
  2. Crie pai e filho objetos OutlineItemCollection.
  3. Adicione o filho ao pai, adicione o pai à coleção de contornos e salve o documento.
public static void addChildBookmark(Path inputFile, Path outputFile) {
    try (Document document = new Document(inputFile.toString())) {
        OutlineItemCollection pdfOutline = new OutlineItemCollection(document.getOutlines());
        pdfOutline.setTitle("Parent Outline");
        pdfOutline.setItalic(true);
        pdfOutline.setBold(true);

        OutlineItemCollection pdfChildOutline = new OutlineItemCollection(document.getOutlines());
        pdfChildOutline.setTitle("Child Outline");
        pdfChildOutline.setItalic(true);
        pdfChildOutline.setBold(true);

        pdfOutline.add(pdfChildOutline);
        document.getOutlines().add(pdfOutline);
        document.save(outputFile.toString());
    }
}

Excluir todos os marcadores

Use esta abordagem quando toda a coleção de marcadores deve ser removida do documento.

  1. Abra o PDF de origem em um objeto Document.
  2. Exclua a coleção completa de marcadores.
  3. Salve o arquivo de saída limpo.
public static void deleteBookmarks(Path inputFile, Path outputFile) {
    try (Document document = new Document(inputFile.toString())) {
        document.getOutlines().delete();
        document.save(outputFile.toString());
    }
}

Excluir um marcador específico

Use este exemplo quando um marcador nomeado deve ser removido sem limpar toda a árvore de marcadores.

  1. Abra o PDF de origem em um objeto Document.
  2. Exclua o marcador pelo título da coleção de outlines.
  3. Salve o documento atualizado.
public static void deleteBookmark(Path inputFile, Path outputFile) {
    try (Document document = new Document(inputFile.toString())) {
        document.getOutlines().delete("Child Outline");
        document.save(outputFile.toString());
    }
}