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
                    └── AttachedFile

Kaž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:

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

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í

OblastStav
Čtení .one souboryPlně podporováno
PDF export (pomocí ReportLab)Podporováno
Zápis zpět do .oneNení implementováno
Šifrované dokumentyNení podporováno (vyvolá IncorrectPasswordException)
HTML / image / ONE formáty ukládáníDeklarováno pro kompatibilitu API; vyvolá UnsupportedSaveFormatException

Dostupné průvodce


Viz také

 Čeština