Εικόνες και Συνημμένα Αρχεία — Aspose.Note FOSS για Python

Aspose.Note FOSS for Python gives direct access to both embedded images and attached files stored inside OneNote .one αρχεία ενότητας. Το περιεχόμενο εκτίθεται μέσω του Image και AttachedFile τύπων κόμβων.


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

Κάθε εικόνα σε ένα έγγραφο OneNote αντιπροσωπεύεται από ένα Image κόμβο. Χρησιμοποιήστε GetChildNodes(Image) για να ανακτήσετε όλες τις εικόνες από το έγγραφο αναδρομικά:

from aspose.note import Document, Image

doc = Document("MyNotes.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)")

Ιδιότητες Εικόνας

ΙδιότηταΤύποςΠεριγραφή
FileName`strNone`
BytesbytesΑκατέργαστα δεδομένα εικόνας (η μορφή ταιριάζει με την αρχική, π.χ. PNG, JPEG)
Width`floatNone`
Height`floatNone`
AlternativeTextTitle`strNone`
AlternativeTextDescription`strNone`
HyperlinkUrl`strNone`
Tagslist[NoteTag]Ετικέτες OneNote που επισυνάπτονται σε αυτήν την εικόνα

Αποθήκευση Εικόνων με Ασφαλή Ονόματα Αρχείων

Όταν FileName είναι None ή περιέχει χαρακτήρες που δεν είναι ασφαλείς για το σύστημα αρχείων, καθαρίστε πριν την αποθήκευση:

import re
from aspose.note import Document, Image

def safe_name(name: str | None, fallback: str) -> str:
    if not name:
        return fallback
    return re.sub(r'[<>:"/\\|?*]', "_", name)

doc = Document("MyNotes.one")
for i, img in enumerate(doc.GetChildNodes(Image), start=1):
    name = safe_name(img.FileName, f"image_{i}.bin")
    with open(name, "wb") as f:
        f.write(img.Bytes)

Εξαγωγή Εικόνων ανά Σελίδα

from aspose.note import Document, Page, Image

doc = Document("MyNotes.one")
for page_num, page in enumerate(doc.GetChildNodes(Page), start=1):
    images = page.GetChildNodes(Image)
    print(f"Page {page_num}: {len(images)} image(s)")
    for i, img in enumerate(images, start=1):
        filename = f"page{page_num}_img{i}.bin"
        with open(filename, "wb") as f:
            f.write(img.Bytes)

Επιθεώρηση Εναλλακτικού Κειμένου Εικόνας και Υπερσυνδέσμων

from aspose.note import Document, Image

doc = Document("MyNotes.one")
for img in doc.GetChildNodes(Image):
    if img.AlternativeTextTitle:
        print("Alt title:", img.AlternativeTextTitle)
    if img.AlternativeTextDescription:
        print("Alt desc:", img.AlternativeTextDescription)
    if img.HyperlinkUrl:
        print("Linked to:", img.HyperlinkUrl)

Ανίχνευση Μορφής Αρχείου Εικόνας από Bytes

Python’s imghdr module (Python ≤ 3.12) ή το struct module μπορεί να ανιχνεύσει τη μορφή της εικόνας από τα πρώτα bytes:

from aspose.note import Document, Image

doc = Document("MyNotes.one")
for img in doc.GetChildNodes(Image):
    b = img.Bytes
    if b[:4] == b'\x89PNG':
        fmt = "png"
    elif b[:2] == b'\xff\xd8':
        fmt = "jpeg"
    elif b[:4] == b'GIF8':
        fmt = "gif"
    elif b[:2] in (b'BM',):
        fmt = "bmp"
    else:
        fmt = "bin"
    name = (img.FileName or f"image.{fmt}").rsplit(".", 1)[0] + f".{fmt}"
    with open(name, "wb") as f:
        f.write(b)

Εξαγωγή Συνημμένων Αρχείων

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

from aspose.note import Document, AttachedFile

doc = Document("NotesWithAttachments.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)
    print(f"Saved attachment: {filename}  ({len(af.Bytes):,} bytes)")

Ιδιότητες AttachedFile

ΙδιότηταΤύποςΠεριγραφή
FileName`strNone`
BytesbytesΑκατέργαστο περιεχόμενο αρχείου
Tagslist[NoteTag]Ετικέτες OneNote συνδεδεμένες με αυτόν τον κόμβο

Επιθεώρηση Ετικετών σε Εικόνες και Συνημμένα

Και τα δύο Image και AttachedFile οι κόμβοι υποστηρίζουν ετικέτες OneNote:

from aspose.note import Document, Image, AttachedFile

doc = Document("MyNotes.one")

for img in doc.GetChildNodes(Image):
    for tag in img.Tags:
        print(f"Image tag: {tag.Label}  completedTime={tag.CompletedTime}")

for af in doc.GetChildNodes(AttachedFile):
    for tag in af.Tags:
        print(f"Attachment tag: {tag.Label}  completedTime={tag.CompletedTime}")

Σύνοψη: Image vs AttachedFile

ΧαρακτηριστικόImageAttachedFile
FileNameΝαι (αρχικό όνομα εικόνας)Ναι (αρχικό όνομα αρχείου)
BytesΑκατέργαστα bytes εικόναςΑκατέργαστα bytes αρχείου
Width / HeightΝαι (απεικονιζόμενες διαστάσεις)Όχι
AlternativeTextTitle/DescriptionΝαιΌχι
HyperlinkUrlΝαιΌχι
TagsΝαιΝαι
Replace(node) μέθοδοςΝαιΌχι

Συμβουλές

  • Πάντα να προσέχετε None ονόματα αρχείων. img.FileName είναι None όταν το αρχείο δεν είχε όνομα στο πηγαίο έγγραφο.
  • img.Bytes δεν είναι ποτέ None και είναι πάντα το ακατέργαστο δυαδικό περιεχόμενο; μπορεί να είναι μηδενικά byte για εικόνες κράτησης θέσης.
  • Χρησιμοποιήστε Page.GetChildNodes(Image) αντί για Document.GetChildNodes(Image) για να περιορίσετε την εξαγωγή σε μία μόνο σελίδα.
  • Το Image.Replace(image) η μέθοδος αντικαθιστά το περιεχόμενο ενός κόμβου εικόνας με άλλο in-memory· η αποθήκευση πίσω στο .one δεν υποστηρίζεται.

Δείτε επίσης

 Ελληνικά