Īpašību pārskats — Aspose.Note FOSS priekš Python

Aspose.Note FOSS for Python (package aspose-note, versija 26.3.1) nodrošina Python API Microsoft OneNote lasīšanai .one sadaļas failus un to eksportēšanu uz PDF. Visas zemāk uzskaitītās funkcijas ir pārbaudītas pret krātuves pirmkodu, README, un piemēru skriptiem.

Instalēšana un iestatīšana

Instalējiet no PyPI:

pip install aspose-note

PDF eksportēšanas atbalstam (nepieciešams ReportLab):

pip install "aspose-note[pdf]"

Prasības: Python 3.10 vai jaunāks. Nav nepieciešama Microsoft Office instalācija.


Funkcijas un iespējas

.one failu ielāde

Ielādēt Microsoft OneNote sadaļas failus no faila ceļa vai jebkura binārā straumes (faila rokturis, io.BytesIO, HTTP atbildes ķermenis, mākoņa glabāšanas straume).

  • Document.FileFormat sniedz labāko iespējamā mēģinājuma norādi par OneNote faila formāta versiju (OneNote2010, OneNoteOnline, vai OneNote2007)
  • Straumes balstīta ielāde likvidē diska I/O atmiņā vai tīkla darba plūsmām
  • LoadOptions.LoadHistory karogs kontrolē, vai lapas vēsture ir iekļauta 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)

Dokumenta DOM pārlūkošana

Pilns OneNote dokuments tiek atklāts kā tipizētu Python objektu koks. Katrs mezgls manto no Node vai CompositeNode:

  • Document: sakne; atklāj DisplayName, CreationTime, FileFormat
  • Page: tiešs bērns no Document; atklāj Title, Author, CreationTime, LastModifiedTime, Level
  • Title: atklāj TitleText, TitleDate, TitleTime (visi RichText mezgli)
  • Outline: pozicionāls konteiner ar HorizontalOffset, VerticalOffset, MaxWidth, MaxHeight, MinWidth, ReservedWidth, IndentPosition
  • OutlineElement: lapas konteineris; atklāj NumberList

Navigācijas metodes ieslēgtas CompositeNode:

Metode / ĪpašībaApraksts
FirstChild, LastChildTiešā bērna piekļuve
GetChildNodes(Type)Rekursīva, tipa filtrēta meklēšana
AppendChildLast(node)Pievienot bērnu beigās
AppendChildFirst(node)Pievienot bērnu sākumā
InsertChild(index, node)Ievietot pozīcijā
RemoveChild(node)Noņemt bērnu
for child in nodeIterēt tiešos bērnus
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}")

Bagātināta teksta satura izgūšana

RichText mezgli atklāj:

  • Text: str: pilna vienkārša teksta virkne
  • TextRuns: list[TextRun]: formatētu segmentu saraksts
  • Tags: list[NoteTag]: OneNote birkas, kas pievienotas šim blokam
  • Append(text, style=None): pievienot teksta fragmentu atmiņā
  • Replace(old_value, new_value): virknes aizvietošana atmiņā

Katrs TextRun satur:

ĪpašībaTipsApraksts
TextstrSegmenta teksts
StyleTextStyleFormatēšanas metadati

TextStyle īpašības:

ĪpašībaTips
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}")

Attēlu izguve

Image mezgli atklāj neapstrādātas baitus un metadatus katram iegultajam attēlam:

ĪpašībaTipsApraksts
FileName`strNone`
BytesbytesNeapstrādāti attēla dati
Width, Height`floatNone`
AlternativeTextTitle`strNone`
AlternativeTextDescription`strNone`
HyperlinkUrl`strNone`
Tagslist[NoteTag]Pievienotās OneNote birkas
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)")

Pievienotā faila izgūšana

AttachedFile mezgli atklāj iegultus failu pielikumus:

ĪpašībaTipsApraksts
FileName`strNone`
BytesbytesNeapstrādāti faila dati
Tagslist[NoteTag]Pievienotās OneNote birkas
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)

Tabulu parsēšana

Table, TableRow, un TableCell atklāj pilnu tabulas struktūru:

