Οδηγός Προγραμματιστή

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`TitleNone`
Author`strNone`
CreationTime`datetimeNone`
LastModifiedTime`datetimeNone`
Level`intNone`

Εξαγωγή Κειμένου

Εξαγωγή όλου του απλού κειμένου

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

Διαθέσιμοι οδηγοί


Δείτε επίσης

 Ελληνικά