Funkciók áttekintése — Aspose.Note FOSS for Python

Aspose.Note FOSS for Python (package aspose-note, version 26.3.1) egy Python API-t a Microsoft OneNote olvasásához .one szekciófájlok és PDF-be exportálásához. Az alább felsorolt összes funkciót a tároló forráskódja, a README és a példascriptek alapján ellenőriztük.

Telepítés és beállítás

Telepítés a PyPI-ról:

pip install aspose-note

PDF export támogatásához (ReportLab szükséges):

pip install "aspose-note[pdf]"

Követelmények: Python 3.10 vagy újabb. Microsoft Office telepítése nem szükséges.


Funkciók és képességek

.one fájl betöltése

Töltsön be Microsoft OneNote szekciófájlokat egy fájlútvonalról vagy bármilyen bináris adatfolyamból (fájlkezelő, io.BytesIO,HTTP választest, felhő tároló adatfolyam).

  • Document.FileFormat legjobb erőfeszítéssel jelzi a OneNote fájlformátum verzióját (OneNote2010, OneNoteOnline vagy OneNote2007)
  • Az adatfolyam-alapú betöltés kiküszöböli a lemez I/O-t memória-alapú vagy hálózati munkafolyamatok esetén.
  • LoadOptions.LoadHistory kapcsoló szabályozza, hogy a lap előzményei szerepelnek-e a DOM-ban
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)

Dokumentum DOM bejárása

A teljes OneNote dokumentum egy típusos Python objektumokból álló fa formájában érhető el. Minden csomópont örökli a Node vagy CompositeNode:

  • Document: gyökér; kitetti DisplayName, CreationTime, FileFormat
  • Page: közvetlen gyermek Document; kitetti Title, Author, CreationTime, LastModifiedTime, Level
  • Title: kitetti TitleText, TitleDate, TitleTime (összes RichText csomópontok)
  • Outline: pozíciós tároló a HorizontalOffset, VerticalOffset, MaxWidth, MaxHeight, MinWidth, ReservedWidth, IndentPosition
  • OutlineElement: levél tároló; kitetti NumberList

Navigációs módszerek be CompositeNode:

Módszer / TulajdonságLeírás
FirstChild, LastChildKözvetlen gyermek hozzáférés
GetChildNodes(Type)Rekurzív, típus szűrt keresés
AppendChildLast(node)Gyermek hozzáadása a végén
AppendChildFirst(node)Gyermek hozzáadása az elején
InsertChild(index, node)Beszúrás pozícióba
RemoveChild(node)Gyermek eltávolítása
for child in nodeKözvetlen gyermekek iterálása
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 tartalom kinyerése

RichText csomópontok tartalmazzák:

  • Text: str: teljes egyszerű szöveg karakterlánc
  • TextRuns: list[TextRun]: formázott szegmensek listája
  • Tags: list[NoteTag]: ehhez a blokkhoz csatolt OneNote címkék
  • Append(text, style=None): szövegrészlet hozzáfűzése memóriában
  • Replace(old_value, new_value): memóriabeli karakterlánc helyettesítés

Minden TextRun tartalmaz:

TulajdonságTípusLeírás
TextstrSzegmens szöveg
StyleTextStyleFormázási metaadatok

TextStyle tulajdonságok:

TulajdonságTípus
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}")

Képkinyerés

Image a csomópontok nyers bájtokat és metaadatokat tesznek elérhetővé minden beágyazott képhez:

TulajdonságTípusLeírás
FileName`strNone`
BytesbytesNyers képadatok
Width, Height`floatNone`
AlternativeTextTitle`strNone`
AlternativeTextDescription`strNone`
HyperlinkUrl`strNone`
Tagslist[NoteTag]Csatolt OneNote címkék
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)")

Csatolt fájl kinyerése

AttachedFile a csomópontok beágyazott fájlcsatolmányokat tesznek elérhetővé:

TulajdonságTípusLeírás
FileName`strNone`
BytesbytesNyers fájladatok
Tagslist[NoteTag]Csatolt OneNote címkék
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)

Táblázatfeldolgozás

Table, TableRow, és TableCell mutassa a teljes táblázat szerkezetét:

