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::
DocumentPasswordist auf derLoadOptionsDie 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
└── AttachedFileJeder 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ögenswerte | Typ der | Beschreibung |
|---|---|---|
Title | `Title | None` |
Author | `str | None` |
CreationTime | `datetime | None` |
LastModifiedTime | `datetime | None` |
Level | `int | None` |
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-noteBasis-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.PageIndexund .PageCountDie Daten werden in der Version v26.3.1 nicht an den PDF-Exporteur weitergeleitet.
Aktuelle Einschränkungen
| Fläche | Status der |
|---|---|
Lesen .one Dateien | Vollständig unterstützt |
| PDF-Export (über ReportLab) | Unterstützt |
Ich schreibe zurück an: .one | Nicht umgesetzt |
| Verschlüsselte Dokumente | Nicht unterstützt (Erhöhungen) IncorrectPasswordException) |
| HTML / Bild / ONE Speicherformate | Erklärt für API-kompatibilität; erhöhen UnsupportedSaveFormatException |
Verfügbare Leitfäden
- Übersicht über die Merkmale: vollständige Liste der Merkmale mit Beweisen
- Wie man anfängt: Voraussetzungen, Installation und erste Schritte
- Installation: Pip-Installation und optionale Abhängigkeiten