Utviklerguide

Aspose.Note FOSS for Python is a free, open-source library for reading Microsoft OneNote .one seksjonsfiler uten noen avhengighet til Microsoft Office. Den gir et rent offentlig API under den aspose.note pakke, modellert etter Aspose.Note for .NET grensesnittet. Biblioteket er egnet for dokumentautomatisering, innholdsindeksering, datauttrekkspipelines og arkiveringsarbeidsflyter.

Denne utviklerveiledningen dekker hele det offentlige API-området som er tilgjengelig i versjon 26.3.1, med kjørbare kodeeksempler for hver hovedfunksjon.

Dokumentlasting

Last inn en .one fil fra en filsti eller en binær strøm. Den Document klassen er inngangspunktet for alle operasjoner.

Last inn fra en filsti

from aspose.note import Document

doc = Document("MyNotes.one")

Last inn fra en binær strøm

Nyttig når du leser fra skylagring, HTTP-responser eller minnebuffere:

from pathlib import Path
from aspose.note import Document

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

Lastealternativer

Bruk LoadOptions for å angi valgfrie parametere ved lasting:

from aspose.note import Document, LoadOptions

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

Merk: DocumentPassword finnes på LoadOptions for API-kompatibilitet, men krypterte dokumenter støttes ikke. Forsøk på å laste en kryptert fil gir en IncorrectPasswordException.


Dokumentstruktur (DOM)

OneNote-dokumentmodellen er et tre:

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

Hver node eksponerer ParentNode og en Document egenskap som går opp til roten. Sammensatte noder støtter iterasjon av barn, FirstChild, LastChild, AppendChildLast, InsertChild, RemoveChild, og GetChildNodes(Type).


Iterere sider

Sider er de direkte barna til Document. Iterer dem direkte eller bruk 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}]")

Side-metadata:

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

Tekstuttrekking

Uttrekk all ren 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))

Inspiser formateringssekvenser

Hver RichText inneholder en liste over TextRun segmenter. Hver kjøring har sin egen 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)}]")

Uttrekk hyperkoblinger

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)

Bildeuttrekking

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

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


Tabellparsing

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)

Vedlagte filer

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

Tagger og nummererte lister

Inspiser NoteTag-elementer

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

Inspiser nummererte lister

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-mønster

Bruk DocumentVisitor for å implementere en besøker som går gjennom hele dokumenttreet:

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-eksport

PDF-eksport krever den valgfrie ReportLab-avhengigheten. Installer den med:

pip install "aspose-note[pdf]"

Grunnleggende PDF-eksport

from aspose.note import Document, SaveFormat

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

PDF-eksport med alternativer

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()

Merk: PdfSaveOptions.PageIndex og PageCount feltene finnes, men blir ikke videresendt til PDF-eksportøren i v26.3.1. Hele dokumentet blir alltid eksportert.


Nåværende begrensninger

OmrådeStatus
Lesing .one filerFullt støttet
PDF-eksport (via ReportLab)Støttet
Skriver tilbake til .oneIkke implementert
Krypterte dokumenterStøttes ikke (kaster IncorrectPasswordException)
HTML / bilde / ONE lagringsformaterDeklarert for API-kompatibilitet; kast UnsupportedSaveFormatException

Tilgjengelige guider


Se også

 Norsk