Príručka pre vývojárov
Aspose.Note FOSS for Python is a free, open-source library for reading Microsoft OneNote .one sekčné súbory bez akejkoľvek závislosti na Microsoft Office. Poskytuje čisté verejné API pod aspose.note balíkom, modelovaným podľa Aspose.Note pre rozhranie .NET. Knižnica je vhodná pre automatizáciu dokumentov, indexovanie obsahu, dátové extrakčné pipeline a archivačné pracovné postupy.
Tento vývojársky sprievodca pokrýva kompletný verejný API povrch dostupný vo verzii 26.3.1, s spustiteľnými ukážkami kódu pre každú hlavnú funkciu.
Načítanie dokumentu
Načítajte .one súbor z cesty k súboru alebo binárneho prúdu. The Document trieda je vstupným bodom pre všetky operácie.
Načítať z cesty k súboru
from aspose.note import Document
doc = Document("MyNotes.one")Načítať z binárneho prúdu
Užitočné pri čítaní z cloudového úložiska, HTTP odpovedí alebo pamäťových bufferov:
from pathlib import Path
from aspose.note import Document
with Path("MyNotes.one").open("rb") as f:
doc = Document(f)Možnosti načítania
Použite LoadOptions na nastavenie voliteľných parametrov pri načítaní:
from aspose.note import Document, LoadOptions
opts = LoadOptions()
opts.LoadHistory = True # Include page history in the DOM
doc = Document("MyNotes.one", opts)Poznámka: DocumentPassword existuje na LoadOptions pre kompatibilitu API, ale šifrované dokumenty nie sú podporované. Pokus o načítanie šifrovaného súboru vyvolá IncorrectPasswordException.
Štruktúra dokumentu (DOM)
Model dokumentu OneNote je strom:
Document
└── Page (0..n)
├── Title
│ ├── TitleText (RichText)
│ ├── TitleDate (RichText)
│ └── TitleTime (RichText)
└── Outline (0..n)
└── OutlineElement (0..n)
├── RichText
├── Image
├── Table
│ └── TableRow
│ └── TableCell
│ └── RichText / Image
└── AttachedFileKaždý uzol zverejňuje ParentNode a Document vlastnosť, ktorá prechádza až k koreňu. Zložené uzly podporujú iteráciu detí, FirstChild, LastChild, AppendChildLast, InsertChild, RemoveChild, a GetChildNodes(Type).
Iterácia stránok
Stránky sú priamymi potomkami Document. Iterujte ich priamo alebo použite 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}]")Metadáta stránky:
| Vlastnosť | Typ | Popis |
|---|---|---|
Title | `Title | None` |
Author | `str | None` |
CreationTime | `datetime | None` |
LastModifiedTime | `datetime | None` |
Level | `int | None` |
Extrahovanie textu
Extrahovať celý obyčajný text
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))Skontrolovať formátovacie úseky
Každý RichText obsahuje zoznam TextRun segmentov. Každý beh nesie svoj vlastný 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)}]")Extrahovať hypertextové odkazy
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)Extrahovanie obrázkov
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})")Vlastnosti obrázka: FileName, Bytes, Width, Height, AlternativeTextTitle, AlternativeTextDescription, HyperlinkUrl, Tags.
Analyzovanie tabuliek
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)Pripojené súbory
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}")Značky a číslované zoznamy
Skontrolovať položky NoteTag
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}")Skontrolovať číslované zoznamy
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}")Vzor DocumentVisitor
Použiť DocumentVisitor na implementáciu návštevníka, ktorý prechádza celý strom dokumentu:
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}")Export do PDF
Export do PDF vyžaduje voliteľnú závislosť ReportLab. Nainštalujte ju pomocou:
pip install "aspose-note[pdf]"Základný export PDF
from aspose.note import Document, SaveFormat
doc = Document("MyNotes.one")
doc.Save("output.pdf", SaveFormat.Pdf)Export PDF s možnosťami
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()Poznámka: PdfSaveOptions.PageIndex a PageCount polia existujú, ale nie sú odoslané do PDF exportéra vo verzii v26.3.1. Celý dokument je vždy exportovaný.
Aktuálne obmedzenia
| Oblasť | Stav |
|---|---|
Čítanie .one súbory | Plne podporované |
| Export PDF (prostredníctvom ReportLab) | Podporované |
Zapisovanie späť do .one | Nie je implementované |
| Šifrované dokumenty | Nie je podporované (vyvolá IncorrectPasswordException) |
| HTML / obrázok / ONE formáty ukladania | Deklarované pre kompatibilitu API; vyvolať UnsupportedSaveFormatException |
Dostupné príručky
- Prehľad funkcií: úplný zoznam funkcií s dôkazmi
- Začíname: predpoklady, inštalácia a prvé kroky
- Inštalácia: pip install a voliteľné závislosti