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

Voor 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.FileFormat biedt 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.LoadHistory vlag 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; exposeert DisplayName, CreationTime, FileFormat
  • Page: direct kind van Document; exposeert Title, Author, CreationTime, LastModifiedTime, Level
  • Title: exposeert TitleText, TitleDate, TitleTime (alle RichText knooppunten)
  • Outline: positionele container met HorizontalOffset, VerticalOffset, MaxWidth, MaxHeight, MinWidth, ReservedWidth, IndentPosition
  • OutlineElement: bladcontainer; exposeert NumberList

Navigatiemethoden op CompositeNode:

Methode / EigenschapBeschrijving
FirstChild, LastChildDirecte 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 nodeItereer 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-tekststring
  • TextRuns: list[TextRun]: lijst van opgemaakte segmenten
  • Tags: list[NoteTag]: OneNote-tags gekoppeld aan dit blok
  • Append(text, style=None): een tekstrun in‑memory toevoegen
  • Replace(old_value, new_value): in‑memory tekenreeksvervanging

Elke TextRun bevat:

EigenschapTypeBeschrijving
TextstrSegmenttekst
StyleTextStyleOpmaakmetadata

TextStyle eigenschappen:

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

Afbeeldingsextractie

Image nodes geven ruwe bytes en metadata weer voor elke ingesloten afbeelding:

EigenschapTypeBeschrijving
FileName`strNone`
BytesbytesRuwe afbeeldingsgegevens
Width, Height`floatNone`
AlternativeTextTitle`strNone`
AlternativeTextDescription`strNone`
HyperlinkUrl`strNone`
Tagslist[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:

EigenschapTypeBeschrijving
FileName`strNone`
BytesbytesRuwe bestandsgegevens
Tagslist[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:

KlasseBelangrijke eigenschappen
TableColumns: list[TableColumn] (elk TableColumn heeft .Width en .LockedWidth), IsBordersVisible: bool, Tags: list[NoteTag]
TableRowDoorloop cellen via GetChildNodes(TableCell)
TableCellBevat 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:

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

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:

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

OptieTypeBeschrijving
PageIndexintVeld bestaat; niet doorgestuurd naar PDF-exporteur in v26.3.1 (heeft geen effect)
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()

Formaat‑ en Enum‑referentie

SaveFormat

WaardeStatus
SaveFormat.PdfGeïmplementeerd (vereist ReportLab)

FileFormat

Document.FileFormat biedt een best effort indicatie van de OneNote-bestandsformaatversie. De enum declareert drie waarden:

WaardeBeschrijving
FileFormat.OneNote2010OneNote 2010-formaat
FileFormat.OneNoteOnlineOneNote Online-formaat
FileFormat.OneNote2007OneNote 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

BeperkingDetail
Alleen-lezenTerugschrijven naar .one formaat is niet geïmplementeerd
Geen versleutelingVersleutelde documenten veroorzaken IncorrectPasswordException
PDF alleen voor exportOverig SaveFormat waarden veroorzaken UnsupportedSaveFormatException
ReportLab vereist voor PDFInstalleren pip install "aspose-note[pdf]" afzonderlijk
GetPageHistory retourneert een lijst met één elementVolledige 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 kunnen None. Bescherm altijd met if x is not None of if x voordat 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 node wanneer u alleen directe kinderen nodig heeft.
  • Codering op Windows afhandelen: Op Windows, sys.stdout kan een verouderde codepagina gebruiken. Voeg toe sys.stdout.reconfigure(encoding="utf-8", errors="replace") bij opstarten bij het afdrukken van Unicode-tekst.
  • Installeer [pdf] extra: Importeer niet SaveFormat.Pdf functionaliteit zonder eerst te installeren pip install "aspose-note[pdf]". Zonder ReportLab zal het opslaan naar PDF een importfout veroorzaken tijdens runtime.
 Nederlands