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

Kaž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ťTypPopis
Title`TitleNone`
Author`strNone`
CreationTime`datetimeNone`
LastModifiedTime`datetimeNone`
Level`intNone`

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úboryPlne podporované
Export PDF (prostredníctvom ReportLab)Podporované
Zapisovanie späť do .oneNie je implementované
Šifrované dokumentyNie je podporované (vyvolá IncorrectPasswordException)
HTML / obrázok / ONE formáty ukladaniaDeklarované pre kompatibilitu API; vyvolať UnsupportedSaveFormatException

Dostupné príručky


Pozri tiež

 Slovenčina