Εικόνες και Συνημμένα Αρχεία — 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 | `str | None` |
Bytes | bytes | Ακατέργαστα δεδομένα εικόνας (η μορφή ταιριάζει με την αρχική, π.χ. PNG, JPEG) |
Width | `float | None` |
Height | `float | None` |
AlternativeTextTitle | `str | None` |
AlternativeTextDescription | `str | None` |
HyperlinkUrl | `str | None` |
Tags | list[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 | `str | None` |
Bytes | bytes | Ακατέργαστο περιεχόμενο αρχείου |
Tags | list[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
| Χαρακτηριστικό | Image | AttachedFile |
|---|---|---|
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δεν υποστηρίζεται.