Bilder och bifogade filer — Aspose.Note FOSS för Python
Aspose.Note FOSS for Python gives direct access to both embedded images and attached files stored inside OneNote .one sektionfiler. Innehållet exponeras genom Image och AttachedFile nodtyper.
Extrahera bilder
Varje bild i ett OneNote-dokument representeras av en Image nod. Använd GetChildNodes(Image) för att hämta alla bilder från dokumentet rekursivt:
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)")Bildegenskaper
| Egenskap | Typ | Beskrivning |
|---|---|---|
FileName | `str | None` |
Bytes | bytes | Rå bilddata (formatet matchar originalet, t.ex. PNG, JPEG) |
Width | `float | None` |
Height | `float | None` |
AlternativeTextTitle | `str | None` |
AlternativeTextDescription | `str | None` |
HyperlinkUrl | `str | None` |
Tags | list[NoteTag] | OneNote-taggar bifogade till den här bilden |
Spara bilder med säkra filnamn
När FileName är None eller innehåller tecken som är osäkra för filsystemet, sanera innan du sparar:
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)Extrahera bilder per sida
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)Inspektera bildens alt-text och hyperlänkar
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)Detektera bildfilformat från byte
Python’s imghdr modul (Python ≤ 3.12) eller the struct modulen kan upptäcka bildformat från de första bytena:
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)Extrahera bifogade filer
Inbäddade filbilagor lagras som AttachedFile noder:
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-egenskaper
| Egenskap | Typ | Beskrivning |
|---|---|---|
FileName | `str | None` |
Bytes | bytes | Rå filinnehåll |
Tags | list[NoteTag] | OneNote-taggar kopplade till denna nod |
Inspektera taggar på bilder och bilagor
Båda Image och AttachedFile noder stödjer OneNote-taggar:
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}")Sammanfattning: Image vs AttachedFile
| Funktion | Image | AttachedFile |
|---|---|---|
FileName | Ja (originalt bildnamn) | Ja (originalfilnamn) |
Bytes | Rå bildbytes | Rå filbytes |
Width / Height | Ja (renderade dimensioner) | Nej |
AlternativeTextTitle/Description | Ja | Nej |
HyperlinkUrl | Ja | Nej |
Tags | Ja | Ja |
Replace(node) metod | Ja | Nej |
Tips
- Var alltid vaksam mot
Nonefilnamn.img.FileNameärNonenär filen saknade namn i källdokumentet. img.Bytesär aldrigNoneoch är alltid det råa binära innehållet; det kan vara noll byte för platshållarbilder.- Använd
Page.GetChildNodes(Image)istället förDocument.GetChildNodes(Image)för att begränsa extraktionen till en enda sida. - Den
Image.Replace(image)metoden ersätter innehållet i en bildnod med en annan i minnet; sparar tillbaka till.onestöds inte.