Functies Overzicht — Aspose.Note FOSS voor Python
Aspose.Note FOSS for Python (package aspose-note, versie 26.3.1) biedt een Python API voor het lezen van Microsoft OneNote .one sectiebestanden en het exporteren ervan naar PDF. Alle onderstaande functies zijn geverifieerd aan de hand van de broncode van de repository, README, en voorbeeldscripts.
Installatie en configuratie
Installeer vanaf PyPI:
pip install aspose-noteVoor PDF-exportondersteuning (vereist ReportLab):
pip install "aspose-note[pdf]"Vereisten: Python 3.10 of later. Geen Microsoft Office-installatie vereist.
Functies en mogelijkheden
.one-bestandsladen
Laad Microsoft OneNote sectiebestanden vanaf een bestandspad of elke binaire stream (bestandshandle, io.BytesIO, HTTP-responsbody, cloudopslagstream).
Document.FileFormatbiedt een best‑effort indicatie van de OneNote‑bestandsformaatversie (OneNote2010, OneNoteOnline, of OneNote2007)- Stream-gebaseerd laden elimineert schijf‑I/O voor in‑memory of netwerkwerkstromen.
LoadOptions.LoadHistoryvlag bepaalt of paginageschiedenis is opgenomen in de DOM
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)Document‑DOM‑traversal
Het volledige OneNote‑document wordt blootgesteld als een boom van getypeerde Python objecten. Elk knooppunt erft van Node of CompositeNode:
Document: root; exposeertDisplayName,CreationTime,FileFormatPage: direct kind vanDocument; exposeertTitle,Author,CreationTime,LastModifiedTime,LevelTitle: exposeertTitleText,TitleDate,TitleTime(alleRichTextknooppunten)Outline: positionele container metHorizontalOffset,VerticalOffset,MaxWidth,MaxHeight,MinWidth,ReservedWidth,IndentPositionOutlineElement: bladcontainer; exposeertNumberList
Navigatiemethoden op CompositeNode:
| Methode / Eigenschap | Beschrijving |
|---|---|
FirstChild, LastChild | Directe kindtoegang |
GetChildNodes(Type) | Recursieve, typegefilterde zoekopdracht |
AppendChildLast(node) | Kind toevoegen aan het einde |
AppendChildFirst(node) | Kind toevoegen aan het begin |
InsertChild(index, node) | Invoegen op positie |
RemoveChild(node) | Een kind verwijderen |
for child in node | Itereer directe kinderen |
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}")Rich Text-inhoudsextractie
RichText knooppunten exposeren:
Text: str: volledige platte-tekststringTextRuns: list[TextRun]: lijst van opgemaakte segmentenTags: list[NoteTag]: OneNote-tags gekoppeld aan dit blokAppend(text, style=None): een tekstrun in‑memory toevoegenReplace(old_value, new_value): in‑memory tekenreeksvervanging
Elke TextRun bevat:
| Eigenschap | Type | Beschrijving |
|---|---|---|
Text | str | Segmenttekst |
Style | TextStyle | Opmaakmetadata |
TextStyle eigenschappen:
| Eigenschap | 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}")Afbeeldingsextractie
Image nodes geven ruwe bytes en metadata weer voor elke ingesloten afbeelding:
| Eigenschap | Type | Beschrijving |
|---|---|---|
FileName | `str | None` |
Bytes | bytes | Ruwe afbeeldingsgegevens |
Width, Height | `float | None` |
AlternativeTextTitle | `str | None` |
AlternativeTextDescription | `str | None` |
HyperlinkUrl | `str | None` |
Tags | list[NoteTag] | Bijgevoegde 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)")Extractie van bijgevoegde bestanden
AttachedFile nodes geven ingesloten bestandsbijlagen weer:
| Eigenschap | Type | Beschrijving |
|---|---|---|
FileName | `str | None` |
Bytes | bytes | Ruwe bestandsgegevens |
Tags | list[NoteTag] | Bijgevoegde OneNote-tags |
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)Tabelparsing
Table, TableRow, en TableCell toon de volledige tabelstructuur:
| Klasse | Belangrijke eigenschappen |
|---|---|
Table | Columns: list[TableColumn] (elk TableColumn heeft .Width en .LockedWidth), IsBordersVisible: bool, Tags: list[NoteTag] |
TableRow | Doorloop cellen via GetChildNodes(TableCell) |
TableCell | Bevat RichText, Image, en andere inhoudsknooppunten |
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)OneNote-taginspectie
NoteTag verschijnt op RichText, Image, AttachedFile, en Table knooppunten via hun .Tags eigenschap. OutlineElement heeft geen .Tags eigenschap. NoteTag eigenschappen:
| Eigenschap | Type | Beschrijving |
|---|---|---|
Icon | `int | None` |
Label | `str | None` |
FontColor | `int | None` |
Highlight | `int | None` |
CreationTime | `datetime | None` |
CompletedTime | `datetime | None` |
Factory-methode: NoteTag.CreateYellowStar() maakt een standaard gele-ster tagknooppunt.
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})")Ondersteuning voor genummerde lijsten
OutlineElement.NumberList biedt:
| Eigenschap | Type | Beschrijving |
|---|---|---|
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 Traversal
DocumentVisitor biedt een visitor-patroon voor gestructureerde volledige-documenttraversal. Overschrijf elke VisitXxxStart / VisitXxxEnd methode om specifieke knooptypen te onderscheppen:
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-export
Sla een geladen document op als PDF met behulp van Document.Save(). Ondersteund via de optionele ReportLab-backend.
from aspose.note import Document, SaveFormat
doc = Document("notebook.one")
doc.Save("output.pdf", SaveFormat.Pdf)PdfSaveOptions
| Optie | Type | Beschrijving |
|---|---|---|
PageIndex | int | Veld bestaat; niet doorgestuurd naar PDF-exporteur in v26.3.1 (heeft geen effect) |
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()Formaat‑ en Enum‑referentie
SaveFormat
| Waarde | Status |
|---|---|
SaveFormat.Pdf | Geïmplementeerd (vereist ReportLab) |
FileFormat
Document.FileFormat biedt een best effort indicatie van de OneNote-bestandsformaatversie. De enum declareert drie waarden:
| Waarde | Beschrijving |
|---|---|
FileFormat.OneNote2010 | OneNote 2010-formaat |
FileFormat.OneNoteOnline | OneNote Online-formaat |
FileFormat.OneNote2007 | OneNote 2007-formaat |
NodeType
NodeType.Document, NodeType.Page, NodeType.Outline, NodeType.OutlineElement, NodeType.RichText, NodeType.Image, NodeType.Table, NodeType.AttachedFile
HorizontalAlignment
HorizontalAlignment.Left, HorizontalAlignment.Center, HorizontalAlignment.Right
Huidige beperkingen
| Beperking | Detail |
|---|---|
| Alleen-lezen | Terugschrijven naar .one formaat is niet geïmplementeerd |
| Geen versleuteling | Versleutelde documenten veroorzaken IncorrectPasswordException |
| PDF alleen voor export | Overig SaveFormat waarden veroorzaken UnsupportedSaveFormatException |
| ReportLab vereist voor PDF | Installeren pip install "aspose-note[pdf]" afzonderlijk |
GetPageHistory retourneert een lijst met één element | Volledige paginageschiedenis doorlopen is een stub; retourneert [page] |
DetectLayoutChanges() | Compatibiliteitsstub; geen bewerking |
Tips en best practices
- Controleer op None:
Page.Title,Title.TitleText,OutlineElement.NumberList, en de meeste metagegevensvelden kunnenNone. Bescherm altijd metif x is not Noneofif xvoordat u eigenschappen benadert. - Gebruik
GetChildNodes(Type)voor recursief zoeken in plaats van handmatig door de boom te itereren. Het doorzoekt de volledige subboom. - Itereer directe kinderen met
for child in nodewanneer u alleen directe kinderen nodig heeft. - Codering op Windows afhandelen: Op Windows,
sys.stdoutkan een verouderde codepagina gebruiken. Voeg toesys.stdout.reconfigure(encoding="utf-8", errors="replace")bij opstarten bij het afdrukken van Unicode-tekst. - Installeer
[pdf]extra: Importeer nietSaveFormat.Pdffunctionaliteit zonder eerst te installerenpip install "aspose-note[pdf]". Zonder ReportLab zal het opslaan naar PDF een importfout veroorzaken tijdens runtime.