Entwickler-Leitfaden

Aspose.Note FOSS for Python is a free, open-source library for reading Microsoft OneNote .one Die Software bietet eine saubere öffentliche API unter der aspose.note Das Programm ist ein Paket, das nach dem Modell der Aspose.Note für .NET-Schnittstelle entwickelt wurde. Die Bibliothek eignet sich zur Dokumentenautomatisierung, Inhaltsindexierung, Datenentnahme und Archivierungsworkflows.

Dieser Entwicklerführer deckt die gesamte öffentliche API-Oberfläche ab, die in Version 26.3.1 verfügbar ist. Er enthält laufbare Codebeispiele für jedes wichtige Feature.

Dokumentladen

Ladung a .one Die Daten werden von einem Dateipfad oder einem binären Stream abgerufen. Document Die Klasse ist der Einstiegspunkt für alle Operationen.

Lade von einem Dateipfad aus

from aspose.note import Document

doc = Document("MyNotes.one")

Last aus einem binären Strom

Nützlich beim Lesen aus Cloud-Speicher, HTTP-Antworten oder In-Memory-Puffers:

from pathlib import Path
from aspose.note import Document

with Path("MyNotes.one").open("rb") as f:
    doc = Document(f)

Lastmöglichkeiten

Verwendung LoadOptions die Einstellung von optionalem Parameter zur Ladezeit:

from aspose.note import Document, LoadOptions

opts = LoadOptions()
opts.LoadHistory = True   # Include page history in the DOM
doc = Document("MyNotes.one", opts)

Anmerkung:: DocumentPassword ist auf der LoadOptions Die Datenbank wird von der Kommission in den letzten Jahren eingerichtet, um die API-Kompatibilität zu verbessern. IncorrectPasswordException.


Dokumentstruktur (DOM)

Das OneNote-Dokumentmodell ist ein Baum:

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

Jeder Knoten zeigt sich . ParentNode und a Document Komposite Knoten unterstützen die Kinderiteration, FirstChild, LastChild, AppendChildLast, InsertChild, RemoveChild,und . GetChildNodes(Type).


Iterationsseiten

Seiten sind die direkten Kinder von Document.Sie können direkt wiederholt werden oder verwendet werden. 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}]")

Seiten-Metadaten:

Immobilien und VermögenswerteTyp derBeschreibung
Title`TitleNone`
Author`strNone`
CreationTime`datetimeNone`
LastModifiedTime`datetimeNone`
Level`intNone`

Textentnahme

Entfernen von unentdeckten Texten

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))

Überprüfen von Formatierungsläufen

Jeder von ihnen RichText enthält eine Liste von TextRun Jede Runde hat ihre eigene 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)}]")

Auszug von Hyperlinks

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)

Bildentnahme

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})")

Bild-Eigenschaften: FileName, Bytes, Width, Height, AlternativeTextTitle, AlternativeTextDescription, HyperlinkUrl, Tags.


Tabellenanalyse

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)

Angeschlossene Dateien

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}")

Tags und nummerierte Listen

Die Notendaten überprüfen

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}")

Überprüfung der nummerierten Listen

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}")

DokumentBesuchermuster

Verwendung DocumentVisitor Ein Besucher implementieren, der den gesamten Dokumentbaum durchläuft:

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-Export zu erstellen

Der PDF-Export erfordert die optionale ReportLab-Abhängigkeit. Installieren Sie mit:

pip install aspose-note

Basis-PDF-Export (in der Sprache)

from aspose.note import Document, SaveFormat

doc = Document("MyNotes.one")
doc.Save("output.pdf", SaveFormat.Pdf)

PDF-Export mit Optionen

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()

Anmerkung:: PdfSaveOptions.PageIndex und . PageCount Die Daten werden in der Version v26.3.1 nicht an den PDF-Exporteur weitergeleitet.


Aktuelle Einschränkungen

FlächeStatus der
Lesen .one DateienVollständig unterstützt
PDF-Export (über ReportLab)Unterstützt
Ich schreibe zurück an: .oneNicht umgesetzt
Verschlüsselte DokumenteNicht unterstützt (Erhöhungen) IncorrectPasswordException)
HTML / Bild / ONE SpeicherformateErklärt für API-kompatibilität; erhöhen UnsupportedSaveFormatException

Verfügbare Leitfäden


Siehe auch:

 Deutsch