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-notePasso 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
| Propriedade | Tipo de veículo: | Descrição: |
|---|---|---|
Icon | `int | None` |
Label | `str | None` |
FontColor | `int | None` |
Highlight | `int | None` |
CreationTime | `datetime | None` |
CompletedTime | `datetime | None` |
Status | TagStatus | TagStatus.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
.onenã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:
- Características de um conjunto geral
- Como extrair texto
- Referência API
- Blog: Introdução do FOSS para Python