Como inspecionar as etiquetas do OneNote em Python

Como inspecionar as etiquetas do OneNote em Python

OneNote permite que os usuários anotem conteúdo com tags coloridas: estrelas, caixas de seleção, bandeiras importantes e rótulos personalizados. Aspose.Note FOSS para Python expõe essas anotações como NoteTag objetos em RichText, Image, AttachedFile, e Table Os nódulos via sua .Tags Este guia mostra como lê-los.


Guia passo a passo

Passo 1: Instalar Aspose.Note FOSS para Python

Instale o pacote Aspose.Note FOSS a partir do PyPI usando o comando pip abaixo:

pip install aspose-note

Passo 2: Carregar o ficheiro .one

Carregar um OneNote .one Arquivo em um Document instância, em seguida imprima a contagem de páginas para confirmar que está carregado:

from aspose.note import Document

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

Passo 3: Encontrar etiquetas em nós de texto rico

A maioria das etiquetas estão anexadas a blocos de texto recuperar todos RichText Nodos com: GetChildNodes() e iterar o .Tags propriedade em cada um:

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}  Icon={tag.Icon}  text={rt.Text.strip()!r}")

Passo 4: Encontre tags nas imagens

Utilização: GetChildNodes(Image) para iterar todos os nós de imagem e ler o .Tags propriedade em cada um:

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}")

Passo 5: Encontrar etiquetas nas mesas

Utilização: GetChildNodes(Table) para iterar todos os nós da tabela e ler o .Tags propriedade em cada um:

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]}")

Passo 6: Recolher todas as etiquetas no documento

Iterar todos os três tipos de nós em uma única passagem e acumular itens marcados numa lista para relatórios:

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

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,
                         "CompletedTime": tag.CompletedTime, "text": rt.Text.strip()})
for img in doc.GetChildNodes(Image):
    for tag in img.Tags:
        all_tags.append({"type": "Image", "Label": tag.Label,
                         "CompletedTime": tag.CompletedTime, "file": img.FileName})
for table in doc.GetChildNodes(Table):
    for tag in table.Tags:
        all_tags.append({"type": "Table", "Label": tag.Label,
                         "CompletedTime": tag.CompletedTime})

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

Nota de referência da propriedade do tag

PropriedadeTipo de veículo:Descrição:
Icon`intNone`
Label`strNone`
FontColor`intNone`
Highlight`intNone`
CreationTime`datetimeNone`
CompletedTime`datetimeNone`
StatusTagStatusTagStatus.Completed se preenchido, outra parte TagStatus.Open

Filtro Completado vs. Marcas pendentes

As etiquetas que foram desligadas (como as caixas de selecção “Para fazer”) têm um valor não-None Aí está.CompletedTime campo:

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.CompletedTime 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}")

Criar um NoteTag (em memória)

Método de fábrica NoteTag.CreateYellowStar() cria um nó de tag que pode anexar ao novo conteúdo na memória:

from aspose.note import NoteTag

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

A criação em memória é útil para compatibilidade com API. Desde que escrever de volta ao .one não é suportado, as etiquetas criadas não podem ser persistidas para arquivo.


Problemas comuns

Não encontrou nenhuma etiqueta (o documento retorna listas de tags vazias):Não todos: .one Os arquivos contêm tags. Verifique se o documento de origem tem as tags visíveis no Microsoft OneNote antes de resolver problemas com o código.

tag.Label é uma cadeia vazia de caracteres.: Alguns formatos de etiquetas não têm um texto em metadados do arquivo. Use tag.Icon Identificar o tipo de etiqueta por programação.


Recursos relacionados:

Ver também:

 Português