Οδηγός Προγραμματιστή
Aspose.Note FOSS for Python is a free, open-source library for reading Microsoft OneNote .one αρχεία ενότητας χωρίς καμία εξάρτηση από το Microsoft Office. Παρέχει ένα καθαρό δημόσιο API κάτω από το aspose.note πακέτο, μοντελοποιημένο μετά το Aspose.Note για το .NET διεπαφή. Η βιβλιοθήκη είναι κατάλληλη για αυτοματοποίηση εγγράφων, ευρετηρίαση περιεχομένου, αγωγούς εξαγωγής δεδομένων και αρχειοθετημένες ροές εργασίας.
Αυτός ο οδηγός προγραμματιστών καλύπτει το πλήρες δημόσιο API διαθέσιμο στην έκδοση 26.3.1, με εκτελέσιμα παραδείγματα κώδικα για κάθε κύρια λειτουργία.
Φόρτωση Εγγράφου
Φορτώστε ένα .one αρχείο από διαδρομή αρχείου ή δυαδική ροή. Το Document κλάση είναι το σημείο εισόδου για όλες τις λειτουργίες.
Φόρτωση από διαδρομή αρχείου
from aspose.note import Document
doc = Document("MyNotes.one")Φόρτωση από δυαδική ροή
Χρήσιμο όταν διαβάζετε από αποθήκευση στο σύννεφο, απαντήσεις HTTP ή ενδιάμεσες μνήμες:
from pathlib import Path
from aspose.note import Document
with Path("MyNotes.one").open("rb") as f:
doc = Document(f)Επιλογές φόρτωσης
Χρησιμοποιήστε LoadOptions για να ορίσετε προαιρετικές παραμέτρους κατά τη φόρτωση:
from aspose.note import Document, LoadOptions
opts = LoadOptions()
opts.LoadHistory = True # Include page history in the DOM
doc = Document("MyNotes.one", opts)Σημείωση: DocumentPassword υπάρχει στο LoadOptions για συμβατότητα API, αλλά τα κρυπτογραφημένα έγγραφα δεν υποστηρίζονται. Η προσπάθεια φόρτωσης ενός κρυπτογραφημένου αρχείου προκαλεί IncorrectPasswordException.
Δομή Εγγράφου (DOM)
Το μοντέλο εγγράφου OneNote είναι ένα δέντρο:
Document
└── Page (0..n)
├── Title
│ ├── TitleText (RichText)
│ ├── TitleDate (RichText)
│ └── TitleTime (RichText)
└── Outline (0..n)
└── OutlineElement (0..n)
├── RichText
├── Image
├── Table
│ └── TableRow
│ └── TableCell
│ └── RichText / Image
└── AttachedFileΚάθε κόμβος εκθέτει ParentNode και ένα Document ιδιότητα που ανεβαίνει μέχρι τη ρίζα. Οι σύνθετοι κόμβοι υποστηρίζουν επανάληψη παιδιών, FirstChild, LastChild, AppendChildLast, InsertChild, RemoveChild, και GetChildNodes(Type).
Επανάληψη Σελίδων
Οι Σελίδες είναι τα άμεσα παιδιά του Document. Επανάληψη τους απευθείας ή χρήση GetChildNodes:
from aspose.note import Document, Page
doc = Document("MyNotes.one")
for page in doc:
title = page.Title.TitleText.Text if page.Title and page.Title.TitleText else "(untitled)"
author = page.Author or "(unknown)"
print(f" {title} [by {author}]")Μεταδεδομένα σελίδας:
| Ιδιότητα | Τύπος | Περιγραφή |
|---|---|---|
Title | `Title | None` |
Author | `str | None` |
CreationTime | `datetime | None` |
LastModifiedTime | `datetime | None` |
Level | `int | None` |
Εξαγωγή Κειμένου
Εξαγωγή όλου του απλού κειμένου
from aspose.note import Document, RichText
doc = Document("MyNotes.one")
all_text = [rt.Text for rt in doc.GetChildNodes(RichText) if rt.Text]
print("\n".join(all_text))Επιθεώρηση τμημάτων μορφοποίησης
Κάθε RichText περιέχει μια λίστα από TextRun τμήματα. Κάθε εκτέλεση φέρει το δικό της TextStyle:
from aspose.note import Document, RichText
doc = Document("FormattedNotes.one")
for rt in doc.GetChildNodes(RichText):
for run in rt.TextRuns:
style = run.Style
flags = []
if style.IsBold: flags.append("bold")
if style.IsItalic: flags.append("italic")
if style.IsHyperlink: flags.append(f"link={style.HyperlinkAddress}")
print(f"{run.Text!r:40s} [{', '.join(flags)}]")Εξαγωγή υπερσυνδέσμων
from aspose.note import Document, RichText
doc = Document("MyNotes.one")
for rt in doc.GetChildNodes(RichText):
for run in rt.TextRuns:
if run.Style.IsHyperlink and run.Style.HyperlinkAddress:
print(run.Text, "->", run.Style.HyperlinkAddress)Εξαγωγή Εικόνων
from aspose.note import Document, Image
doc = Document("MyNotes.one")
for i, img in enumerate(doc.GetChildNodes(Image), start=1):
name = img.FileName or f"image_{i}.bin"
with open(name, "wb") as f:
f.write(img.Bytes)
print(f"Saved {name} ({img.Width}x{img.Height})")Ιδιότητες εικόνας: FileName, Bytes, Width, Height, AlternativeTextTitle, AlternativeTextDescription, HyperlinkUrl, Tags.
Ανάλυση Πίνακα
from aspose.note import Document, Table, TableRow, TableCell, RichText
doc = Document("MyNotes.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)
row_text = [
" ".join(rt.Text for rt in cell.GetChildNodes(RichText)).strip()
for cell in cells
]
print(f"Row {r}:", row_text)Συνημμένα Αρχεία
from aspose.note import Document, AttachedFile
doc = Document("NotesWithAttachments.one")
for i, af in enumerate(doc.GetChildNodes(AttachedFile), start=1):
name = af.FileName or f"attachment_{i}.bin"
with open(name, "wb") as f:
f.write(af.Bytes)
print(f"Saved: {name}")Ετικέτες και Αριθμημένες Λίστες
Επιθεώρηση στοιχείων NoteTag
from aspose.note import Document, RichText, Image, Table
doc = Document("TaggedNotes.one")
for rt in doc.GetChildNodes(RichText):
for tag in rt.Tags:
print(f"RichText tag: {tag.Label} icon={tag.Icon}")
for img in doc.GetChildNodes(Image):
for tag in img.Tags:
print(f"Image tag: {tag.Label}")Επιθεώρηση αριθμημένων λιστών
from aspose.note import Document, OutlineElement
doc = Document("NumberedNotes.one")
for oe in doc.GetChildNodes(OutlineElement):
nl = oe.NumberList
if nl:
print(f"format={nl.Format!r}")Μοτίβο DocumentVisitor
Χρησιμοποιήστε DocumentVisitor για να υλοποιήσετε έναν επισκέπτη που διασχίζει ολόκληρο το δέντρο του εγγράφου:
from aspose.note import Document, DocumentVisitor, Page, RichText, Image
class ContentCounter(DocumentVisitor):
def __init__(self):
self.pages = 0
self.texts = 0
self.images = 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("MyNotes.one")
counter = ContentCounter()
doc.Accept(counter)
print(f"Pages: {counter.pages}, Texts: {counter.texts}, Images: {counter.images}")Εξαγωγή PDF
Η εξαγωγή PDF απαιτεί την προαιρετική εξάρτηση ReportLab. Εγκαταστήστε την με:
pip install "aspose-note[pdf]"Βασική εξαγωγή PDF
from aspose.note import Document, SaveFormat
doc = Document("MyNotes.one")
doc.Save("output.pdf", SaveFormat.Pdf)Εξαγωγή PDF με επιλογές
import io
from aspose.note import Document, SaveFormat
from aspose.note.saving import PdfSaveOptions
doc = Document("MyNotes.one")
##With save options
opts = PdfSaveOptions()
doc.Save("output.pdf", opts)
##Save to in-memory stream
buf = io.BytesIO()
doc.Save(buf, PdfSaveOptions())
pdf_bytes = buf.getvalue()Σημείωση: PdfSaveOptions.PageIndex και PageCount υπάρχουν πεδία, αλλά δεν προωθούνται στον εξαγωγέα PDF στην έκδοση v26.3.1. Το πλήρες έγγραφο εξάγεται πάντα.
Τρέχοντες περιορισμοί
| Περιοχή | Κατάσταση |
|---|---|
Ανάγνωση .one αρχεία | Πλήρως υποστηριζόμενο |
| Εξαγωγή PDF (μέσω ReportLab) | Υποστηριζόμενο |
Εγγραφή πίσω σε .one | Δεν έχει υλοποιηθεί |
| Κρυπτογραφημένα έγγραφα | Δεν υποστηρίζεται (εγείρει IncorrectPasswordException) |
| Μορφές αποθήκευσης HTML / εικόνας / ONE | Δηλωμένο για συμβατότητα API· raise UnsupportedSaveFormatException |
Διαθέσιμοι οδηγοί
- Επισκόπηση χαρακτηριστικών: πλήρης λίστα χαρακτηριστικών με αποδείξεις
- Ξεκινώντας: προαπαιτούμενα, εγκατάσταση και πρώτα βήματα
- Εγκατάσταση: pip install και προαιρετικές εξαρτήσεις