Ominaisuuksien yleiskatsaus — Aspose.Note FOSS for Python

Aspose.Note FOSS for Python (package aspose-note, version 26.3.1) tarjoaa Python API:n Microsoft OneNote -osatiedostojen lukemiseen .one osatiedostot ja niiden vieminen PDF-muotoon. Kaikki alla luetellut ominaisuudet on tarkistettu versionhallinnan lähdekoodin, README:n ja esimerkkiskriptien perusteella.

Asennus ja käyttöönotto

Asenna PyPI:stä:

pip install aspose-note

PDF-viennin tukea varten (vaatii ReportLabin):

pip install "aspose-note[pdf]"

Vaatimukset: Python 3.10 tai uudempi. Microsoft Office -asennusta ei tarvita.


Ominaisuudet ja kyvyt

.one-tiedoston lataus

Lataa Microsoft OneNote -osatiedostot tiedostopolusta tai mistä tahansa binäärivirrosta (tiedostokahva, io.BytesIO, HTTP-vastausrunko, pilvitallennusvirta).

  • Document.FileFormat antaa parhaan mahdollisen arvion OneNote-tiedostomuodon versiosta (OneNote2010, OneNoteOnline tai OneNote2007)
  • Virta-pohjainen lataus poistaa levy‑I/O:n muistissa tai verkossa tapahtuvissa työnkuluissa.
  • LoadOptions.LoadHistory lippu määrittää, sisällytetäänkö sivuhistoria DOM:iin
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)

Dokumentin DOM‑kierros

Koko OneNote-dokumentti esitetään puuna tyypitetyistä Python-objekteista. Jokainen solmu perii Node tai CompositeNode:

  • Document: juuri; paljastaa DisplayName, CreationTime, FileFormat
  • Page: suora lapsi Document; paljastaa Title, Author, CreationTime, LastModifiedTime, Level
  • Title: paljastaa TitleText, TitleDate, TitleTime (kaikki RichText solmut)
  • Outline: paikallinen säiliö, jossa on HorizontalOffset, VerticalOffset, MaxWidth, MaxHeight, MinWidth, ReservedWidth, IndentPosition
  • OutlineElement: lehtisäiliö; paljastaa NumberList

Navigointimenetelmät päällä CompositeNode:

Metodi / OminaisuusKuvaus
FirstChild, LastChildSuora lapsisolmun käyttö
GetChildNodes(Type)Rekursiivinen, tyyppisuodattu haku
AppendChildLast(node)Lisää lapsi loppuun
AppendChildFirst(node)Lisää lapsi alkuun
InsertChild(index, node)Lisää kohtaan
RemoveChild(node)Poista lapsi
for child in nodeIteroi suorat lapset
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}")

Rikastekstisisällön poiminta

RichText solmut paljastavat:

  • Text: str: täysi tavallinen tekstimerkkijono
  • TextRuns: list[TextRun]: luettelo muotoilluista segmenteistä
  • Tags: list[NoteTag]: OneNote-tunnisteet liitettynä tähän lohkoon
  • Append(text, style=None): lisää tekstirunko muistiin
  • Replace(old_value, new_value): muistissa tapahtuva merkkijonojen korvaus

Jokainen TextRun sisältää:

OminaisuusTyyppiKuvaus
TextstrSegmentin teksti
StyleTextStyleMuotoilun metadata

TextStyle ominaisuudet:

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

Kuvien poiminta

Image solmut paljastavat raakabittejä ja metatietoja jokaiselle upotetulle kuvalle:

OminaisuusTyyppiKuvaus
FileName`strNone`
BytesbytesRaakakuva-aineisto
Width, Height`floatNone`
AlternativeTextTitle`strNone`
AlternativeTextDescription`strNone`
HyperlinkUrl`strNone`
Tagslist[NoteTag]Liitetyt OneNote-tunnisteet
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)")

Liitetiedostojen poiminta

AttachedFile solmut paljastavat upotetut tiedostoliitteet:

OminaisuusTyyppiKuvaus
FileName`strNone`
BytesbytesRaakadatan tiedot
Tagslist[NoteTag]Liitetyt OneNote-tunnisteet
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)

