Comment inspecter les balises OneNote dans Python

Comment inspecter les balises OneNote dans Python

OneNote permet aux utilisateurs d’annoter le contenu avec des étiquettes colorées : étoiles, cases à cocher, drapeaux importants et libellés personnalisés. Aspose.Note FOSS pour Python expose ces annotations sous forme de NoteTag objets sur RichText, Image, Table, et OutlineElement nœuds. Ce guide montre comment les lire.


Guide étape par étape

Étape 1 : Installez le FOSS Aspose.Note pour Python

pip install aspose-note

Étape 2 : Chargez le fichier .one

from aspose.note import Document

doc = Document("TaggedNotes.one")
print(f"Pages: {len(list(doc))}")

Étape 3 : Trouvez les balises sur les nœuds RichText

La plupart des balises sont attachées aux blocs de texte :

from aspose.note import Document, RichText

doc = Document("TaggedNotes.one")
for rt in doc.GetChildNodes(RichText):
    for tag in rt.Tags:
        print(f"[RichText] label={tag.label!r}  shape={tag.shape}  text={rt.Text.strip()!r}")

Étape 4 : Trouvez les balises sur les images

from aspose.note import Document, Image

doc = Document("TaggedNotes.one")
for img in doc.GetChildNodes(Image):
    for tag in img.Tags:
        print(f"[Image] label={tag.label!r}  filename={img.FileName!r}")

Étape 5 : Trouvez les balises sur les tables

from aspose.note import Document, Table

doc = Document("TaggedNotes.one")
for table in doc.GetChildNodes(Table):
    for tag in table.Tags:
        print(f"[Table] label={tag.label!r}  widths={[col.Width for col in table.Columns]}")

Étape 6 : Trouvez les balises sur les OutlineElements

from aspose.note import Document, OutlineElement

doc = Document("TaggedNotes.one")
for oe in doc.GetChildNodes(OutlineElement):
    for tag in oe.Tags:
        print(f"[OutlineElement] label={tag.label!r}  completed={tag.completed}")

Étape 7 : Collectez toutes les balises du document

from aspose.note import Document, RichText, Image, Table, OutlineElement

doc = Document("TaggedNotes.one")
all_tags = []

for rt in doc.GetChildNodes(RichText):
    for tag in rt.Tags:
        all_tags.append({"type": "RichText", "label": tag.label,
                         "completed": tag.completed, "text": rt.Text.strip()})
for img in doc.GetChildNodes(Image):
    for tag in img.Tags:
        all_tags.append({"type": "Image", "label": tag.label,
                         "completed": tag.completed, "file": img.FileName})
for table in doc.GetChildNodes(Table):
    for tag in table.Tags:
        all_tags.append({"type": "Table", "label": tag.label,
                         "completed": tag.completed})

print(f"Total tagged items: {len(all_tags)}")
for item in all_tags:
    print(item)

Référence des propriétés NoteTag

PropriétéTypeDescription
shapeN/AIdentifiant de forme d’étiquette (étoile, case à cocher, flèche, etc.)
labelstrChaîne d’étiquette lisible par l’homme (p. ex. "Important", "To Do")
text_colorintCouleur du texte en entier ARGB
highlight_colorintCouleur de surbrillance en entier ARGB
created`intNone`
completed`intNone`

Filtrer les balises terminées vs en attente

Les balises qui ont été cochées (comme les cases à cocher “À faire”) ont un non-None completed champ:

from aspose.note import Document, RichText

doc = Document("TaggedNotes.one")
pending, done = [], []

for rt in doc.GetChildNodes(RichText):
    for tag in rt.Tags:
        item = {"label": tag.label, "text": rt.Text.strip()}
        if tag.completed is None:
            pending.append(item)
        else:
            done.append(item)

print(f"Pending: {len(pending)}  Done: {len(done)}")
for p in pending:
    print(f"  [ ] {p['label']}: {p['text']!r}")
for d in done:
    print(f"  [x] {d['label']}: {d['text']!r}")

Créer un NoteTag (en mémoire)

La méthode de fabrique NoteTag.CreateYellowStar() crée un nœud de balise que vous pouvez attacher à du nouveau contenu en mémoire:

from aspose.note import NoteTag

tag = NoteTag.CreateYellowStar()
print(f"Created tag: shape={tag.shape}  label={tag.label!r}")

La création en mémoire est utile pour la compatibilité de l’API. Étant donné que l’écriture en retour vers .one n’est pas prise en charge, les balises créées ne peuvent pas être persistées dans un fichier.


Problèmes courants

Aucune balise trouvée (le document renvoie des listes de balises vides): Pas tous .one les fichiers contiennent des balises. Vérifiez que le document source possède des balises visibles dans Microsoft OneNote avant de dépanner le code.

tag.label est une chaîne vide: Certaines formes de balises n’ont pas d’étiquette texte dans les métadonnées du fichier. Utilisez tag.shape pour identifier le type de balise de manière programmatique.


Ressources associées :

 Français