KlaseAtslēgas īpašības
TableColumns: list[TableColumn] (katrs TableColumn ir .Width un .LockedWidth), IsBordersVisible: bool, Tags: list[NoteTag]
TableRowIterēt šūnas, izmantojot GetChildNodes(TableCell)
TableCellSatur RichText, Image, un citi satura mezgli
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 birku pārbaude

NoteTag parādās uz RichText, Image, AttachedFile, un Table mezgli caur to .Tags īpašība. OutlineElement nav .Tags īpašība. NoteTag īpašības:

ĪpašībaTipsApraksts
Icon`intNone`
Label`strNone`
FontColor`intNone`
Highlight`intNone`
CreationTime`datetimeNone`
CompletedTime`datetimeNone`

Ražotāja metode: NoteTag.CreateYellowStar() izveido standarta dzeltena-zvaigznes taga mezglu.

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

Numurēto sarakstu atbalsts

OutlineElement.NumberList atklāj:

ĪpašībaTipsApraksts
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 pārlūkošana

DocumentVisitor nodrošina apmeklētāja modeli strukturētai pilna dokumenta pārlūkošanai. Pārrakstiet jebkuru VisitXxxStart / VisitXxxEnd metodi, lai pārtvertu konkrētus mezglu tipus:

  • 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ēšana

Saglabāt ielādētu dokumentu PDF formātā, izmantojot Document.Save(). Atbalstīts, izmantojot izvēles ReportLab aizmugursistēmu.

from aspose.note import Document, SaveFormat

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

PdfSaveOptions

OpcijaTipsApraksts
PageIndexintLauks pastāv; nav pārsūtīts PDF eksportētājam versijā 26.3.1 (nav ietekmes)
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āta un uzskaitījuma atsauce

SaveFormat

VērtībaStatuss
SaveFormat.PdfĪstenots (nepieciešams ReportLab)

FileFormat

Document.FileFormat sniedz labāko iespējamā mēģinājuma norādi par OneNote faila formāta versiju. Enums deklarē trīs vērtības:

VērtībaApraksts
FileFormat.OneNote2010OneNote 2010 formāts
FileFormat.OneNoteOnlineOneNote Online formāts
FileFormat.OneNote2007OneNote 2007 formāts

NodeType

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

HorizontalAlignment

HorizontalAlignment.Left, HorizontalAlignment.Center, HorizontalAlignment.Right


Pašreizējie ierobežojumi

IerobežojumsDetaļa
Tikai lasāmsRakstīšana atpakaļ uz .one formāts nav īstenots
Nav šifrēšanasŠifrēti dokumenti izraisa IncorrectPasswordException
PDF tikai eksportamCiti SaveFormat vērtības izraisa UnsupportedSaveFormatException
ReportLab nepieciešams PDFInstalēt pip install "aspose-note[pdf]" atsevišķi
GetPageHistory atgriež vienas elementa sarakstuPilnas lapas vēstures pārlūkošana ir stub; atgriež [page]
DetectLayoutChanges()Saderības stub; nav darbības

Padomi un labākā prakse

  • Pārbaudīt None: Page.Title, Title.TitleText, OutlineElement.NumberList, un vairums metadatu lauku var būt None. Vienmēr aizsargājiet ar if x is not None vai if x pirms piekļuves īpašībām.
  • Izmantojiet GetChildNodes(Type) rekursīvai meklēšanai, nevis manuāli iterējot koku. Tas meklē visu apakškoku.
  • Iterējiet tiešos bērnus ar for child in node kad jums vajag tikai tiešos bērnus.
  • Apstrādājiet kodējumu Windows vidē: Windows vidē, sys.stdout var izmantot mantoto kodēšanas lapu. Pievienojiet sys.stdout.reconfigure(encoding="utf-8", errors="replace") palaišanas laikā, kad drukājat Unicode tekstu.
  • Instalējiet [pdf] papildu: Neimportējiet SaveFormat.Pdf funkcionalitāti, neinstalējot vispirms pip install "aspose-note[pdf]". Bez ReportLab saglabāšana PDF formātā izraisīs importēšanas kļūdu izpildlaikā.
 Latviešu