Επισκόπηση χαρακτηριστικών Aspose.Note FOSS για Python

Aspose.Note FOSS for Python (package aspose-note, έκδοση 26.3.2) παρέχει ένα API Python για την ανάγνωση του Microsoft OneNote .one Όλα τα χαρακτηριστικά που αναφέρονται παρακάτω επαληθεύονται κατά του κώδικα πηγής αποθήκευσης, README και σενάρια παράδειγμα.

Εγκατάσταση και εγκατάστασης

Εισαγωγή από το PyP:

pip install aspose-note

Για την υποστήριξη εξαγωγής PDF (απαιτείται ReportLab):

pip install aspose-note

Απαιτήσεις: Python 3.10 ή νεότερη. Δεν απαιτείται εγκατάσταση Microsoft Office.


Χαρακτηριστικά και ικανότητες

.1 Φάκελος φόρτωσης

Κατεβάστε τα αρχεία τμήματος του Microsoft OneNote από ένα δρομολόγιο ή οποιαδήποτε δυαδική ροή (διαχείριση αρχείων, io.BytesIO, HTTP ανταπόκριση σώμα, σύννεφο αποθήκευσης).

  • Document.FileFormat παρέχει μια καλύτερη ένδειξη της έκδοσης μορφοποίησης αρχείου του OneNote (OneNota 2010, OneToo, ή OneMota2007)
  • Η φόρτωση με βάση τη ροή εξαλείφει το I/O του δίσκου για τις ροές εργασίας στο εσωτερικό της μνήμης ή του δικτύου
  • LoadOptions.LoadHistory Ελέγχει αν η ιστορία σελίδας περιλαμβάνεται στο 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)

Ετικέτες DOM Traversal

Το πλήρες έγγραφο του OneNote εκτίθεται ως ένα δέντρο τυποποιημένων αντικειμένων Python. κάθε κόμβος κληρονομεί από το Node ή CompositeNode:

  • Document:• Σύνθεση: Εκθέσεις DisplayName, CreationTime, FileFormat
  • Page:• Το άμεσο παιδί της Document;· Εκθέσεις Title, Author, CreationTime, LastModifiedTime, Level
  • Title:• Εκθέσεις TitleText, TitleDate, TitleTime (Όλοι οι RichText Κόντρα)
  • Outline:• Τοποθετικό με HorizontalOffset, VerticalOffset, MaxWidth, MaxHeight, MinWidth, ReservedWidth, IndentPosition
  • OutlineElement:• Φωτοκαλλιέργεια: Εμφανίσεις NumberList

Μεθόδους πλοήγησης σε CompositeNode:

Μέθοδος / ΙδιοκτησίαΠεριγραφή
FirstChild, LastChildΕΠΙΧΕΙΡΗΣΗ ΠΑΙΔΙΑΣ
GetChildNodes(Type)Αναδρομική, τύπος φίλτρου αναζήτησης
AppendChildLast(node)Πάρτε το παιδί στο τέλος
AppendChildFirst(node)Προσθέστε το παιδί στην αρχή
InsertChild(index, node)Εισάγετε στη θέση
RemoveChild(node)Αφαιρέστε ένα παιδί
for child in nodeΕπαναφορά απευθείας παιδιών
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}")

Πλούσια Εξαγωγή Περιεχομένου

RichText Οι κόμβοι εκθέτουν:

  • Text: str:• Πλήρης γραμμή κειμένου
  • TextRuns: list[TextRun]:Ετικέτες: Σχεδιασμός σε διαμορφωμένα τμήματα
  • Tags: list[NoteTag]: Τα ετικέτα του OneNote που συνδέονται με αυτό το μπλοκ
  • Append(text, style=None):• Εφαρμόστε ένα κείμενο που εκτελείται σε μνήμη
  • Replace(old_value, new_value):• Αντικατάσταση σιδήρου μνήμης

Κάθε ένα TextRun Παρουσιάζει :

ΙδιοκτησίαΤύποςΠεριγραφή
TextstrΤμήμα κειμένου
StyleTextStyleΕτικέτες Metadata

TextStyle Ιδιότητες :

ΙδιοκτησίαΤύπος
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}")

Εικόνα εξαγωγής

Image Οι κόμβοι εκθέτουν πρώτες bytes και μεταδεδομένα για κάθε ενσωματωμένη εικόνα:

ΙδιοκτησίαΤύποςΠεριγραφή
FileName`strNone`
BytesbytesRaw εικόνες δεδομένων
Width, Height`floatNone`
AlternativeTextTitle`strNone`
AlternativeTextDescription`strNone`
HyperlinkUrl`strNone`
Tagslist[NoteTag]Εμφάνιση των OneNote tags
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)")

Εξαγωγή αρχείων

AttachedFile Οι κόμβοι εκθέτουν ενσωματωμένα αρχεία:

ΙδιοκτησίαΤύποςΠεριγραφή
FileName`strNone`
BytesbytesRaw αρχεία δεδομένων
Tagslist[NoteTag]Εμφάνιση των OneNote tags
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)

