Vodič za programere
Aspose.Note FOSS for Python je besplatna, open‑source biblioteka za čitanje Microsoft OneNote .one sekcijskih datoteka bez ikakve ovisnosti o Microsoft Officeu. Pruža čist javni API pod aspose.note paketom, modeliran prema sučelju Aspose.Note za .NET. Biblioteka je prikladna za automatizaciju dokumenata, indeksiranje sadržaja, cjevovode za ekstrakciju podataka i arhivske radne tokove.
Ovaj priručnik za programere pokriva cijelu javnu API površinu dostupnu u verziji 26.3.1, s izvršnim kodnim primjerima za svaku glavnu značajku.
Učitavanje dokumenta
Učitaj .one datoteku iz putanje datoteke ili binarnog toka. Document klasa je ulazna točka za sve operacije.
Učitaj iz putanje datoteke
from aspose.note import Document
doc = Document("MyNotes.one")Učitaj iz binarnog toka
Korisno pri čitanju iz cloud pohrane, HTTP odgovora ili memorijskih međuspremnika:
from pathlib import Path
from aspose.note import Document
with Path("MyNotes.one").open("rb") as f:
doc = Document(f)Opcije učitavanja
Koristite LoadOptions za postavljanje opcionalnih parametara pri učitavanju:
from aspose.note import Document, LoadOptions
opts = LoadOptions()
opts.LoadHistory = True # Include page history in the DOM
doc = Document("MyNotes.one", opts)Napomena:
DocumentPasswordpostoji naLoadOptionsradi API kompatibilnosti, ali šifrirani dokumenti nisu podržani. Pokušaj učitavanja šifrirane datoteke izazivaIncorrectPasswordException.
Struktura dokumenta (DOM)
Model dokumenta OneNote 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 korijena. Složeni čvorovi podržavaju iteraciju djece, FirstChild, LastChild, AppendChildLast, InsertChild, RemoveChild i GetChildNodes(Type).
Iteriranje stranica
Stranice su izravni potomci Document. Iterirajte ih izravno 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 | Blok naslova stranice |
Author | str | None | Niz autora |
CreationTime | datetime | None | Vrijeme stvaranja stranice |
LastModifiedTime | datetime | None | Vrijeme posljednje izmjene |
Level | int | None | Razina uvlačenja podstranice |
Izdvajanje teksta
Izvuci sav čisti 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))Pregled formatiranja
Svaki RichText sadrži popis TextRun segmenata. Svaki run nosi svoj 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)}]")Ekstrahiraj 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 tablice
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 numerirani popisi
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}")Pregledaj numerirane popise
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}")DocumentVisitor uzorak
Koristite DocumentVisitor za implementaciju posjetitelja koji prolazi kroz cijelo 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 zahtijeva opcionalnu ReportLab ovisnost. Instalirajte ga 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 s 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.PageIndexiPageCountpolja postoje, ali se ne prosljeđuju PDF izvozniku u v26.3.1. Cijeli dokument se uvijek izvozi.
Trenutna ograničenja
| Područje | Status |
|---|---|
Čitanje .one datoteka | Potpuno podržano |
| PDF izvoz (preko ReportLab) | Podržano |
Pisanje natrag u .one | Nije implementirano |
| Šifrirani dokumenti | Nije podržano (baci IncorrectPasswordException) |
| HTML / slika / ONE formati spremanja | Deklarirano za API kompatibilnost; baci UnsupportedSaveFormatException |
Dostupni vodiči
- Features Overview: potpuni popis značajki s dokazima
- Getting Started: preduvjeti, instalacija i prvi koraci
- Installation: pip instalacija i opcijske ovisnosti