Vývojářská příručka
Aspose.Note FOSS for Python is a free, open-source library for reading Microsoft OneNote .one sekční soubory bez jakékoli závislosti na Microsoft Office. Poskytuje čisté veřejné API pod aspose.note balíčkem, modelovaným podle Aspose.Note pro rozhraní .NET. Knihovna je vhodná pro automatizaci dokumentů, indexaci obsahu, datové extrakční pipeline a archivní pracovní toky.
Tato příručka pro vývojáře pokrývá kompletní veřejné API dostupné ve verzi 26.3.1, s spustitelnými ukázkami kódu pro každou hlavní funkci.
Načítání dokumentu
Načíst .one soubor z cesty k souboru nebo binárního proudu. The Document třída je vstupním bodem pro všechny operace.
Načíst z cesty k souboru
from aspose.note import Document
doc = Document("MyNotes.one")Načíst z binárního proudu
Užitečné při čtení z cloudového úložiště, HTTP odpovědí nebo paměťových bufferů:
from pathlib import Path
from aspose.note import Document
with Path("MyNotes.one").open("rb") as f:
doc = Document(f)Možnosti načítání
Použijte LoadOptions k nastavení volitelných parametrů při načítání:
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 pro kompatibilitu API, ale šifrované dokumenty nejsou podporovány. Pokus o načtení šifrovaného souboru vyvolá IncorrectPasswordException.
Struktura 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ý uzel vystavuje ParentNode a Document vlastnost, která prochází až k kořeni. Složené uzly podporují iteraci podřízených, FirstChild, LastChild, AppendChildLast, InsertChild, RemoveChild, a GetChildNodes(Type).
Iterace stránek
Stránky jsou přímými potomky Document. Iterujte je přímo nebo použijte 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}]")Metadata stránky:
| Vlastnost | Typ | Popis |
|---|---|---|
Title | `Title | None` |
Author | `str | None` |
CreationTime | `datetime | None` |
LastModifiedTime | `datetime | None` |
Level | `int | None` |
Extrahování textu
Extrahovat veškerý prostý 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))Prozkoumat formátovací úseky
Každý RichText obsahuje seznam TextRun segmenty. Každý běh nese svůj 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)}]")Extrahovat 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)Extrahování obrázků
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ázku: FileName, Bytes, Width, Height, AlternativeTextTitle, AlternativeTextDescription, HyperlinkUrl, Tags.
Zpracování tabulky
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)Připojené soubory
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}")Štítky a číslované seznamy
Prozkoumat 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}")Prozkoumat číslované seznamy
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žijte DocumentVisitor k implementaci návštěvníka, který prochází 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 PDF
Export PDF vyžaduje volitelnou závislost ReportLab. Nainstalujte ji pomocí:
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žnostmi
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 pole existují, ale nejsou předána exportéru PDF ve verzi v26.3.1. Celý dokument je vždy exportován.
Aktuální omezení
| Oblast | Stav |
|---|---|
Čtení .one soubory | Plně podporováno |
| PDF export (pomocí ReportLab) | Podporováno |
Zápis zpět do .one | Není implementováno |
| Šifrované dokumenty | Není podporováno (vyvolá IncorrectPasswordException) |
| HTML / image / ONE formáty ukládání | Deklarováno pro kompatibilitu API; vyvolá UnsupportedSaveFormatException |
Dostupné průvodce
- Přehled funkcí: úplný seznam funkcí s důkazy
- Začínáme: předpoklady, instalace a první kroky
- Instalace: pip install a volitelné závislosti