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

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

Navigationsmetoder på CompositeNode:

Metode / EgenskabBeskrivelse
FirstChild, LastChildDirekte 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 nodeIterer 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 tekststreng
  • TextRuns: list[TextRun]: liste over formaterede segmenter
  • Tags: list[NoteTag]: OneNote-tags knyttet til denne blok
  • Append(text, style=None): tilføj en tekstkørsel i hukommelsen
  • Replace(old_value, new_value): strengsubstitution i hukommelsen

Hver TextRun bærer:

EgenskabTypeBeskrivelse
TextstrSegmenttekst
StyleTextStyleFormateringsmetadata

TextStyle egenskaber:

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

Billedudtrækning

Image noder eksponerer rå bytes og metadata for hvert indlejret billede:

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

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

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

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

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:

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

IndstillingTypeBeskrivelse
PageIndexintFelt findes; 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 enumreference

SaveFormat

VærdiStatus
SaveFormat.PdfImplementeret (kræver ReportLab)

FileFormat

Document.FileFormat giver en bedst muligt indikation af OneNote-filformatets version. Enum’en erklærer tre værdier:

VærdiBeskrivelse
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


Aktuelle begrænsninger

BegrænsningDetalje
SkrivebeskyttetSkriver tilbage til .one format er ikke implementeret
Ingen krypteringKrypterede dokumenter udløser IncorrectPasswordException
Kun PDF til eksportAndre SaveFormat værdier udløser UnsupportedSaveFormatException
ReportLab påkrævet for PDFInstaller pip install "aspose-note[pdf]" separat
GetPageHistory returnerer enkelt-element listeFuld 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ære None. Beskyt altid med if x is not None eller if x fø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 node når du kun har brug for umiddelbare børn.
  • Håndter kodning på Windows: På Windows, sys.stdout kan bruge en ældre kodeside. Tilføj sys.stdout.reconfigure(encoding="utf-8", errors="replace") ved opstart, når du udskriver Unicode-tekst.
  • Installer [pdf] ekstra: Importer ikke SaveFormat.Pdf funktionalitet uden først at installere pip install "aspose-note[pdf]". Uden ReportLab vil gemning til PDF udløse en importfejl ved kørsel.
 Dansk