Ontwikkelaarsgids

Aspose.Note FOSS for Python is a free, open-source library for reading Microsoft OneNote .one sectiebestanden zonder enige afhankelijkheid van Microsoft Office. Het biedt een schone openbare API onder de aspose.note package, gemodelleerd naar de Aspose.Note voor .NET interface. De bibliotheek is geschikt voor documentautomatisering, contentindexering, gegevens‑extractiepijplijnen en archiveringsworkflows.

Deze ontwikkelaarsgids behandelt de volledige publieke API‑structuur die beschikbaar is in versie 26.3.1, met uitvoerbare codevoorbeelden voor elke belangrijke functie.

Document laden

Laad een .one bestand vanaf een bestandspad of een binaire stream. De Document klasse is het toegangspunt voor alle bewerkingen.

Laden vanaf een bestandspad

from aspose.note import Document

doc = Document("MyNotes.one")

Laden vanaf een binaire stream

Handig bij het lezen vanuit cloudopslag, HTTP‑responses of in‑memory buffers:

from pathlib import Path
from aspose.note import Document

with Path("MyNotes.one").open("rb") as f:
    doc = Document(f)

Laadopties

Gebruik LoadOptions om optionele parameters in te stellen tijdens het laden:

from aspose.note import Document, LoadOptions

opts = LoadOptions()
opts.LoadHistory = True   # Include page history in the DOM
doc = Document("MyNotes.one", opts)

Opmerking: DocumentPassword bestaat op LoadOptions voor API‑compatibiliteit, maar versleutelde documenten worden niet ondersteund. Pogingen om een versleuteld bestand te laden veroorzaken IncorrectPasswordException.


Documentstructuur (DOM)

Het OneNote‑documentmodel is een boom:

Document
  └── Page (0..n)
        ├── Title
        │     ├── TitleText (RichText)
        │     ├── TitleDate (RichText)
        │     └── TitleTime (RichText)
        └── Outline (0..n)
              └── OutlineElement (0..n)
                    ├── RichText
                    ├── Image
                    ├── Table
                    │     └── TableRow
                    │           └── TableCell
                    │                 └── RichText / Image
                    └── AttachedFile

Elke knoop exposeert ParentNode en een Document eigenschap die naar de wortel omhoog loopt. Samengestelde knopen ondersteunen iteratie over kinderen, FirstChild, LastChild, AppendChildLast, InsertChild, RemoveChild, en GetChildNodes(Type).


Paginas itereren

Pagina’s zijn de directe kinderen van Document. Iterate ze direct of gebruik GetChildNodes:

from aspose.note import Document, Page

doc = Document("MyNotes.one")

for page in doc:
    title = page.Title.TitleText.Text if page.Title and page.Title.TitleText else "(untitled)"
    author = page.Author or "(unknown)"
    print(f"  {title}  [by {author}]")

Pagina‑metadata:

EigenschapTypeBeschrijving
Title`TitleNone`
Author`strNone`
CreationTime`datetimeNone`
LastModifiedTime`datetimeNone`
Level`intNone`

Tekstextractie

Extraheer alle platte tekst

from aspose.note import Document, RichText

doc = Document("MyNotes.one")
all_text = [rt.Text for rt in doc.GetChildNodes(RichText) if rt.Text]
print("\n".join(all_text))

Inspecteer opmaakreeksen

Elke RichText bevat een lijst van TextRun segmenten. Elke run draagt zijn eigen TextStyle:

from aspose.note import Document, RichText

doc = Document("FormattedNotes.one")
for rt in doc.GetChildNodes(RichText):
    for run in rt.TextRuns:
        style = run.Style
        flags = []
        if style.IsBold: flags.append("bold")
        if style.IsItalic: flags.append("italic")
        if style.IsHyperlink: flags.append(f"link={style.HyperlinkAddress}")
        print(f"{run.Text!r:40s} [{', '.join(flags)}]")

Extraheer hyperlinks

from aspose.note import Document, RichText

doc = Document("MyNotes.one")
for rt in doc.GetChildNodes(RichText):
    for run in rt.TextRuns:
        if run.Style.IsHyperlink and run.Style.HyperlinkAddress:
            print(run.Text, "->", run.Style.HyperlinkAddress)

Afbeeldingsextractie

