Imagini și fișiere atașate — Aspose.Note FOSS pentru Python
Aspose.Note FOSS for Python gives direct access to both embedded images and attached files stored inside OneNote .one fișiere de secțiune. Conținutul este expus prin Image și AttachedFile tipuri de noduri.
Extracție de imagini
Fiecare imagine dintr-un document OneNote este reprezentată de o Image nod. Folosiți GetChildNodes(Image) pentru a prelua toate imaginile din document recursiv:
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)")Proprietăți imagine
| Proprietate | Tip | Descriere |
|---|---|---|
FileName | `str | None` |
Bytes | bytes | Date brute ale imaginii (formatul corespunde originalului, de ex. PNG, JPEG) |
Width | `float | None` |
Height | `float | None` |
AlternativeTextTitle | `str | None` |
AlternativeTextDescription | `str | None` |
HyperlinkUrl | `str | None` |
Tags | list[NoteTag] | Etichete OneNote atașate acestei imagini |
Salvează imaginile cu nume de fișier sigure
Când FileName este None sau conține caractere nesigure pentru sistemul de fișiere, curăță înainte de salvare:
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)Extrage imagini pe pagină
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)Inspectează textul alternativ al imaginii și hyperlink-urile
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)Detectează formatul fișierului imagine din octeți
Python’s imghdr modul (Python ≤ 3.12) sau the struct modulul poate detecta formatul imaginii din primii octeți:
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)Extracția fișierelor atașate
Atașamentele de fișiere încorporate sunt stocate ca AttachedFile noduri:
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)")Proprietăți AttachedFile
| Proprietate | Tip | Descriere |
|---|---|---|
FileName | `str | None` |
Bytes | bytes | Conținut brut al fișierului |
Tags | list[NoteTag] | Etichete OneNote atașate acestui nod |
Inspectează etichetele pe imagini și atașamente
Ambele Image și AttachedFile nodurile suportă etichete 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}")Rezumat: Image vs AttachedFile
| Funcționalitate | Image | AttachedFile |
|---|---|---|
FileName | Da (numele original al imaginii) | Da (numele original al fișierului) |
Bytes | Octeți brut ai imaginii | Octeți brut ai fișierului |
Width / Height | Da (dimensiuni redate) | Nu |
AlternativeTextTitle/Description | Da | Nu |
HyperlinkUrl | Da | Nu |
Tags | Da | Da |
Replace(node) metodă | Da | Nu |
Sfaturi
- Fii întotdeauna precaut față de
Nonenume de fișiere.img.FileNameesteNonecând fișierul nu avea nume în documentul sursă. img.Bytesnu este niciodatăNoneși este întotdeauna conținutul binar brut; poate avea zero octeți pentru imagini de substituție.- Utilizați
Page.GetChildNodes(Image)în loc deDocument.GetChildNodes(Image)pentru a restrânge extragerea la o singură pagină. - The
Image.Replace(image)metoda înlocuiește conținutul unui nod de imagine cu altul în memorie; salvarea înapoi la.onenu este suportat.