Obtenir, Mettre à Jour et Développer un Signet en utilisant Python

Obtenez les Signets

La collection OutlineCollection de l’objet Document contient tous les signets d’un fichier PDF. Cet article explique comment obtenir des signets à partir d’un fichier PDF et comment savoir sur quelle page se trouve un signet particulier.

Pour obtenir les signets, parcourez la collection OutlineCollection et obtenez chaque signet dans la OutlineItemCollection. La OutlineItemCollection permet d’accéder à tous les attributs du signet. Le snippet de code suivant vous montre comment obtenir des signets à partir du fichier PDF.


    import aspose.pdf as ap

    # Ouvrir le document
    document = ap.Document(input_pdf)

    # Parcourir tous les signets
    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)

Obtenir le Numéro de Page d’un Signet

Une fois que vous avez ajouté un signet, vous pouvez savoir sur quelle page il se trouve en obtenant le numéro de page de destination associé à l’objet Signet.


    import aspose.pdf as ap

    # Créer PdfBookmarkEditor
    bookmarkEditor = ap.facades.PdfBookmarkEditor()
    # Ouvrir le fichier PDF
    bookmarkEditor.bind_pdf(input_pdf)
    # Extraire les signets
    bookmarks = bookmarkEditor.extract_bookmarks()
    for bookmark in bookmarks:
        str_level_seprator = ""
        for i in range(bookmark.level):
            str_level_seprator += "----"

        print(str_level_seprator, "Titre :", bookmark.title)
        print(str_level_seprator, "Numéro de Page :", bookmark.page_number)
        print(str_level_seprator, "Action de Page :", bookmark.action)

Obtenir les Signets Enfants d’un Document PDF

Les signets peuvent être organisés dans une structure hiérarchique, avec des parents et des enfants. Pour obtenir tous les signets, parcourez les collections Outlines de l’objet Document. Cependant, pour obtenir également les signets enfants, parcourez également tous les signets dans chaque objet OutlineItemCollection obtenu dans la première boucle. Les extraits de code suivants montrent comment obtenir les signets enfants d’un document PDF.


    import aspose.pdf as ap

    # Ouvrir le document
    document = ap.Document(input_pdf)

    # Parcourir tous les signets
    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("Signets enfants")
            # Il y a des signets enfants, alors parcourez-les également
            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)

Mettre à jour les signets dans un document PDF

Pour mettre à jour un signet dans un fichier PDF, d’abord, obtenez le signet particulier de la collection OutlineCollection de l’objet Document en spécifiant l’index du signet. Une fois que vous avez récupéré le signet dans l’objet OutlineItemCollection, vous pouvez mettre à jour ses propriétés puis enregistrer le fichier PDF mis à jour en utilisant la méthode Save. Les extraits de code suivants montrent comment mettre à jour les signets dans un document PDF.


    import aspose.pdf as ap

    # Ouvrir le document
    document = ap.Document(input_pdf)

    # Obtenir un objet signet
    outline = document.outlines[1]

    # Obtenir l'objet signet enfant
    child_outline = outline[1]
    child_outline.title = "Outline mis à jour"
    child_outline.italic = True
    child_outline.bold = True

    # Enregistrer la sortie
    document.save(output_pdf)

Signets développés lors de la visualisation du document

Les signets sont détenus dans la collection OutlineItemCollection de l’objet Document, elle-même dans la collection OutlineCollection. Cependant, nous pouvons avoir besoin que tous les signets soient développés lors de la visualisation du fichier PDF.

Afin de satisfaire cette exigence, nous pouvons définir le statut ouvert pour chaque élément de plan/signet comme Ouvert. Le snippet de code suivant vous montre comment définir le statut ouvert pour chaque signet comme développé dans un document PDF.


    import aspose.pdf as ap

    # Ouvrir le document
    document = ap.Document(input_pdf)

    # Définir le mode d'affichage de la page, c'est-à-dire afficher les miniatures, plein écran, afficher le panneau des pièces jointes
    document.page_mode = ap.PageMode.USE_OUTLINES
    # Parcourir chaque élément de plan dans la collection de plans du fichier PDF
    for i in range(len(document.outlines)):
        item = document.outlines[i + 1]
        # Définir le statut ouvert pour l'élément de plan
        item.open = True

    # Enregistrer la sortie
    document.save(output_pdf)