Kūrėjo vadovas
Aspose.Note FOSS for Python is a free, open-source library for reading Microsoft OneNote .one skyriaus failus be jokios priklausomybės nuo Microsoft Office. Ji suteikia švarią viešą API po aspose.note paketą, modeliuotą pagal Aspose.Note .NET sąsają. Biblioteka tinka dokumentų automatizavimui, turinio indeksavimui, duomenų išgavimosi konvejeriams ir archyvavimo darbo srautams.
Ši kūrėjo vadovas apima visą viešą API, prieinamą 26.3.1 versijoje, su vykdomais kodo pavyzdžiais kiekvienai pagrindinei funkcijai.
Dokumento įkėlimas
Įkelti .one failą iš failo kelio arba binarinio srauto. The Document klasė yra įėjimo taškas visoms operacijoms.
Įkelti iš failo kelio
from aspose.note import Document
doc = Document("MyNotes.one")Įkelti iš binarinio srauto
Naudinga skaitant iš debesų saugyklų, HTTP atsakymų arba atminties buferių:
from pathlib import Path
from aspose.note import Document
with Path("MyNotes.one").open("rb") as f:
doc = Document(f)Įkėlimo parinktys
Naudokite LoadOptions nustatyti pasirenkamus parametrus įkėlimo metu:
from aspose.note import Document, LoadOptions
opts = LoadOptions()
opts.LoadHistory = True # Include page history in the DOM
doc = Document("MyNotes.one", opts)Pastaba: DocumentPassword yra LoadOptions API suderinamumui, tačiau šifruoti dokumentai nepalaikomi. Bandant įkelti šifruotą failą raises IncorrectPasswordException.
Dokumento struktūra (DOM)
OneNote dokumento modelis yra medis:
Document
└── Page (0..n)
├── Title
│ ├── TitleText (RichText)
│ ├── TitleDate (RichText)
│ └── TitleTime (RichText)
└── Outline (0..n)
└── OutlineElement (0..n)
├── RichText
├── Image
├── Table
│ └── TableRow
│ └── TableCell
│ └── RichText / Image
└── AttachedFileKiekvienas mazgas atskleidžia ParentNode ir Document savybę, kuri keliauja iki šaknies. Sudėtiniai mazgai palaiko vaikų iteraciją, FirstChild, LastChild, AppendChildLast, InsertChild, RemoveChild, ir GetChildNodes(Type).
Puslapių iteravimas
Puslapiai yra tiesioginiai vaikai Document. Iteruokite juos tiesiogiai arba naudokite 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}]")Puslapio metaduomenys:
| Savybė | Tipas | Aprašymas |
|---|---|---|
Title | `Title | None` |
Author | `str | None` |
CreationTime | `datetime | None` |
LastModifiedTime | `datetime | None` |
Level | `int | None` |
Teksto išgavimas
Išgauti visą paprastą 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))Patikrinkite formatavimo sekas
Kiekvienas RichText turi sąrašą TextRun segmentų. Kiekvienas vykdymas turi savo 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)}]")Išgauti hipersaitus
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)Vaizdų išgavimas
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})")Vaizdo savybės: FileName, Bytes, Width, Height, AlternativeTextTitle, AlternativeTextDescription, HyperlinkUrl, Tags.
Lentelės analizė
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)Prisegtos failai
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}")Žymos ir numeruoti sąrašai
Patikrinkite NoteTag elementus
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}")Patikrinkite numeruotus sąrašus
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 šablonas
Naudoti DocumentVisitor įgyvendinti lankytoją, kuris pereina visą dokumento medį:
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 eksportas
PDF eksportui reikalinga neprivaloma ReportLab priklausomybė. Įdiekite ją naudodami:
pip install "aspose-note[pdf]"Pagrindinis PDF eksportas
from aspose.note import Document, SaveFormat
doc = Document("MyNotes.one")
doc.Save("output.pdf", SaveFormat.Pdf)PDF eksportas su parinktimis
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()Pastaba: PdfSaveOptions.PageIndex ir PageCount laukai egzistuoja, bet nėra perduodami PDF eksporteriui v26.3.1. Visas dokumentas visada eksportuojamas.
Dabartiniai apribojimai
| Sritis | Būsena |
|---|---|
Skaitymas .one failai | Pilnai palaikoma |
| PDF eksportas (per ReportLab) | Palaikoma |
Rašoma atgal į .one | Neįgyvendinta |
| Užšifruoti dokumentai | Nepalaikoma (kelia IncorrectPasswordException) |
| HTML / vaizdas / ONE išsaugojimo formatai | Deklaruota API suderinamumui; kelti UnsupportedSaveFormatException |
Prieinami vadovai
- Funkcijų apžvalga: pilnas funkcijų sąrašas su įrodymais
- Pradžia: reikalavimai, įdiegimas ir pirmieji žingsniai
- Įdiegimas: pip įdiegimas ir papildomos priklausomybės