OsztályKulcsfontosságú tulajdonságok
TableColumns: list[TableColumn] (mindegyik TableColumn van .Width és .LockedWidth), IsBordersVisible: bool, Tags: list[NoteTag]
TableRowIteráljon a cellákon a GetChildNodes(TableCell)
TableCellTartalmaz RichText, Image, és egyéb tartalomcsomópontok
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 címke vizsgálata

NoteTag megjelenik a RichText, Image, AttachedFile, és Table csomópontok a saját .Tags tulajdonságuk. OutlineElement nem rendelkezik egy .Tags tulajdonsággal. NoteTag tulajdonságok:

TulajdonságTípusLeírás
Icon`intNone`
Label`strNone`
FontColor`intNone`
Highlight`intNone`
CreationTime`datetimeNone`
CompletedTime`datetimeNone`

Gyári metódus: NoteTag.CreateYellowStar() létrehoz egy szabványos sárga csillag címke‑csomópontot.

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

Számozott lista támogatás

OutlineElement.NumberList kitetti:

TulajdonságTípusLeírás
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 bejárás

DocumentVisitor biztosít egy látogató mintát a strukturált teljes dokumentum bejárásához. Felülírhatja bármely VisitXxxStart / VisitXxxEnd metódust a specifikus csomóponttípusok elfogásához:

  • 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

Mentse el a betöltött dokumentumot PDF-be a Document.Save(). Támogatott az opcionális ReportLab háttérprogramon keresztül.

from aspose.note import Document, SaveFormat

doc = Document("notebook.one")
doc.Save("output.pdf", SaveFormat.Pdf)

PdfSaveOptions

OpcióTípusLeírás
PageIndexintA mező létezik; nem továbbítva a PDF exportálóhoz a v26.3.1 verzióban (nincs hatása)
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()

Formátum és enum hivatkozás

SaveFormat

ÉrtékÁllapot
SaveFormat.PdfMegvalósítva (ReportLab szükséges)

FileFormat

Document.FileFormat legjobb erőfeszítéssel ad tájékoztatást a OneNote fájlformátum verziójáról. Az enum három értéket deklarál:

ÉrtékLeírás
FileFormat.OneNote2010OneNote 2010 formátum
FileFormat.OneNoteOnlineOneNote Online formátum
FileFormat.OneNote2007OneNote 2007 formátum

NodeType

NodeType.Document, NodeType.Page, NodeType.Outline, NodeType.OutlineElement, NodeType.RichText, NodeType.Image, NodeType.Table, NodeType.AttachedFile

HorizontalAlignment

HorizontalAlignment.Left, HorizontalAlignment.Center, HorizontalAlignment.Right


Jelenlegi korlátozások

KorlátozásRészlet
Csak olvashatóVisszaírás ide .one formátum nincs megvalósítva
Nincs titkosításTitkosított dokumentumok hibát okoznak IncorrectPasswordException
PDF csak exportáláshozEgyéb SaveFormat értékek hibát okoznak UnsupportedSaveFormatException
PDF-hez ReportLab szükségesTelepítés pip install "aspose-note[pdf]" külön
GetPageHistory egyelemű listát ad visszaA teljes oldal történet bejárása csak helykitöltő; visszaadja [page]
DetectLayoutChanges()Kompatibilitási helykitöltő; nincs művelet

Tippek és bevált gyakorlatok

  • Ellenőrizze, hogy None: Page.Title, Title.TitleText, OutlineElement.NumberList, és a legtöbb metaadatmező lehet None. Mindig ellenőrizze if x is not None vagy if x a tulajdonságok elérése előtt.
  • Használja GetChildNodes(Type) rekurzív kereséshez ahelyett, hogy manuálisan iterálná a fát. Az egész alfa keresését végzi.
  • Iterálja a közvetlen gyermekeket val for child in node ha csak közvetlen gyermekekre van szükség.
  • Kezelje a kódolást Windows rendszeren: Windows rendszeren, sys.stdout használhat egy régi kódlapot. Adjon hozzá sys.stdout.reconfigure(encoding="utf-8", errors="replace") indításkor Unicode szöveg nyomtatásakor.
  • Telepítse [pdf] extra: Ne importálja SaveFormat.Pdf funkcionalitást anélkül, hogy előbb telepítené pip install "aspose-note[pdf]". A ReportLab nélkül a PDF-be mentés futásidőben importálási hibát fog okozni.
 Magyar