Obter, Atualizar e Expandir um Marcador usando Python

Obter Favoritos

A coleção OutlineCollection do objeto Document contém todos os favoritos de um arquivo PDF. Este artigo explica como obter os favoritos de um arquivo PDF, e como identificar em qual página um determinado favorito está.

Para obter os favoritos, percorra a coleção OutlineCollection e obtenha cada favorito na OutlineItemCollection. A OutlineItemCollection fornece acesso a todos os atributos do favorito. O trecho de código a seguir mostra como obter favoritos do arquivo PDF.


    import aspose.pdf as ap

    # Abrir documento
    document = ap.Document(input_pdf)

    # Percorrer todos os favoritos
    for i in range(len(document.outlines)):
        outline_item = document.outlines[i + 1]
        print(outline_item.title)
        print(outline_item.italic)
        print(outline_item.bold)
        print(outline_item.color)

Obtendo o Número da Página de um Marcador

Depois de adicionar um marcador, você pode descobrir em qual página ele está obtendo o número da página de destino associado ao objeto Bookmark.


    import aspose.pdf as ap

    # Criar PdfBookmarkEditor
    bookmarkEditor = ap.facades.PdfBookmarkEditor()
    # Abrir arquivo PDF
    bookmarkEditor.bind_pdf(input_pdf)
    # Extrair marcadores
    bookmarks = bookmarkEditor.extract_bookmarks()
    for bookmark in bookmarks:
        str_level_seprator = ""
        for i in range(bookmark.level):
            str_level_seprator += "----"

        print(str_level_seprator, "Título:", bookmark.title)
        print(str_level_seprator, "Número da Página:", bookmark.page_number)
        print(str_level_seprator, "Ação da Página:", bookmark.action)

Obter Marcadores Filhos de um Documento PDF

Os marcadores podem ser organizados em uma estrutura hierárquica, com pais e filhos. Para obter todos os marcadores, faça um loop através das coleções de Outlines do objeto Document. No entanto, para obter também os marcadores filhos, faça um loop através de todos os marcadores em cada objeto OutlineItemCollection obtido no primeiro loop. Os seguintes trechos de código mostram como obter marcadores filhos de um documento PDF.


    import aspose.pdf as ap

    # Abrir documento
    document = ap.Document(input_pdf)

    # Fazer loop através de todos os marcadores
    for i in range(len(document.outlines)):
        outline_item = document.outlines[i + 1]
        print(outline_item.title)
        print(outline_item.italic)
        print(outline_item.bold)
        print(outline_item.color)
        count = len(outline_item)
        if count > 0:
            print("Marcadores Filhos")
            # Existem marcadores filhos, então faça um loop através deles também
            for j in range(len(outline_item)):
                child_outline_item = outline_item[i + 1]
                print(child_outline_item.title)
                print(child_outline_item.italic)
                print(child_outline_item.bold)
                print(child_outline_item.color)

Atualizar Favoritos em um Documento PDF

Para atualizar um favorito em um arquivo PDF, primeiro obtenha o favorito específico da coleção OutlineCollection do objeto Document, especificando o índice do favorito. Uma vez que você tenha recuperado o favorito no objeto OutlineItemCollection, você pode atualizar suas propriedades e, em seguida, salvar o arquivo PDF atualizado usando o método Save. Os fragmentos de código a seguir mostram como atualizar favoritos em um documento PDF.


    import aspose.pdf as ap

    # Abrir documento
    document = ap.Document(input_pdf)

    # Obter um objeto de favorito
    outline = document.outlines[1]

    # Obter objeto de favorito filho
    child_outline = outline[1]
    child_outline.title = "Outline Atualizado"
    child_outline.italic = True
    child_outline.bold = True

    # Salvar saída
    document.save(output_pdf)

Favoritos Expandidos ao visualizar o documento

Os favoritos são mantidos na coleção OutlineItemCollection do objeto Document, que por sua vez está na coleção OutlineCollection. No entanto, podemos ter um requisito para que todos os marcadores sejam expandidos ao visualizar o arquivo PDF.

Para cumprir esse requisito, podemos definir o status de abertura para cada item de contorno/marcador como Aberto. O trecho de código a seguir mostra como definir o status de abertura para cada marcador como expandido em um documento PDF.


    import aspose.pdf as ap

    # Abrir documento
    document = ap.Document(input_pdf)

    # Definir modo de visualização da página, ou seja, mostrar miniaturas, tela cheia, mostrar painel de anexos
    document.page_mode = ap.PageMode.USE_OUTLINES
    # Percorrer cada item de contorno na coleção de contornos do arquivo PDF
    for i in range(len(document.outlines)):
        item = document.outlines[i + 1]
        # Definir status de abertura para o item de contorno
        item.open = True

    # Salvar saída
    document.save(output_pdf)