Izstrādātāja rokasgrāmata
Aspose.Note FOSS for Python is a free, open-source library for reading Microsoft OneNote .one sadaļas failus bez jebkādas atkarības no Microsoft Office. Tas nodrošina tīru publisku API zem the aspose.note pakete, modelēta pēc Aspose.Note priekš .NET saskarnes. Bibliotēka ir piemērota dokumentu automatizācijai, satura indeksēšanai, datu izguves cauruļvadiem un arhīvu darba plūsmām.
Šī izstrādātāju rokasgrāmata aptver pilnu publiskā API virsmu, kas pieejama versijā 26.3.1, ar izpildāmiem koda piemēriem katrai galvenajai funkcijai.
Dokumenta ielāde
Ielādēt .one failu no faila ceļa vai binārā straumes. The Document klase ir ieejas punkts visām operācijām.
Ielādēt no faila ceļa
from aspose.note import Document
doc = Document("MyNotes.one")Ielādēt no binārā straumes
Noderīgi, lasot no mākoņa glabātuves, HTTP atbildēm vai atmiņā buferiem:
from pathlib import Path
from aspose.note import Document
with Path("MyNotes.one").open("rb") as f:
doc = Document(f)Ielādes iespējas
Izmantot LoadOptions lai iestatītu izvēles parametrus ielādes laikā:
from aspose.note import Document, LoadOptions
opts = LoadOptions()
opts.LoadHistory = True # Include page history in the DOM
doc = Document("MyNotes.one", opts)Piezīme: DocumentPassword eksistē uz LoadOptions API saderībai, bet šifrēti dokumenti netiek atbalstīti. Mēģinājums ielādēt šifrētu failu izraisa IncorrectPasswordException.
Dokumenta struktūra (DOM)
OneNote dokumenta modelis ir koks:
Document
└── Page (0..n)
├── Title
│ ├── TitleText (RichText)
│ ├── TitleDate (RichText)
│ └── TitleTime (RichText)
└── Outline (0..n)
└── OutlineElement (0..n)
├── RichText
├── Image
├── Table
│ └── TableRow
│ └── TableCell
│ └── RichText / Image
└── AttachedFileKatrs mezgls atklāj ParentNode un Document īpašību, kas pārvietojas uz sakni. Kompozīcijas mezgli atbalsta bērnu iterāciju, FirstChild, LastChild, AppendChildLast, InsertChild, RemoveChild, un GetChildNodes(Type).
Lapu iterācija
Lapas ir tieši bērni Document. Iterējiet tos tieši vai izmantojiet 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}]")Lapas metadati:
| Īpašība | Tips | Apraksts |
|---|---|---|
Title | `Title | None` |
Author | `str | None` |
CreationTime | `datetime | None` |
LastModifiedTime | `datetime | None` |
Level | `int | None` |
Teksta izguve
Izgūt visu vienkāršo tekstu
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))Pārbaudīt formatēšanas fragmentus
Katrs RichText satur sarakstu ar TextRun segmentus. Katrs izpildījums nes savu 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)}]")Izgūt hipersaites
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)Attēlu izguve
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})")Attēla īpašības: FileName, Bytes, Width, Height, AlternativeTextTitle, AlternativeTextDescription, HyperlinkUrl, Tags.
Tabulu parsēšana
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)Pievienotie faili
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}")Tagi un numurēti saraksti
Pārbaudīt NoteTag vienumus
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}")Pārbaudīt numurētus sarakstus
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 paraugs
Izmantot DocumentVisitor lai īstenotu apmeklētāju, kas pārvietojas pa visu dokumenta koku:
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 eksportēšana
PDF eksportēšanai ir nepieciešama izvēles atkarība ReportLab. Instalējiet to, izmantojot:
pip install "aspose-note[pdf]"Pamata PDF eksportēšana
from aspose.note import Document, SaveFormat
doc = Document("MyNotes.one")
doc.Save("output.pdf", SaveFormat.Pdf)PDF eksportēšana ar opcijām
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()Piezīme: PdfSaveOptions.PageIndex un PageCount lauki pastāv, bet tie netiek pārsūtīti PDF eksportētājam versijā v26.3.1. Vesels dokuments vienmēr tiek eksportēts.
Pašreizējie ierobežojumi
| Apgabals | Statuss |
|---|---|
Lasīšana .one faili | Pilnībā atbalstīts |
| PDF eksportēšana (caur ReportLab) | Atbalstīts |
Rakstīt atpakaļ uz .one | Nav īstenots |
| Šifrēti dokumenti | Nav atbalstīts (izraisa IncorrectPasswordException) |
| HTML / attēls / ONE saglabāšanas formāti | Deklarēts API saderībai; izraisīt UnsupportedSaveFormatException |
Pieejamie ceļveži
- Īpašību pārskats: pilns funkciju saraksts ar pierādījumiem
- Sākšana: priekšnosacījumi, instalācija un pirmie soļi
- Instalēšana: pip instalēšana un papildu atkarības