Επισκόπηση χαρακτηριστικών 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,FileFormatPage:• Το άμεσο παιδί τηςDocument;· ΕκθέσειςTitle,Author,CreationTime,LastModifiedTime,LevelTitle:• ΕκθέσειςTitleText,TitleDate,TitleTime(Όλοι οιRichTextΚόντρα)Outline:• Τοποθετικό μεHorizontalOffset,VerticalOffset,MaxWidth,MaxHeight,MinWidth,ReservedWidth,IndentPositionOutlineElement:• Φωτοκαλλιέργεια: Εμφανίσεις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 Παρουσιάζει :
| Ιδιοκτησία | Τύπος | Περιγραφή |
|---|---|---|
Text | str | Τμήμα κειμένου |
Style | TextStyle | Ετικέτες Metadata |
TextStyle Ιδιότητες :
| Ιδιοκτησία | Τύπος |
|---|---|
IsBold, IsItalic, IsUnderline, IsStrikethrough | bool |
IsSuperscript, IsSubscript | bool |
FontName | `str |
FontSize | `float |
FontColor, Highlight | `int |
Language | `int |
IsHyperlink | bool |
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 | `str | None` |
Bytes | bytes | Raw εικόνες δεδομένων |
Width, Height | `float | None` |
AlternativeTextTitle | `str | None` |
AlternativeTextDescription | `str | None` |
HyperlinkUrl | `str | None` |
Tags | list[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 | `str | None` |
Bytes | bytes | Raw αρχεία δεδομένων |
Tags | list[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 Εμφανίστε την πλήρη δομή του πίνακα:
| Κλάση | Κλειδιά Ιδιοκτησίας |
|---|---|
Table | Columns: 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 | `int | None` |
Label | `str | None` |
FontColor | `int | None` |
Highlight | `int | None` |
CreationTime | `datetime | None` |
CompletedTime | `datetime | None` |
Μέθοδος εργοστασίου: 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 | `str | None` |
Restart | `int | None` |
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
| Επιλογή | Τύπος | Περιγραφή |
|---|---|---|
PageIndex | int | Δείκτης με βάση το μηδέν της πρώτης σελίδας για εξαγωγή (προεπιλογή: 0, πρώτη σελίδα) |
PageCount | `int | None` |
ImageCompression | `Any | None` |
JpegQuality | `int | None` |
PageSettings | `Any | None` |
PageSplittingAlgorithm | `Any | None` |
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.OneNote2010 | OneNote 2010 Πίνακας |
FileFormat.OneNoteOnline | OneNote Online Τύπος |
FileFormat.OneNote2007 | 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
Τώρα οι περιορισμοί
| Περιορισμός | Λεπτομέρειες |
|---|---|
| Διαβάστε μόνο | Γράφοντας πίσω στο .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. Runpip install "aspose-note[pdf]"Πριν χρησιμοποιήσετεSaveFormat.Pdf.Χωρίς το ReportLab, η αποθήκευση στο PDF αυξάνει τηνImportErrorστο runtime.