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-note

Fö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.FileFormat ger 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.LoadHistory flagga 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; exponerar DisplayName, CreationTime, FileFormat
  • Page: direkt barn till Document; exponerar Title, Author, CreationTime, LastModifiedTime, Level
  • Title: exponerar TitleText, TitleDate, TitleTime (alla RichText noder)
  • Outline: positionsbehållare med HorizontalOffset, VerticalOffset, MaxWidth, MaxHeight, MinWidth, ReservedWidth, IndentPosition
  • OutlineElement: lövbehållare; exponerar NumberList

Navigeringsmetoder på CompositeNode:

Metod / EgenskapBeskrivning
FirstChild, LastChildDirekt 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 nodeIterera 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äng
  • TextRuns: list[TextRun]: lista med formaterade segment
  • Tags: list[NoteTag]: OneNote-taggar kopplade till detta block
  • Append(text, style=None): lägg till en textsekvens i minnet
  • Replace(old_value, new_value): strängsubstitution i minnet

Varje TextRun bär:

EgenskapTypBeskrivning
TextstrSegmenttext
StyleTextStyleFormateringsmetadata

TextStyle egenskaper:

EgenskapTyp
IsBold, IsItalic, IsUnderline, IsStrikethroughbool
IsSuperscript, IsSubscriptbool
FontName`str
FontSize`float
FontColor, Highlight`int
Language`int
IsHyperlinkbool
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:

EgenskapTypBeskrivning
FileName`strNone`
BytesbytesRå bilddata
Width, Height`floatNone`
AlternativeTextTitle`strNone`
AlternativeTextDescription`strNone`
HyperlinkUrl`strNone`
Tagslist[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:

EgenskapTypBeskrivning
FileName`strNone`
BytesbytesRåfildata
Tagslist[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:

KlassNyckelegenskaper
TableColumns: list[TableColumn] (varje TableColumn har .Width och .LockedWidth), IsBordersVisible: bool, Tags: list[NoteTag]
TableRowIterera celler via GetChildNodes(TableCell)
TableCellInnehå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:

EgenskapTypBeskrivning
Icon`intNone`
Label`strNone`
FontColor`intNone`
Highlight`intNone`
CreationTime`datetimeNone`
CompletedTime`datetimeNone`

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:

EgenskapTypBeskrivning
Format`strNone`
Restart`intNone`
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

AlternativTypBeskrivning
PageIndexintFältet finns; inte vidarebefordras till PDF-exportören i v26.3.1 (har ingen effekt)
PageCount`intNone`
ImageCompression`AnyNone`
JpegQuality`intNone`
PageSettings`AnyNone`
PageSplittingAlgorithm`AnyNone`
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ärdeStatus
SaveFormat.PdfImplementerad (kräver ReportLab)

FileFormat

Document.FileFormat ger en bästa möjliga indikation av OneNote-filformatets version. Enum deklarerar tre värden:

VärdeBeskrivning
FileFormat.OneNote2010OneNote 2010-format
FileFormat.OneNoteOnlineOneNote Online-format
FileFormat.OneNote2007OneNote 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änsningDetalj
SkrivskyddadSkriver tillbaka till .one format är inte implementerat
Ingen krypteringKrypterade dokument ger IncorrectPasswordException
Endast PDF för exportAnnat SaveFormat värden ger UnsupportedSaveFormatException
ReportLab krävs för PDFInstallera pip install "aspose-note[pdf]" separat
GetPageHistory returnerar en lista med ett elementFull 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 vara None. Skydda alltid med if x is not None eller if x innan 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 node när du bara behöver omedelbara barn.
  • Hantera kodning på Windows: På Windows, sys.stdout kan använda en äldre kodsida. Lägg till sys.stdout.reconfigure(encoding="utf-8", errors="replace") vid start när du skriver ut Unicode-text.
  • Installera [pdf] extra: Importera inte SaveFormat.Pdf funktionalitet utan att först installera pip install "aspose-note[pdf]". Utan ReportLab kommer sparning till PDF att ge ett importfel vid körning.
 Svenska