Funksjonsoversikt — Aspose.Note FOSS for Python
Aspose.Note FOSS for Python (package aspose-note, versjon 26.3.1) gir et Python API for å lese Microsoft OneNote .one seksjonsfiler og eksportere dem til PDF. Alle funksjonene listet nedenfor er verifisert mot kildekoden i depotet, README og eksempelskript.
Installasjon og oppsett
Installer fra PyPI:
pip install aspose-noteFor PDF‑eksportstøtte (krever ReportLab):
pip install "aspose-note[pdf]"Krav: Python 3.10 eller nyere. Ingen Microsoft Office‑installasjon kreves.
Funksjoner og muligheter
.Lasting av .one‑fil
Last inn Microsoft OneNote seksjonsfiler fra en filsti eller en hvilken som helst binær strøm (filhåndtak, io.BytesIO,HTTP-responskropp, skylagringsstrøm).
Document.FileFormatgir en best‑effort‑indikasjon av OneNote‑filformatversjonen (OneNote2010, OneNoteOnline eller OneNote2007)- Strømbasert lasting eliminerer disk‑I/O for arbeidsflyter i minnet eller over nettverket.
LoadOptions.LoadHistoryflagget styrer om sidehistorikk inkluderes i DOM-en
from aspose.note import Document
##From a file path
doc = Document("notebook.one")
##From a binary stream
with open("notebook.one", "rb") as f:
doc = Document(f)Traversering av dokument‑DOM
Hele OneNote-dokumentet eksponeres som et tre av typede Python-objekter. Hver node arver fra Node eller CompositeNode:
Document: rot; eksponererDisplayName,CreationTime,FileFormatPage: direkte barn avDocument; eksponererTitle,Author,CreationTime,LastModifiedTime,LevelTitle: eksponererTitleText,TitleDate,TitleTime(alleRichTextnoder)Outline: posisjonsbeholder medHorizontalOffset,VerticalOffset,MaxWidth,MaxHeight,MinWidth,ReservedWidth,IndentPositionOutlineElement: bladbeholder; eksponererNumberList
Navigasjonsmetoder på CompositeNode:
| Metode / Egenskap | Beskrivelse |
|---|---|
FirstChild, LastChild | Direkte barne-tilgang |
GetChildNodes(Type) | Rekursiv, typefiltrert søk |
AppendChildLast(node) | Legg til undernode på slutten |
AppendChildFirst(node) | Legg til undernode i starten |
InsertChild(index, node) | Sett inn på posisjon |
RemoveChild(node) | Fjern en undernode |
for child in node | Iterer direkte undernoder |
from aspose.note import Document, Page, Outline, OutlineElement, RichText
doc = Document("notebook.one")
for page in doc.GetChildNodes(Page):
title_text = page.Title.TitleText.Text if page.Title and page.Title.TitleText else ""
print(f"Page: {title_text}")
for outline in page.GetChildNodes(Outline):
for oe in outline.GetChildNodes(OutlineElement):
for rt in oe.GetChildNodes(RichText):
print(f" {rt.Text}")Uttrekk av Rich Text-innhold
RichText noder eksponerer:
Text: str: full tekststrengTextRuns: list[TextRun]: liste over formaterte segmenterTags: list[NoteTag]: OneNote‑tagger knyttet til denne blokkenAppend(text, style=None): legg til en tekstkjede i minnetReplace(old_value, new_value): strengsubstitusjon i minnet
Hver TextRun bærer:
| Egenskap | Type | Beskrivelse |
|---|---|---|
Text | str | Segmenttekst |
Style | TextStyle | Formateringsmetadata |
TextStyle egenskaper:
| Egenskap | Type |
|---|---|
IsBold, IsItalic, IsUnderline, IsStrikethrough | bool |
IsSuperscript, IsSubscript | bool |
FontName | `str |
FontSize | `float |
FontColor, Highlight | `int |
Language | `int |
IsHyperlink | bool |
HyperlinkAddress | `str |
from aspose.note import Document, RichText
doc = Document("notebook.one")
for rt in doc.GetChildNodes(RichText):
for run in rt.TextRuns:
if run.Style.IsHyperlink:
print(f"Hyperlink: {run.Text} -> {run.Style.HyperlinkAddress}")
if run.Style.IsBold:
print(f"Bold text: {run.Text}")Bildeuttrekking
Image noder eksponerer rå bytes og metadata for hvert innebygd bilde:
| Egenskap | Type | Beskrivelse |
|---|---|---|
FileName | `str | None` |
Bytes | bytes | Rå bildedata |
Width, Height | `float | None` |
AlternativeTextTitle | `str | None` |
AlternativeTextDescription | `str | None` |
HyperlinkUrl | `str | None` |
Tags | list[NoteTag] | Vedlagte OneNote tags |
from aspose.note import Document, Image
doc = Document("notebook.one")
for i, img in enumerate(doc.GetChildNodes(Image), start=1):
filename = img.FileName or f"image_{i}.bin"
with open(filename, "wb") as f:
f.write(img.Bytes)
print(f"Saved: {filename} ({img.Width} x {img.Height} pts)")Uttrekk av vedlagte filer
AttachedFile noder eksponerer innebygde filvedlegg:
| Egenskap | Type | Beskrivelse |
|---|---|---|
FileName | `str | None` |
Bytes | bytes | Rå fildata |
Tags | list[NoteTag] | Vedlagte OneNote‑tagger |
from aspose.note import Document, AttachedFile
doc = Document("notebook.one")
for i, af in enumerate(doc.GetChildNodes(AttachedFile), start=1):
filename = af.FileName or f"attachment_{i}.bin"
with open(filename, "wb") as f:
f.write(af.Bytes)Tabellparsing
Table, TableRow, og TableCell avslør den fullstendige tabellstrukturen:
| Klasse | Nøkkelegenskaper |
|---|---|
Table | Columns: list[TableColumn] (hver TableColumn har .Width og .LockedWidth), IsBordersVisible: bool, Tags: list[NoteTag] |
TableRow | Iterer celler via GetChildNodes(TableCell) |
TableCell | Inneholder RichText, Image, og andre innholdsnoder |
from aspose.note import Document, Table, TableRow, TableCell, RichText
doc = Document("notebook.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)
values = [
" ".join(rt.Text for rt in cell.GetChildNodes(RichText)).strip()
for cell in cells
]
print(f"Row {r}:", values)Inspeksjon av OneNote‑tagger
NoteTag vises på RichText, Image, AttachedFile, og Table noder via deres .Tags egenskap. OutlineElement har ikke en .Tags egenskap. NoteTag egenskaper:
| Egenskap | Type | Beskrivelse |
|---|---|---|
Icon | `int | None` |
Label | `str | None` |
FontColor | `int | None` |
Highlight | `int | None` |
CreationTime | `datetime | None` |
CompletedTime | `datetime | None` |
Fabrikkmetode: NoteTag.CreateYellowStar() oppretter en standard gul‑stjerne‑taggnode.
from aspose.note import Document, RichText
doc = Document("notebook.one")
for rt in doc.GetChildNodes(RichText):
for tag in rt.Tags:
print(f"Tag: {tag.Label} (icon={tag.Icon}, completed={tag.CompletedTime})")Støtte for nummerert liste
OutlineElement.NumberList eksponerer:
| Egenskap | Type | Beskrivelse |
|---|---|---|
Format | `str | None` |
Restart | `int | None` |
from aspose.note import Document, OutlineElement
doc = Document("notebook.one")
for oe in doc.GetChildNodes(OutlineElement):
nl = oe.NumberList
if nl:
print(f"format={nl.Format!r}")DocumentVisitor-gjennomgang
DocumentVisitor gir et besøksmønster for strukturert full‑dokument‑traversering. Overstyr enhver VisitXxxStart / VisitXxxEnd metode for å avskjære spesifikke nodetyper:
VisitDocumentStart(doc)/VisitDocumentEnd(doc)VisitPageStart(page)/VisitPageEnd(page)VisitTitleStart(title)/VisitTitleEnd(title)VisitOutlineStart(outline)/VisitOutlineEnd(outline)VisitOutlineElementStart(oe)/VisitOutlineElementEnd(oe)VisitRichTextStart(rt)/VisitRichTextEnd(rt)VisitImageStart(img)/VisitImageEnd(img)
from aspose.note import Document, DocumentVisitor, Page, RichText, Image
class MySummaryVisitor(DocumentVisitor):
def __init__(self):
self.pages, self.texts, self.images = 0, 0, 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("notebook.one")
v = MySummaryVisitor()
doc.Accept(v)
print(f"Pages={v.pages} RichText={v.texts} Images={v.images}")PDF-eksport
Lagre et lastet dokument til PDF ved å bruke Document.Save(). Støttet via den valgfrie ReportLab-backenden.
from aspose.note import Document, SaveFormat
doc = Document("notebook.one")
doc.Save("output.pdf", SaveFormat.Pdf)PdfSaveOptions
| Alternativ | Type | Beskrivelse |
|---|---|---|
PageIndex | int | Feltet finnes; ikke videresendt til PDF-eksportøren i v26.3.1 (har ingen effekt) |
PageCount | `int | None` |
ImageCompression | `Any | None` |
JpegQuality | `int | None` |
PageSettings | `Any | None` |
PageSplittingAlgorithm | `Any | None` |
import io
from aspose.note import Document, SaveFormat
from aspose.note.saving import PdfSaveOptions
doc = Document("notebook.one")
##Save to file
doc.Save("output.pdf", SaveFormat.Pdf)
##Save to in-memory stream
buf = io.BytesIO()
doc.Save(buf, PdfSaveOptions())
pdf_bytes = buf.getvalue()Format- og enum-referanse
SaveFormat
| Verdi | Status |
|---|---|
SaveFormat.Pdf | Implementert (krever ReportLab) |
FileFormat
Document.FileFormat gir en best-innsats indikasjon på OneNote-filformatversjonen. Enum-en deklarerer tre verdier:
| Verdi | Beskrivelse |
|---|---|
FileFormat.OneNote2010 | OneNote 2010-format |
FileFormat.OneNoteOnline | OneNote Online-format |
FileFormat.OneNote2007 | OneNote 2007-format |
NodeType
NodeType.Document, NodeType.Page, NodeType.Outline, NodeType.OutlineElement, NodeType.RichText, NodeType.Image, NodeType.Table, NodeType.AttachedFile
HorizontalAlignment
HorizontalAlignment.Left, HorizontalAlignment.Center, HorizontalAlignment.Right
Nåværende begrensninger
| Begrensning | Detalj |
|---|---|
| Skrivebeskyttet | Skriver tilbake til .one format er ikke implementert |
| Ingen kryptering | Krypterte dokumenter gir IncorrectPasswordException |
| PDF kun for eksport | Annet SaveFormat verdier gir UnsupportedSaveFormatException |
| ReportLab kreves for PDF | Installer pip install "aspose-note[pdf]" separat |
GetPageHistory returnerer enkelt-elementliste | Full sidehistorikk-gjennomgang er en stub; returnerer [page] |
DetectLayoutChanges() | Kompatibilitetsstub; ingen operasjon |
Tips og beste praksis
- Sjekk for None:
Page.Title,Title.TitleText,OutlineElement.NumberList, og de fleste metadatafeltene kan væreNone. Beskytt alltid medif x is not Noneellerif xfør du får tilgang til egenskaper. - Bruk
GetChildNodes(Type)for rekursivt søk i stedet for å iterere treet manuelt. Den søker gjennom hele undertræet. - Iterer direkte barn med
for child in nodenår du kun trenger umiddelbare barn. - Håndter koding på Windows: På Windows,
sys.stdoutkan bruke en eldre kodeside. Legg tilsys.stdout.reconfigure(encoding="utf-8", errors="replace")ved oppstart når du skriver ut Unicode‑tekst. - Installer
[pdf]ekstra: Ikke importerSaveFormat.Pdffunksjonalitet uten å først installerepip install "aspose-note[pdf]". Uten ReportLab vil lagring til PDF utløse en importfeil ved kjøring.