Udviklerguide
Aspose.Note FOSS for Python is a free, open-source library for reading Microsoft OneNote .one sektionfiler uden nogen afhængighed af Microsoft Office. Den leverer et rent offentligt API under den aspose.note pakke, modelleret efter Aspose.Note for .NET grænsefladen. Biblioteket er egnet til dokumentautomatisering, indholdsindeksering, dataudtræknings‑pipelines og arkiveringsarbejdsgange.
Denne udviklerguide dækker hele det offentlige API‑område, der er tilgængeligt i version 26.3.1, med kørbare kodeeksempler for hver større funktion.
Indlæsning af dokument
Indlæs en .one fil fra en filsti eller en binær strøm. Den Document klasse er indgangspunktet for alle operationer.
Indlæs fra en filsti
from aspose.note import Document
doc = Document("MyNotes.one")Indlæs fra en binær strøm
Nyttigt ved læsning fra cloud‑lagring, HTTP‑respons eller hukommelses‑buffere:
from pathlib import Path
from aspose.note import Document
with Path("MyNotes.one").open("rb") as f:
doc = Document(f)Indlæsningsindstillinger
Brug LoadOptions til at angive valgfrie parametre ved indlæsning:
from aspose.note import Document, LoadOptions
opts = LoadOptions()
opts.LoadHistory = True # Include page history in the DOM
doc = Document("MyNotes.one", opts)Bemærk: DocumentPassword findes på LoadOptions for API-kompatibilitet, men krypterede dokumenter understøttes ikke. Forsøg på at indlæse en krypteret fil udløser IncorrectPasswordException.
Dokumentstruktur (DOM)
OneNote-dokumentmodellen er et træ:
Document
└── Page (0..n)
├── Title
│ ├── TitleText (RichText)
│ ├── TitleDate (RichText)
│ └── TitleTime (RichText)
└── Outline (0..n)
└── OutlineElement (0..n)
├── RichText
├── Image
├── Table
│ └── TableRow
│ └── TableCell
│ └── RichText / Image
└── AttachedFileHver node eksponerer ParentNode og en Document egenskab, der bevæger sig op til roden. Sammensatte noder understøtter iteration af børn, FirstChild, LastChild, AppendChildLast, InsertChild, RemoveChild, og GetChildNodes(Type).
Iteration af sider
Sider er de direkte børn af Document. Iterer dem direkte eller brug 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:
| Egenskab | Type | Beskrivelse |
|---|---|---|
Title | `Title | None` |
Author | `str | None` |
CreationTime | `datetime | None` |
LastModifiedTime | `datetime | None` |
Level | `int | None` |
Tekstudtrækning
Udtræk al 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))Undersøg formateringsløb
Hver RichText indeholder en liste over TextRun segmenter. Hver kørsel 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)}]")Udtræk 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)Billedudtrækning
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})")Billedegenskaber: 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)Vedhæftede 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}")Tags og nummererede lister
Undersøg 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}")Undersøg nummererede 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
Brug DocumentVisitor til at implementere en besøger, der gennemgår hele dokumenttræet:
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 kræver den valgfrie ReportLab-afhængighed. Installer den med:
pip install "aspose-note[pdf]"Grundlæggende PDF-eksport
from aspose.note import Document, SaveFormat
doc = Document("MyNotes.one")
doc.Save("output.pdf", SaveFormat.Pdf)PDF-eksport med indstillinger
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()Bemærk: PdfSaveOptions.PageIndex og PageCount felter findes, men videresendes ikke til PDF-eksportøren i v26.3.1. Hele dokumentet eksporteres altid.
Aktuelle begrænsninger
| Område | Status |
|---|---|
Læsning .one filer | Fuldt understøttet |
| PDF-eksport (via ReportLab) | Understøttet |
Skriver tilbage til .one | Ikke implementeret |
| Krypterede dokumenter | Understøttes ikke (kaster IncorrectPasswordException) |
| HTML / billede / ONE-gemmeformater | Deklareret for API-kompatibilitet; kaster UnsupportedSaveFormatException |
Tilgængelige vejledninger
- Oversigt over funktioner: fuld funktionsliste med beviser
- Kom i gang: forudsætninger, installation og første trin
- Installation: pip install og valgfrie afhængigheder