Přehled funkcí Aspose.Note FOSS pro Python

Aspose.Note FOSS for Python (package aspose-note, verze 26.3.2) poskytuje Python API pro čtení Microsoft OneNote . .one Všechny níže uvedené funkce jsou ověřeny oproti zdrojovému kódu úložiště, README a příkladovým skriptům.

Instalace a nastavení

Instalace z PyPI:

pip install aspose-note

Pro podporu vývozu PDF (vyžaduje ReportLab):

pip install aspose-note

Požadavky: Python 3.10 nebo novější. Není nutná instalace Microsoft Office.


Charakteristika a schopnosti

. jeden soubor se načítá

Naložit soubory Microsoft OneNote z cesty nebo jakéhokoli binárního proudu (obchod s souborem, io.BytesIO, HTTP odpověď tělo, cloudové ukládání proudu).

  • Document.FileFormat poskytuje nejlepší návod na verzi formátu souboru OneNote (OneNo te 2010, One No te Online nebo One Note 2007),
  • Obtěžování na základě proudu eliminuje vstupy/výstupy disků pro pracovní toky v paměti nebo sítě.
  • LoadOptions.LoadHistory kontrolní značka, zda je historie stránek zahrnuta do 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)

Procházení dokumentu DOM

Celý dokument OneNote je vystaven jako strom typovaných objektů Python. Každý uzel zdědí z Node nebo: CompositeNode:

  • Document: kořeny; odhalí DisplayName, CreationTime, FileFormat
  • Page: přímý syn: Document; odhalí Title, Author, CreationTime, LastModifiedTime, Level
  • Title: odhalí TitleText, TitleDate, TitleTime (všechny) RichText uzly)
  • Outline: poziční kontejner s: HorizontalOffset, VerticalOffset, MaxWidth, MaxHeight, MinWidth, ReservedWidth, IndentPosition
  • OutlineElement: obal s listy; exponáty NumberList

Navigační metody na: CompositeNode:

Metodika / vlastnostPopis:
FirstChild, LastChildPřímý přístup dětí
GetChildNodes(Type)Rekurzivní vyhledávání s filtrováním podle typu
AppendChildLast(node)Přidat dítě na konec .
AppendChildFirst(node)Přidat dítě na začátku .
InsertChild(index, node)Vkládání v poloze
RemoveChild(node)Odveďte dítě.
for child in nodeIterované přímé děti
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}")

Výběr obsahu bohatého textu

RichText uzly odhalí:

  • Text: str: plný textový řetěz
  • TextRuns: list[TextRun]: seznam formátovaných segmentů
  • Tags: list[NoteTag]: K tomuto bloku připojené značky OneNote
  • Append(text, style=None): přidat text spouštěný v paměti
  • Replace(old_value, new_value): nahrazení řetězců v paměti

Každá. TextRun obsahuje:

VlastnictvíTyp:Popis:
TextstrText segmentu
StyleTextStyleFormátování metadaten

TextStyle vlastnosti:

VlastnictvíTyp:
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}")

Výběr obrázků

Image uzly odhalí surové bajty a metadata pro každý vložený obrázek:

VlastnictvíTyp:Popis:
FileName`strNone`
BytesbytesPrůměrné údaje o obraze
Width, Height`floatNone`
AlternativeTextTitle`strNone`
AlternativeTextDescription`strNone`
HyperlinkUrl`strNone`
Tagslist[NoteTag]Přiložené značky OneNote
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)")

Vytvoření souborů připojených k aplikaci

AttachedFile uzly odhalí vložené soubory:

VlastnictvíTyp:Popis:
FileName`strNone`
BytesbytesPrvní souborová data
Tagslist[NoteTag]Přiložené značky OneNote
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)

Parsing tabulky

Table, TableRow,a) TableCell odhalí celou strukturu tabulky:

TřídaKlíčové vlastnosti
TableColumns: list[TableColumn] (každý z nich) TableColumn má: .Width a) .LockedWidth), IsBordersVisible: bool, Tags: list[NoteTag]
TableRowIterované buňky prostřednictvím: GetChildNodes(TableCell)
TableCellObsahuje: RichText, Image, a další obsahové uzly
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)

Inspekce značky OneNote

NoteTag Zobrazuje se na: RichText, Image, AttachedFile,a) Table Vstupní linky .Tags majetek. OutlineElement nemá .Tags majetek. NoteTag vlastnosti:

VlastnictvíTyp:Popis:
Icon`intNone`
Label`strNone`
FontColor`intNone`
Highlight`intNone`
CreationTime`datetimeNone`
CompletedTime`datetimeNone`

Zpracovatelská metoda: NoteTag.CreateYellowStar() Vytváří standardní žlutou hvězdovou značku.

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

Podpora čísleného seznamu

OutlineElement.NumberList odhaluje:

VlastnictvíTyp:Popis:
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}")

DokumentVizitérský průjezd

DocumentVisitor poskytuje vzor návštěvníka pro strukturované průcházky celého dokumentu. Přehlíží jakékoli VisitXxxStart / VisitXxxEnd metoda pro zachycení specifických typů uzlů:

  • 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 exportování

Uložte načtený dokument do PDF pomocí Document.Save().Podporováno prostřednictvím volitelného backendu ReportLab.

from aspose.note import Document, SaveFormat

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

PdfSaveOptions

Možnost:Typ:Popis:
PageIndexintIndex první stránky, která má být exportována (podstatné: 0, první stránka) na základě nuly
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át a odkaz na Enum

SaveFormat

HodnotaStatutní stav
SaveFormat.PdfImplementováno (vyžaduje ReportLab)

FileFormat

Document.FileFormat poskytuje nejlepší indikátor verze formátu souboru OneNote. Enum deklaruje tři hodnoty:

HodnotaPopis:
FileFormat.OneNote2010Formát OneNote 2010
FileFormat.OneNoteOnlineFormát OneNote Online
FileFormat.OneNote2007Formát OneNote 2007

NodeType

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

HorizontalAlignment

HorizontalAlignment.Left, HorizontalAlignment.Center, HorizontalAlignment.Right


Současná omezení

OmezeníPodrobnosti
Pouze pro čteníPíšu zpět na: .one formát není implementován
Žádné šifrování.Zde jsou zakódované dokumenty. IncorrectPasswordException
PDF pouze pro vývozOstatní SaveFormat hodnoty zvyšují UnsupportedSaveFormatException
ReportLab je nutný pro PDFInstalace pip install "aspose-note[pdf]" samostatně
GetPageHistory vrací seznam s jedním prvkemCelá stránka historiky je stub; vrací [page]
DetectLayoutChanges()Základní stub kompatibility; žádná operace

Tipy a nejlepší postupy

  • Zkontrolujte žádnou .: Page.Title, Title.TitleText, OutlineElement.NumberList, a většina polí metadát může být None.Vždycky se hlídej s … if x is not None nebo: if x před vstupem do nemovitostí.
  • Použití: GetChildNodes(Type) Pro rekurzivní vyhledávání spíše než manuální iterování stromu. Hledá celý podstrom.
  • Iterované přímé děti s: for child in node když potřebuješ jen okamžité děti.
  • Ovládání kódování ve Windows:Na Windows:, sys.stdout může použít starší stránku s kódem. Přidáte sys.stdout.reconfigure(encoding="utf-8", errors="replace") při spuštění, když tisknete text Unicode.
  • Instalace [pdf] další:Export PDF vyžaduje ReportLab. Run pip install "aspose-note[pdf]" před použitím: SaveFormat.Pdf.Bez ReportLab, ukládání na PDF zvyšuje hodnotu. ImportError v době spuštění.
 Čeština