Slike i priloženi fajlovi — Aspose.Note FOSS za Python
Aspose.Note FOSS za Python pruža direktan pristup i ugrađenim slikama i priloženim fajlovima koji su pohranjeni unutar OneNote .one sekcijskih fajlova. Sadržaj je izložen putem Image i AttachedFile tipova čvorova.
Ekstrahovanje slika
Svaka slika u OneNote dokumentu je predstavljena Image čvorom. Koristite GetChildNodes(Image) da biste rekurzivno dohvatili sve slike iz dokumenta:
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)")Svojstva slike
| Svojstvo | Tip | Opis |
|---|---|---|
FileName | str | None | Originalno ime fajla sačuvano u OneNote fajlu (može biti None) |
Bytes | bytes | Sirovi podaci slike (format odgovara originalu, npr. PNG, JPEG) |
Width | float | None | Renderisana širina u tačkama |
Height | float | None | Renderisana visina u tačkama |
AlternativeTextTitle | str | None | Alt tekst naslov za pristupačnost |
AlternativeTextDescription | str | None | Alt tekst opis |
HyperlinkUrl | str | None | URL ako je slika klikabilni hiperveza |
Tags | list[NoteTag] | OneNote oznake prikačene uz ovu sliku |
Sačuvajte slike sa sigurnim imenima fajlova
Kada je FileName None ili sadrži znakove koji nisu sigurni za fajl sistem, očistite pre čuvanja:
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)Ekstrakcija slika po stranici
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)Откривање формата слике из бајтова
Python‑ov imghdr modul (Python ≤ 3.12) ili struct modul može da otkrije format slike iz prvih bajtova:
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)Ekstrakcija priloženih fajlova
Ugrađeni prilozi fajlova se čuvaju kao AttachedFile čvorovi:
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 Svojstva
| Svojstvo | Tip | Opis |
|---|---|---|
FileName | str | None | Originalno ime datoteke sačuvano u OneNote datoteci |
Bytes | bytes | Sirovi sadržaj datoteke |
Tags | list[NoteTag] | OneNote oznake prikačene ovom čvoru |
Pregledajte oznake na slikama i prilozima
Oba čvora Image i AttachedFile podržavaju OneNote oznake:
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}")Sažetak: Image vs AttachedFile
| Funkcija | Image | AttachedFile |
|---|---|---|
FileName | Da (originalno ime slike) | Da (originalno ime fajla) |
Bytes | Sirovi bajtovi slike | Sirovi bajtovi fajla |
Width / Height | Da (prikazane dimenzije) | Ne |
AlternativeTextTitle/Description | Da | Ne |
HyperlinkUrl | Da | Ne |
Tags | Da | Da |
Replace(node) metod | Da | Ne |
Saveti
- Uvek se zaštitite od
Noneimena fajlova.img.FileNamejeNonekada fajl nije imao ime u izvornom dokumentu. img.Bytesnikada nijeNonei uvek je sirovi binarni sadržaj; može biti nula bajtova za rezervne slike.- Koristite
Page.GetChildNodes(Image)umestoDocument.GetChildNodes(Image)da ograničite ekstrakciju na jednu stranicu. - Metod
Image.Replace(image)zamenjuje sadržaj jednog čvora slike drugim u memoriji; čuvanje nazad u.onenije podržano.