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

For 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.FileFormat gir 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.LoadHistory flagget 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; eksponerer DisplayName, CreationTime, FileFormat
  • Page: direkte barn av Document; eksponerer Title, Author, CreationTime, LastModifiedTime, Level
  • Title: eksponerer TitleText, TitleDate, TitleTime (alle RichText noder)
  • Outline: posisjonsbeholder med HorizontalOffset, VerticalOffset, MaxWidth, MaxHeight, MinWidth, ReservedWidth, IndentPosition
  • OutlineElement: bladbeholder; eksponerer NumberList

Navigasjonsmetoder på CompositeNode:

Metode / EgenskapBeskrivelse
FirstChild, LastChildDirekte 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 nodeIterer 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 tekststreng
  • TextRuns: list[TextRun]: liste over formaterte segmenter
  • Tags: list[NoteTag]: OneNote‑tagger knyttet til denne blokken
  • Append(text, style=None): legg til en tekstkjede i minnet
  • Replace(old_value, new_value): strengsubstitusjon i minnet

Hver TextRun bærer:

EgenskapTypeBeskrivelse
TextstrSegmenttekst
StyleTextStyleFormateringsmetadata

TextStyle egenskaper:

EgenskapType
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}")

Bildeuttrekking

Image noder eksponerer rå bytes og metadata for hvert innebygd bilde:

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

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

KlasseNøkkelegenskaper
TableColumns: list[TableColumn] (hver TableColumn har .Width og .LockedWidth), IsBordersVisible: bool, Tags: list[NoteTag]
TableRowIterer celler via GetChildNodes(TableCell)
TableCellInneholder 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:

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

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:

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

AlternativTypeBeskrivelse
PageIndexintFeltet finnes; ikke videresendt til PDF-eksportø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- og enum-referanse

SaveFormat

VerdiStatus
SaveFormat.PdfImplementert (krever ReportLab)

FileFormat

Document.FileFormat gir en best-innsats indikasjon på OneNote-filformatversjonen. Enum-en deklarerer tre verdier:

VerdiBeskrivelse
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


Nåværende begrensninger

BegrensningDetalj
SkrivebeskyttetSkriver tilbake til .one format er ikke implementert
Ingen krypteringKrypterte dokumenter gir IncorrectPasswordException
PDF kun for eksportAnnet SaveFormat verdier gir UnsupportedSaveFormatException
ReportLab kreves for PDFInstaller pip install "aspose-note[pdf]" separat
GetPageHistory returnerer enkelt-elementlisteFull 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ære None. Beskytt alltid med if x is not None eller if x fø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 node når du kun trenger umiddelbare barn.
  • Håndter koding på Windows: På Windows, sys.stdout kan bruke en eldre kodeside. Legg til sys.stdout.reconfigure(encoding="utf-8", errors="replace") ved oppstart når du skriver ut Unicode‑tekst.
  • Installer [pdf] ekstra: Ikke importer SaveFormat.Pdf funksjonalitet uten å først installere pip install "aspose-note[pdf]". Uten ReportLab vil lagring til PDF utløse en importfeil ved kjøring.
 Norsk