from aspose.note import Document, Image

doc = Document("MyNotes.one")
for i, img in enumerate(doc.GetChildNodes(Image), start=1):
    name = img.FileName or f"image_{i}.bin"
    with open(name, "wb") as f:
        f.write(img.Bytes)
    print(f"Saved {name}  ({img.Width}x{img.Height})")

Afbeeldingseigenschappen: FileName, Bytes, Width, Height, AlternativeTextTitle, AlternativeTextDescription, HyperlinkUrl, Tags.


Tabelparsing

from aspose.note import Document, Table, TableRow, TableCell, RichText

doc = Document("MyNotes.one")
for table in doc.GetChildNodes(Table):
    print("Column widths:", [col.Width for col in table.Columns])
    for r, row in enumerate(table.GetChildNodes(TableRow), start=1):
        cells = row.GetChildNodes(TableCell)
        row_text = [
            " ".join(rt.Text for rt in cell.GetChildNodes(RichText)).strip()
            for cell in cells
        ]
        print(f"Row {r}:", row_text)

Bijgevoegde bestanden

from aspose.note import Document, AttachedFile

doc = Document("NotesWithAttachments.one")
for i, af in enumerate(doc.GetChildNodes(AttachedFile), start=1):
    name = af.FileName or f"attachment_{i}.bin"
    with open(name, "wb") as f:
        f.write(af.Bytes)
    print(f"Saved: {name}")

Tags en genummerde lijsten

Inspecteer NoteTag-items

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

doc = Document("TaggedNotes.one")
for rt in doc.GetChildNodes(RichText):
    for tag in rt.Tags:
        print(f"RichText tag: {tag.Label} icon={tag.Icon}")
for img in doc.GetChildNodes(Image):
    for tag in img.Tags:
        print(f"Image tag: {tag.Label}")

Inspecteer genummerde lijsten

from aspose.note import Document, OutlineElement

doc = Document("NumberedNotes.one")
for oe in doc.GetChildNodes(OutlineElement):
    nl = oe.NumberList
    if nl:
        print(f"format={nl.Format!r}")

DocumentVisitor-patroon

Gebruik DocumentVisitor om een visitor te implementeren die de volledige documentboom doorloopt:

from aspose.note import Document, DocumentVisitor, Page, RichText, Image

class ContentCounter(DocumentVisitor):
    def __init__(self):
        self.pages = 0
        self.texts = 0
        self.images = 0

    def VisitPageStart(self, page: Page) -> None:
        self.pages += 1

    def VisitRichTextStart(self, rt: RichText) -> None:
        self.texts += 1

    def VisitImageStart(self, img: Image) -> None:
        self.images += 1

doc = Document("MyNotes.one")
counter = ContentCounter()
doc.Accept(counter)
print(f"Pages: {counter.pages}, Texts: {counter.texts}, Images: {counter.images}")

PDF-export

PDF-export vereist de optionele ReportLab-afhankelijkheid. Installeer deze met:

pip install "aspose-note[pdf]"

Basis PDF-export

from aspose.note import Document, SaveFormat

doc = Document("MyNotes.one")
doc.Save("output.pdf", SaveFormat.Pdf)

PDF-export met opties

import io
from aspose.note import Document, SaveFormat
from aspose.note.saving import PdfSaveOptions

doc = Document("MyNotes.one")

##With save options
opts = PdfSaveOptions()
doc.Save("output.pdf", opts)

##Save to in-memory stream
buf = io.BytesIO()
doc.Save(buf, PdfSaveOptions())
pdf_bytes = buf.getvalue()

Opmerking: PdfSaveOptions.PageIndex en PageCount velden bestaan maar worden niet doorgestuurd naar de PDF-exporteur in v26.3.1. Het volledige document wordt altijd geëxporteerd.


Huidige beperkingen

GebiedStatus
Lezen .one bestandenVolledig ondersteund
PDF-export (via ReportLab)Ondersteund
Terugschrijven naar .oneNiet geïmplementeerd
Versleutelde documentenNiet ondersteund (werpt IncorrectPasswordException)
HTML / afbeelding / ONE-opslagformatenGedeclareerd voor API-compatibiliteit; werp UnsupportedSaveFormatException

Beschikbare handleidingen


Zie ook

 Nederlands