Přehled funkcí — Aspose.Note FOSS pro Python

Aspose.Note FOSS for Python (package aspose-note, verze 26.3.1) poskytuje Python API pro čtení Microsoft OneNote .one souborů sekcí a jejich exportu do PDF. Všechny níže uvedené funkce jsou ověřeny proti zdrojovému kódu repozitáře, README a ukázkovým skriptům.

Instalace a nastavení

Instalace z PyPI:

pip install aspose-note

Pro podporu exportu do PDF (vyžaduje ReportLab):

pip install "aspose-note[pdf]"

Požadavky: Python 3.10 nebo novější. Instalace Microsoft Office není vyžadována.


Funkce a možnosti

.Načítání souborů .one

Načtěte soubory sekcí Microsoft OneNote z cesty k souboru nebo libovolného binárního proudu (souborový handle, io.BytesIO, tělo HTTP odpovědi, proud cloudového úložiště).

  • Document.FileFormat poskytuje odhad verze formátu souboru OneNote (OneNote2010, OneNoteOnline nebo OneNote2007)
  • Načítání založené na proudu eliminuje diskové I/O pro workflow v paměti nebo síťové.
  • LoadOptions.LoadHistory příznak určuje, zda je historie stránky 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í DOM dokumentu

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

  • Document: kořen; vystavuje DisplayName, CreationTime, FileFormat
  • Page: přímý potomek Document; vystavuje Title, Author, CreationTime, LastModifiedTime, Level
  • Title: vystavuje TitleText, TitleDate, TitleTime (všechny RichText uzly)
  • Outline: poziční kontejner s HorizontalOffset, VerticalOffset, MaxWidth, MaxHeight, MinWidth, ReservedWidth, IndentPosition
  • OutlineElement: listový kontejner; vystavuje NumberList

Navigační metody na CompositeNode:

Metoda / VlastnostPopis
FirstChild, LastChildPřímý přístup k podřízenému
GetChildNodes(Type)Rekurzivní, typově filtrované vyhledávání
AppendChildLast(node)Přidat podřízený na konec
AppendChildFirst(node)Přidat podřízený na začátek
InsertChild(index, node)Vložit na pozici
RemoveChild(node)Odstranit podřízený
for child in nodeIterovat přímé podřízené
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}")

Extrahování obsahu Rich Text

RichText uzly vystavují:

  • Text: str: úplný prostý textový řetězec
  • TextRuns: list[TextRun]: seznam formátovaných segmentů
  • Tags: list[NoteTag]: štítky OneNote připojené k tomuto bloku
  • Append(text, style=None): přidat textový úsek v paměti
  • Replace(old_value, new_value): nahrazení řetězce v paměti

Každý TextRun nese:

VlastnostTypPopis
TextstrText segmentu
StyleTextStyleMetadata formátování

TextStyle vlastnosti:

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

Extrahování obrázků

Image uzly vystavují surová data a metadata pro každý vložený obrázek:

VlastnostTypPopis
FileName`strNone`
BytesbytesSurová data obrázku
Width, Height`floatNone`
AlternativeTextTitle`strNone`
AlternativeTextDescription`strNone`
HyperlinkUrl`strNone`
Tagslist[NoteTag]Připojené 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)")

Extrahování připojených souborů

AttachedFile uzly vystavují vložené souborové přílohy:

VlastnostTypPopis
FileName`strNone`
BytesbytesSurová data souboru
Tagslist[NoteTag]Připojené 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)

Zpracování tabulky

Table, TableRow, a TableCell zobrazí úplnou strukturu tabulky:

TřídaKlíčové vlastnosti
TableColumns: list[TableColumn] (každý TableColumn.Width a .LockedWidth), IsBordersVisible: bool, Tags: list[NoteTag]
TableRowProcházejte buňky pomocí GetChildNodes(TableCell)
TableCellObsahuje RichText, Image, a další uzly obsahu
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 OneNote značek

NoteTag se objevuje na RichText, Image, AttachedFile, a Table uzly přes jejich .Tags vlastnost. OutlineElement nemá .Tags vlastnost. NoteTag vlastnosti:

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

Tovární metoda: NoteTag.CreateYellowStar() vytvoří standardní uzel štítku se žlutou hvězdou.

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 číslovaných seznamů

OutlineElement.NumberList zveřejňuje:

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

Procházení DocumentVisitor

DocumentVisitor poskytuje vzor návštěvníka pro strukturované procházení celého dokumentu. Přepište libovolnou VisitXxxStart / VisitXxxEnd metodu pro zachycení konkrétní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}")

Export PDF

Uložit 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žnostTypPopis
PageIndexintPole existuje; nepředáváno PDF exportéru ve verzi v26.3.1 (nemá žádný vliv)
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()

Reference formátů a výčtů

SaveFormat

HodnotaStav
SaveFormat.PdfImplementováno (vyžaduje ReportLab)

FileFormat

Document.FileFormat poskytuje nejlepší možný odhad verze formátu souboru OneNote. Výčtový typ 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


Aktuální omezení

OmezeníDetail
Pouze pro čteníZápis zpět do .one formát není implementován
Žádné šifrováníŠifrované dokumenty vyvolávají IncorrectPasswordException
PDF pouze pro exportJiné SaveFormat hodnoty vyvolávají UnsupportedSaveFormatException
ReportLab vyžadován pro PDFInstalovat pip install "aspose-note[pdf]" samostatně
GetPageHistory vrací jednoprvkový seznamProcházení celé historie stránek je zástupný kód; vrací [page]
DetectLayoutChanges()Kompatibilní zástupný kód; žádná operace

Tipy a osvědčené postupy

  • Zkontrolujte, zda je None: Page.Title, Title.TitleText, OutlineElement.NumberList, a většina polí metadat může být None. Vždy chraňte pomocí if x is not None nebo if x před přístupem k vlastnostem.
  • Použijte GetChildNodes(Type) pro rekurzivní vyhledávání místo ručního procházení stromu. Prohledává celý podstrom.
  • Procházejte přímé potomky s for child in node když potřebujete jen okamžité potomky.
  • Zpracujte kódování ve Windows: Ve Windows, sys.stdout může používat starší kódovou stránku. Přidejte sys.stdout.reconfigure(encoding="utf-8", errors="replace") při spuštění při tisku Unicode textu.
  • Nainstalujte [pdf] další: Neimportujte SaveFormat.Pdf funkčnost bez předchozí instalace pip install "aspose-note[pdf]". Bez ReportLab bude ukládání do PDF během běhu vyvolá chybu importu.
 Čeština