Jak przeglądać tagi OneNote w Pythonie

Jak przeglądać tagi OneNote w Pythonie

OneNote umożliwia użytkownikom anotowanie treści za pomocą kolorowych znaczników: gwiazdek, pól wyboru, flag ważności i własnych etykiet. Aspose.Note FOSS for Python udostępnia te adnotacje jako NoteTag obiekty na węzłach RichText, Image, AttachedFile i Table za pośrednictwem ich właściwości .Tags. Ten przewodnik pokazuje, jak je odczytać.


Przewodnik krok po kroku

Krok 1: Zainstaluj Aspose.Note FOSS dla Pythona

pip install aspose-note

Krok 2: Załaduj plik .one

from aspose.note import Document

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

Krok 3: Znajdź tagi w węzłach RichText

Większość tagów jest dołączona do bloków tekstu:

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

Krok 4: Znajdź tagi na obrazach

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

Krok 5: Znajdź tagi w tabelach

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

Krok 6: Zbierz wszystkie tagi w całym dokumencie

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)

Odniesienie do właściwości NoteTag

PropertyTypeDescription
Iconint | NoneNumeryczny identyfikator kształtu tagu (gwiazdka, pole wyboru, strzałka, itp.)
Labelstr | NoneCiąg etykiety czytelny dla człowieka (np. "Important", "To Do")
FontColorint | NoneKolor tekstu jako liczba całkowita ARGB
Highlightint | NoneKolor podświetlenia jako liczba całkowita ARGB
CreationTimedatetime | NoneKiedy tag został utworzony
CompletedTimedatetime | NoneKiedy tag został ukończony (None jeśli nie ukończono)
StatusTagStatusTagStatus.Completed jeśli ukończono, w przeciwnym razie TagStatus.Open

Filtruj ukończone vs oczekujące tagi

Tagi, które zostały zaznaczone (np. pola wyboru „Do zrobienia”) mają pole nie-None CompletedTime:

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

Utwórz NoteTag (w pamięci)

Metoda fabrykująca NoteTag.CreateYellowStar() tworzy węzeł tagu, który możesz dołączyć do nowej treści w pamięci:

from aspose.note import NoteTag

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

Tworzenie w pamięci jest przydatne dla zgodności API. Ponieważ zapisywanie z powrotem do .one nie jest obsługiwane, utworzone tagi nie mogą być zachowane w pliku.


Typowe problemy

Nie znaleziono tagów (dokument zwraca puste listy Tagów): Nie wszystkie pliki .one zawierają tagi. Sprawdź, czy dokument źródłowy ma widoczne tagi w programie Microsoft OneNote przed rozwiązywaniem problemów z kodem.

tag.Label jest pustym ciągiem znaków: Niektóre kształty tagów nie mają etykiety tekstowej w metadanych pliku. Użyj tag.Icon, aby programowo zidentyfikować typ tagu.


Powiązane zasoby:

 Polski