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
└── AttachedFileHver 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:
| Egenskap | Type | Beskrivelse |
|---|---|---|
Title | `Title | None` |
Author | `str | None` |
CreationTime | `datetime | None` |
LastModifiedTime | `datetime | None` |
Level | `int | None` |
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åde | Status |
|---|---|
Lesing .one filer | Fullt støttet |
| PDF-eksport (via ReportLab) | Støttet |
Skriver tilbake til .one | Ikke implementert |
| Krypterte dokumenter | Støttes ikke (kaster IncorrectPasswordException) |
| HTML / bilde / ONE lagringsformater | Deklarert for API-kompatibilitet; kast UnsupportedSaveFormatException |
Tilgjengelige guider
- Oversikt over funksjoner: fullstendig funksjonsliste med bevis
- Kom i gang: forutsetninger, installasjon, og første steg
- Installasjon: pip install og valgfrie avhengigheter