Funktionsoverblik — Aspose.Note FOSS for Python
Aspose.Note FOSS for Python (package aspose-note, version 26.3.1) leverer et Python API til at læse Microsoft OneNote .one sektionfiler og eksportere dem til PDF. Alle funktioner nedenfor er verificeret mod repository‑kildekoden, README og eksempelscripts.
Installation og opsætning
Installer fra PyPI:
pip install aspose-noteFor PDF-eksportunderstøttelse (kræver ReportLab):
pip install "aspose-note[pdf]"Krav: Python 3.10 eller nyere. Ingen Microsoft Office-installation påkrævet.
Funktioner og muligheder
.one-filindlæsning
Indlæs Microsoft OneNote sektionfiler fra en filsti eller enhver binær strøm (filhåndtag, io.BytesIO, HTTP‑responskrop, cloud‑lagringsstrøm).
Document.FileFormatleverer en bedst‑mulige indikation af OneNote‑filformatets version (OneNote2010, OneNoteOnline eller OneNote2007)- Strøm-baseret indlæsning eliminerer disk-I/O for in-memory eller netværksarbejdsgange
LoadOptions.LoadHistoryflaget styrer, om sidehistorik 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)Gennemløb af dokument-DOM
Det fulde OneNote-dokument eksponeres som et træ af typede Python‑objekter. Hver node arver fra Node eller CompositeNode:
Document: rod; eksponererDisplayName,CreationTime,FileFormatPage: direkte barn afDocument; eksponererTitle,Author,CreationTime,LastModifiedTime,LevelTitle: eksponererTitleText,TitleDate,TitleTime(alleRichTextnoder)Outline: positionsbeholder medHorizontalOffset,VerticalOffset,MaxWidth,MaxHeight,MinWidth,ReservedWidth,IndentPositionOutlineElement: bladbeholder; eksponererNumberList
Navigationsmetoder på CompositeNode:
| Metode / Egenskab | Beskrivelse |
|---|---|
FirstChild, LastChild | Direkte børneadgang |
GetChildNodes(Type) | Rekursiv, typefiltreret søgning |
AppendChildLast(node) | Tilføj barn i slutningen |
AppendChildFirst(node) | Tilføj barn i starten |
InsertChild(index, node) | Indsæt på position |
RemoveChild(node) | Fjern et barn |
for child in node | Iterer direkte børn |
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}")Udtrækning af Rich Text-indhold
RichText noder eksponerer:
Text: str: fuld ren tekststrengTextRuns: list[TextRun]: liste over formaterede segmenterTags: list[NoteTag]: OneNote-tags knyttet til denne blokAppend(text, style=None): tilføj en tekstkørsel i hukommelsenReplace(old_value, new_value): strengsubstitution i hukommelsen
Hver TextRun bærer:
| Egenskab | Type | Beskrivelse |
|---|---|---|
Text | str | Segmenttekst |
Style | TextStyle | Formateringsmetadata |
TextStyle egenskaber:
| Egenskab | 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}")Billedudtrækning
Image noder eksponerer rå bytes og metadata for hvert indlejret billede:
| Egenskab | Type | Beskrivelse |
|---|---|---|
FileName | `str | None` |
Bytes | bytes | Rå billeddata |
Width, Height | `float | None` |
AlternativeTextTitle | `str | None` |
AlternativeTextDescription | `str | None` |
HyperlinkUrl | `str | None` |
Tags | list[NoteTag] | Vedhæftede 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)")Udtrækning af vedhæftede filer
AttachedFile noder eksponerer indlejrede filvedhæftninger:
| Egenskab | Type | Beskrivelse |
|---|---|---|
FileName | `str | None` |
Bytes | bytes | Rå fildata |
Tags | list[NoteTag] | Vedhæftede 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, og TableCell eksponér den fulde tabelstruktur:
| Klasse | Nøgleegenskaber |
|---|---|
Table | Columns: list[TableColumn] (hver TableColumn har .Width og .LockedWidth), IsBordersVisible: bool, Tags: list[NoteTag] |
TableRow | Iterér celler via GetChildNodes(TableCell) |
TableCell | Indeholder RichText, Image, og andre indholdsnoder |
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-taginspektion
NoteTag vises på RichText, Image, AttachedFile, og Table noder via deres .Tags egenskab. OutlineElement har ikke en .Tags egenskab. NoteTag egenskaber:
| Egenskab | Type | Beskrivelse |
|---|---|---|
Icon | `int | None` |
Label | `str | None` |
FontColor | `int | None` |
Highlight | `int | None` |
CreationTime | `datetime | None` |
CompletedTime | `datetime | None` |
Fabriksmetode: NoteTag.CreateYellowStar() opretter en standard gul-stjerne tagnode.
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})")Understøttelse af nummererede lister
OutlineElement.NumberList eksponerer:
| Egenskab | 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-gennemløb
DocumentVisitor giver et besøgs-mønster for struktureret fuld-dokument-gennemløb. Overskriv enhver VisitXxxStart / VisitXxxEnd metode for at afbryde specifikke 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
Gem et indlæst dokument som PDF ved hjælp af Document.Save(). Understøttes via den valgfrie ReportLab-backend.
from aspose.note import Document, SaveFormat
doc = Document("notebook.one")
doc.Save("output.pdf", SaveFormat.Pdf)PdfSaveOptions
| Indstilling | Type | Beskrivelse |
|---|---|---|
PageIndex | int | Felt findes; 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 enumreference
SaveFormat
| Værdi | Status |
|---|---|
SaveFormat.Pdf | Implementeret (kræver ReportLab) |
FileFormat
Document.FileFormat giver en bedst muligt indikation af OneNote-filformatets version. Enum’en erklærer tre værdier:
| Værdi | 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
Aktuelle begrænsninger
| Begrænsning | Detalje |
|---|---|
| Skrivebeskyttet | Skriver tilbage til .one format er ikke implementeret |
| Ingen kryptering | Krypterede dokumenter udløser IncorrectPasswordException |
| Kun PDF til eksport | Andre SaveFormat værdier udløser UnsupportedSaveFormatException |
| ReportLab påkrævet for PDF | Installer pip install "aspose-note[pdf]" separat |
GetPageHistory returnerer enkelt-element liste | Fuld sidehistorik gennemløb er en stub; returnerer [page] |
DetectLayoutChanges() | Kompatibilitetsstub; ingen handling |
Tips og bedste praksis
- Tjek for None:
Page.Title,Title.TitleText,OutlineElement.NumberList, og de fleste metadatafelter kan væreNone. Beskyt altid medif x is not Noneellerif xfør du får adgang til egenskaberne. - Brug
GetChildNodes(Type)til rekursiv søgning i stedet for manuelt at iterere træet. Den søger i hele undertræet. - Iterer direkte underordnede med
for child in nodenår du kun har brug for umiddelbare børn. - Håndter kodning på Windows: På Windows,
sys.stdoutkan bruge en ældre kodeside. Tilføjsys.stdout.reconfigure(encoding="utf-8", errors="replace")ved opstart, når du udskriver Unicode-tekst. - Installer
[pdf]ekstra: Importer ikkeSaveFormat.Pdffunktionalitet uden først at installerepip install "aspose-note[pdf]". Uden ReportLab vil gemning til PDF udløse en importfejl ved kørsel.