Πάρσινο τραπέζι

Table, TableRow,και TableCell Εμφανίστε την πλήρη δομή του πίνακα:

ΚλάσηΚλειδιά Ιδιοκτησίας
TableColumns: list[TableColumn] (Ο καθένας TableColumn Έχει .Width και .LockedWidth), IsBordersVisible: bool, Tags: list[NoteTag]
TableRowΤα κελιά του Ιτέρα μέσω GetChildNodes(TableCell)
TableCellΠεριεχόμενο RichText, Image,και άλλα κενά περιεχομένου
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 Tag

NoteTag εμφανίζεται στο RichText, Image, AttachedFile,και Table Τα κόμβα μέσα από τους .Tags ιδιοκτησία . OutlineElement Δεν έχει ένα .Tags ιδιοκτησία . NoteTag Ιδιότητες :

ΙδιοκτησίαΤύποςΠεριγραφή
Icon`intNone`
Label`strNone`
FontColor`intNone`
Highlight`intNone`
CreationTime`datetimeNone`
CompletedTime`datetimeNone`

Μέθοδος εργοστασίου: NoteTag.CreateYellowStar() Δημιουργεί ένα τυπικό κίτρινο-στέρ νύχτα.

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

Υποστήριξη αριθμητικών λίστας

OutlineElement.NumberList Εμφανίσεις :

ΙδιοκτησίαΤύποςΠεριγραφή
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 παρέχει ένα πρότυπο επισκεπτών για δομημένο πλήρες διαδίκτυο εγγράφων. VisitXxxStart / VisitXxxEnd Μέθοδος για την αναστολή συγκεκριμένων τύπων κόμβων:

  • 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 Εξαγωγή

Αποθηκεύστε ένα φορτισμένο έγγραφο στο PDF χρησιμοποιώντας Document.Save().Υποστηρίζεται μέσω του προαιρετικού backend ReportLab.

from aspose.note import Document, SaveFormat

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

PdfSaveOptions

ΕπιλογήΤύποςΠεριγραφή
PageIndexintΔείκτης με βάση το μηδέν της πρώτης σελίδας για εξαγωγή (προεπιλογή: 0, πρώτη σελίδα)
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()

Ετικέτες και Enum Reference

SaveFormat

ΑξίαΣτάση
SaveFormat.PdfΕφαρμοσμένη (απαιτείται ReportLab)

FileFormat

Document.FileFormat παρέχει μια καλύτερη ένδειξη της έκδοσης μορφοποίησης αρχείου του OneNote. το enum δηλώνει τρεις τιμές:

ΑξίαΠεριγραφή
FileFormat.OneNote2010OneNote 2010 Πίνακας
FileFormat.OneNoteOnlineOneNote Online Τύπος
FileFormat.OneNote2007OneNote 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


Τώρα οι περιορισμοί

ΠεριορισμόςΛεπτομέρειες
Διαβάστε μόνοΓράφοντας πίσω στο .one Η μορφή δεν εφαρμόζεται
Χωρίς κρυπτογράφησηΚρυπτογραφημένα έγγραφα αναβαθμίζονται IncorrectPasswordException
PDF μόνο για εξαγωγήΆλλοι SaveFormat Αξίες αυξάνονται UnsupportedSaveFormatException
Αναγκαία για το PDFΕγκατάσταση pip install "aspose-note[pdf]" ξεχωριστά
GetPageHistory Επιστροφή με μια λίστα στοιχείωνΟ πλήρης ιστορικός διαδρομος είναι ένα σπυράκι· επιστρέφει [page]
DetectLayoutChanges()Συμβατότητα σπρέι; Δεν υπάρχει λειτουργία

Συμβουλές και βέλτιστες πρακτικές

  • Ελέγξτε για κανένα: Page.Title, Title.TitleText, OutlineElement.NumberList,Τα περισσότερα πεδία μετρητών μπορούν να είναι None.Πάντα να φροντίζεις με if x is not None ή if x Πριν από την πρόσβαση σε ακίνητα.
  • Χρησιμοποιήστε GetChildNodes(Type) για αναδρομική αναζήτηση αντί να ιταρίσει το δέντρο με μη αυτόματο τρόπο.
  • Επαναφορά απευθείας παιδιών Με for child in node Όταν χρειάζεστε μόνο άμεσες παιδιά.
  • Κωδικοποίηση στο Windows:• στα Windows, sys.stdout Μπορείτε να χρησιμοποιήσετε μια σελίδα κώδικα κληρονομιάς.Προσθήκη sys.stdout.reconfigure(encoding="utf-8", errors="replace") Η εκτύπωση του κειμένου Unicode.
  • Εγκατάσταση [pdf] ΕΠΙΛΟΓΙΚΗ: PDF εξαγωγή απαιτεί ReportLab. Run pip install "aspose-note[pdf]" Πριν χρησιμοποιήσετε SaveFormat.Pdf.Χωρίς το ReportLab, η αποθήκευση στο PDF αυξάνει την ImportError στο runtime.
 Ελληνικά