Vodič za programere
Aspose.Note FOSS for Python is a free, open-source library for reading Microsoft OneNote .one sekcioni fajlovi bez ikakve zavisnosti od Microsoft Office-a. Pruža čist javni API pod aspose.note paket, modeliran po Aspose.Note za .NET interfejsu. Biblioteka je pogodna za automatizaciju dokumenata, indeksiranje sadržaja, pipeline‑ove za ekstrakciju podataka i arhivske radne tokove.
Ovaj vodič za programere pokriva kompletnu javnu API površinu dostupnu u verziji 26.3.1, sa izvršnim primerima koda za svaku glavnu funkcionalnost.
Učitavanje dokumenta
Učitaj .one fajl sa putanje fajla ili binarnog toka. The Document klasa je ulazna tačka za sve operacije.
Učitaj sa putanje do fajla
from aspose.note import Document
doc = Document("MyNotes.one")Učitaj iz binarnog toka
Korisno pri čitanju iz cloud skladišta, HTTP odgovora ili memorijskih bafera:
from pathlib import Path
from aspose.note import Document
with Path("MyNotes.one").open("rb") as f:
doc = Document(f)Opcije učitavanja
Koristi LoadOptions za postavljanje opcionih parametara prilikom učitavanja:
from aspose.note import Document, LoadOptions
opts = LoadOptions()
opts.LoadHistory = True # Include page history in the DOM
doc = Document("MyNotes.one", opts)Napomena: DocumentPassword postoji na LoadOptions za kompatibilnost API‑ja, ali šifrovani dokumenti nisu podržani. Pokušaj učitavanja šifrovanog fajla izaziva IncorrectPasswordException.
Struktura dokumenta (DOM)
Model OneNote dokumenta je stablo:
Document
└── Page (0..n)
├── Title
│ ├── TitleText (RichText)
│ ├── TitleDate (RichText)
│ └── TitleTime (RichText)
└── Outline (0..n)
└── OutlineElement (0..n)
├── RichText
├── Image
├── Table
│ └── TableRow
│ └── TableCell
│ └── RichText / Image
└── AttachedFileSvaki čvor izlaže ParentNode i Document svojstvo koje se penje do korena. Složeni čvorovi podržavaju iteraciju dece, FirstChild, LastChild, AppendChildLast, InsertChild, RemoveChild, i GetChildNodes(Type).
Iteriranje stranica
Stranice su direktna deca od Document. Iterirajte ih direktno ili koristite 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}]")Metapodaci stranice:
| Svojstvo | Tip | Opis |
|---|---|---|
Title | `Title | None` |
Author | `str | None` |
CreationTime | `datetime | None` |
LastModifiedTime | `datetime | None` |
Level | `int | None` |
Ekstrakcija teksta
Ekstrahujte sav običan tekst
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))Pregledajte sekvence formatiranja
Svaki RichText sadrži listu TextRun segmenta. Svako pokretanje nosi svoje 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)}]")Ekstrahujte hiperveze
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)Ekstrakcija slika
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})")Svojstva slike: FileName, Bytes, Width, Height, AlternativeTextTitle, AlternativeTextDescription, HyperlinkUrl, Tags.
Parsiranje tabela
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)Priložene datoteke
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}")Oznake i numerisane liste
Pregledajte stavke 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}")Pregledajte numerisane liste
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}")Obrazac DocumentVisitor
Koristite DocumentVisitor za implementaciju posetioca koji prolazi kroz celo stablo dokumenta:
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 izvoz
PDF izvoz zahteva opcionalnu zavisnost ReportLab. Instalirajte je pomoću:
pip install "aspose-note[pdf]"Osnovni PDF izvoz
from aspose.note import Document, SaveFormat
doc = Document("MyNotes.one")
doc.Save("output.pdf", SaveFormat.Pdf)PDF izvoz sa opcijama
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()Napomena: PdfSaveOptions.PageIndex i PageCount Polja postoje, ali se ne prosleđuju PDF izvozniku u v26.3.1. Celokupan dokument se uvek izveze.
Trenutna ograničenja
| Oblast | Status |
|---|---|
Čitanje .one fajlovi | Potpuno podržano |
| PDF izvoz (preko ReportLab) | Podržano |
Pisanje nazad u .one | Nije implementirano |
| Šifrovani dokumenti | Nije podržano (izaziva IncorrectPasswordException) |
| HTML / slika / ONE formati za čuvanje | Deklarisano radi API kompatibilnosti; baci UnsupportedSaveFormatException |
Dostupni vodiči
- Pregled funkcija: potpuna lista funkcija sa dokazima
- Početak: preduslovi, instalacija i prvi koraci
- Instalacija: pip install i opcione zavisnosti