Funktionsöversikt — Aspose.Note FOSS för Python
Aspose.Note FOSS for Python (package aspose-note, version 26.3.1) tillhandahåller ett Python API för att läsa Microsoft OneNote .one sektionfiler och exportera dem till PDF. Alla funktioner som listas nedan har verifierats mot källkoden i repot, README och exempelskript.
Installation och konfiguration
Installera från PyPI:
pip install aspose-noteFör PDF‑exportstöd (kräver ReportLab):
pip install "aspose-note[pdf]"Krav: Python 3.10 eller senare. Ingen Microsoft Office‑installation krävs.
Funktioner och möjligheter
.one‑filinläsning
Läs Microsoft OneNote-sektionfiler från en filsökväg eller någon binär ström (filhandtag, io.BytesIO, HTTP-svarsbody, molnlagringsström).
Document.FileFormatger en bästa möjliga indikation av OneNote-filformatets version (OneNote2010, OneNoteOnline eller OneNote2007)- Ström‑baserad inläsning eliminerar disk‑I/O för arbetsflöden i minnet eller över nätverk
LoadOptions.LoadHistoryflagga styr om sidhistorik inkluderas i 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)Traversering av dokument‑DOM
Det fullständiga OneNote-dokumentet exponeras som ett träd av typade Python-objekt. Varje nod ärver från Node eller CompositeNode:
Document: rot; exponerarDisplayName,CreationTime,FileFormatPage: direkt barn tillDocument; exponerarTitle,Author,CreationTime,LastModifiedTime,LevelTitle: exponerarTitleText,TitleDate,TitleTime(allaRichTextnoder)Outline: positionsbehållare medHorizontalOffset,VerticalOffset,MaxWidth,MaxHeight,MinWidth,ReservedWidth,IndentPositionOutlineElement: lövbehållare; exponerarNumberList
Navigeringsmetoder på CompositeNode:
| Metod / Egenskap | Beskrivning |
|---|---|
FirstChild, LastChild | Direkt barnåtkomst |
GetChildNodes(Type) | Rekursiv, typfiltrerad sökning |
AppendChildLast(node) | Lägg till barn i slutet |
AppendChildFirst(node) | Lägg till barn i början |
InsertChild(index, node) | Infoga på position |
RemoveChild(node) | Ta bort ett barn |
for child in node | Iterera direkta barn |
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}")Extrahering av Rich Text-innehåll
RichText noder exponerar:
Text: str: fullständig rentextsträngTextRuns: list[TextRun]: lista med formaterade segmentTags: list[NoteTag]: OneNote-taggar kopplade till detta blockAppend(text, style=None): lägg till en textsekvens i minnetReplace(old_value, new_value): strängsubstitution i minnet
Varje TextRun bär:
| Egenskap | Typ | Beskrivning |
|---|---|---|
Text | str | Segmenttext |
Style | TextStyle | Formateringsmetadata |
TextStyle egenskaper:
| Egenskap | Typ |
|---|---|
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}")Bildextraktion
Image noder exponerar råa byte och metadata för varje inbäddad bild:
| Egenskap | Typ | Beskrivning |
|---|---|---|
FileName | `str | None` |
Bytes | bytes | Rå bilddata |
Width, Height | `float | None` |
AlternativeTextTitle | `str | None` |
AlternativeTextDescription | `str | None` |
HyperlinkUrl | `str | None` |
Tags | list[NoteTag] | Bifogade OneNote-taggar |
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)")Extrahering av bifogade filer
AttachedFile noder exponerar inbäddade filbilagor:
| Egenskap | Typ | Beskrivning |
|---|---|---|
FileName | `str | None` |
Bytes | bytes | Råfildata |
Tags | list[NoteTag] | Bifogade OneNote-taggar |
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)Tabellparsning
Table, TableRow, och TableCell visa hela tabellstrukturen:
| Klass | Nyckelegenskaper |
|---|---|
Table | Columns: list[TableColumn] (varje TableColumn har .Width och .LockedWidth), IsBordersVisible: bool, Tags: list[NoteTag] |
TableRow | Iterera celler via GetChildNodes(TableCell) |
TableCell | Innehåller RichText, Image, och andra innehållsnoder |
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)Inspektion av OneNote-taggar
NoteTag visas på RichText, Image, AttachedFile, och Table noder via deras .Tags egenskap. OutlineElement har ingen .Tags egenskap. NoteTag egenskaper:
| Egenskap | Typ | Beskrivning |
|---|---|---|
Icon | `int | None` |
Label | `str | None` |
FontColor | `int | None` |
Highlight | `int | None` |
CreationTime | `datetime | None` |
CompletedTime | `datetime | None` |
Fabrikmetod: NoteTag.CreateYellowStar() skapar en standard gul‑stjärna‑taggnod.
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öd för numrerade listor
OutlineElement.NumberList exponerar:
| Egenskap | Typ | Beskrivning |
|---|---|---|
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‑traversering
DocumentVisitor tillhandahåller ett besökarmönster för strukturerad fulldokumenttraversering. Åsidosätt valfri VisitXxxStart / VisitXxxEnd metod för att avlyssna specifika nodtyper:
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
Spara ett laddat dokument till PDF med Document.Save(). Stöds via den valfria ReportLab-backenden.
from aspose.note import Document, SaveFormat
doc = Document("notebook.one")
doc.Save("output.pdf", SaveFormat.Pdf)PdfSaveOptions
| Alternativ | Typ | Beskrivning |
|---|---|---|
PageIndex | int | Fältet finns; inte vidarebefordras till PDF-exportö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‑ och enum‑referens
SaveFormat
| Värde | Status |
|---|---|
SaveFormat.Pdf | Implementerad (kräver ReportLab) |
FileFormat
Document.FileFormat ger en bästa möjliga indikation av OneNote-filformatets version. Enum deklarerar tre värden:
| Värde | Beskrivning |
|---|---|
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
Aktuella begränsningar
| Begränsning | Detalj |
|---|---|
| Skrivskyddad | Skriver tillbaka till .one format är inte implementerat |
| Ingen kryptering | Krypterade dokument ger IncorrectPasswordException |
| Endast PDF för export | Annat SaveFormat värden ger UnsupportedSaveFormatException |
| ReportLab krävs för PDF | Installera pip install "aspose-note[pdf]" separat |
GetPageHistory returnerar en lista med ett element | Full sidhistorikgenomgång är en stub; returnerar [page] |
DetectLayoutChanges() | Kompatibilitetsstub; ingen operation |
Tips och bästa praxis
- Kontrollera om None:
Page.Title,Title.TitleText,OutlineElement.NumberList, och de flesta metadatafält kan varaNone. Skydda alltid medif x is not Noneellerif xinnan du får åtkomst till egenskaperna. - Använd
GetChildNodes(Type)för rekursiv sökning istället för att manuellt iterera trädet. Den söker igenom hela underträdet. - Iterera direkta barn med
for child in nodenär du bara behöver omedelbara barn. - Hantera kodning på Windows: På Windows,
sys.stdoutkan använda en äldre kodsida. Lägg tillsys.stdout.reconfigure(encoding="utf-8", errors="replace")vid start när du skriver ut Unicode-text. - Installera
[pdf]extra: Importera inteSaveFormat.Pdffunktionalitet utan att först installerapip install "aspose-note[pdf]". Utan ReportLab kommer sparning till PDF att ge ett importfel vid körning.