Taulukon jäsentäminen

Table, TableRow, ja TableCell näytä koko taulun rakenne:

LuokkaAvainominaisuudet
TableColumns: list[TableColumn] (jokainen TableColumn on .Width ja .LockedWidth), IsBordersVisible: bool, Tags: list[NoteTag]
TableRowKäy solut läpi käyttäen GetChildNodes(TableCell)
TableCellSisältää RichText, Image, ja muita sisältösolmuja
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-tunnisteiden tarkastelu

NoteTag ilmestyy RichText, Image, AttachedFile, ja Table solmut niiden .Tags ominaisuuden. OutlineElement ei sisällä .Tags ominaisuutta. NoteTag ominaisuudet:

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

Tehdasmetodi: NoteTag.CreateYellowStar() luo vakioisen keltaisen tähden tunnistesolmun.

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

Numeroidun listan tuki

OutlineElement.NumberList paljastaa:

OminaisuusTyyppiKuvaus
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 -kulku

DocumentVisitor tarjoaa vierailijamallin rakenteelliseen koko-dokumentin läpikäyntiin. Ylikirjoita mikä tahansa VisitXxxStart / VisitXxxEnd metodi sieppaamaan tietyt solmutyypit:

  • 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‑vienti

Tallenna ladattu asiakirja PDF-muotoon käyttäen Document.Save(). Tuettu valinnaisen ReportLab-taustajärjestelmän kautta.

from aspose.note import Document, SaveFormat

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

PdfSaveOptions

VaihtoehtoTyyppiKuvaus
PageIndexintKenttä on olemassa; ei välitetä PDF-vientiin versiossa v26.3.1 (ei vaikuta)
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()

Muoto- ja enum-viite

SaveFormat

ArvoTila
SaveFormat.PdfToteutettu (vaatii ReportLabin)

FileFormat

Document.FileFormat antaa parhaan mahdollisen arvion OneNote-tiedostomuodon versiosta. Enum määrittelee kolme arvoa:

ArvoKuvaus
FileFormat.OneNote2010OneNote 2010 -formaatti
FileFormat.OneNoteOnlineOneNote Online -formaatti
FileFormat.OneNote2007OneNote 2007 -formaatti

NodeType

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

HorizontalAlignment

HorizontalAlignment.Left, HorizontalAlignment.Center, HorizontalAlignment.Right


Nykyiset rajoitukset

RajoitusYksityiskohta
Vain lukuKirjoitetaan takaisin kohteeseen .one formaattia ei ole toteutettu
Ei salaustaSalatut asiakirjat aiheuttavat IncorrectPasswordException
PDF vain vientiinMuu SaveFormat arvot aiheuttavat UnsupportedSaveFormatException
ReportLab vaaditaan PDF:lleAsenna pip install "aspose-note[pdf]" erikseen
GetPageHistory palauttaa yhden alkion listanKoko sivun historian läpikäynti on testirutiini; palauttaa [page]
DetectLayoutChanges()Yhteensopivuustesti; ei toimintaa

Vinkkejä ja parhaita käytäntöjä

  • Tarkista, onko None: Page.Title, Title.TitleText, OutlineElement.NumberList, ja useimmat metatietokentät voivat olla None. Suojaa aina if x is not None tai if x ennen ominaisuuksien käyttöä.
  • Käytä GetChildNodes(Type) rekursiiviseen hakuun sen sijaan, että iteroitaisiin puuta manuaalisesti. Se hakee koko alipuusta.
  • Iteroi suorat alisolmut kanssa for child in node kun tarvitset vain välittömät alisolmut.
  • Käsittele merkistökoodausta Windowsissa: Windowsissa, sys.stdout voi käyttää vanhaa koodisivua. Lisää sys.stdout.reconfigure(encoding="utf-8", errors="replace") käynnistyksen yhteydessä, kun tulostetaan Unicode-tekstiä.
  • Asenna [pdf] lisä: Älä tuo SaveFormat.Pdf toiminnallisuutta ilman, että ensin asennat pip install "aspose-note[pdf]". Ilman ReportLabia PDF-tiedostoon tallentaminen aiheuttaa import-virheen suoritusaikana.
 Suomi