Bilder og vedlagte filer — Aspose.Note FOSS for Python
Aspose.Note FOSS for Python gives direct access to both embedded images and attached files stored inside OneNote .one seksjonsfiler. Innholdet eksponeres gjennom Image og AttachedFile nodetyper.
Uttrekking av bilder
Hvert bilde i et OneNote-dokument er representert av en Image node. Bruk GetChildNodes(Image) for å hente alle bilder fra 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)")Bildeegenskaper
| Egenskap | Type | Beskrivelse |
|---|---|---|
FileName | `str | None` |
Bytes | bytes | Rå bildedata (formatet samsvarer med originalen, f.eks. PNG, JPEG) |
Width | `float | None` |
Height | `float | None` |
AlternativeTextTitle | `str | None` |
AlternativeTextDescription | `str | None` |
HyperlinkUrl | `str | None` |
Tags | list[NoteTag] | OneNote‑tagger knyttet til dette bildet |
Lagre bilder med sikre filnavn
Når FileName er None eller inneholder tegn som er usikre for filsystemet, rens før lagring:
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)Uttrekking av bilder per side
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)Undersøk bildets alt-tekst og hyperkoblinger
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)Oppdag bildefilformat fra bytes
Python’s imghdr modul (Python ≤ 3.12) eller struct modulen kan oppdage bildeformat fra de første byte:
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)Uttrekking av vedlagte filer
Innebygde filvedlegg lagres 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 | Type | Beskrivelse |
|---|---|---|
FileName | `str | None` |
Bytes | bytes | Rå filinnhold |
Tags | list[NoteTag] | OneNote‑tagger knyttet til denne noden |
Undersøk tagger på bilder og vedlegg
Begge Image og AttachedFile noder støtter OneNote‑tagger:
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}")Oppsummering: Image vs AttachedFile
| Funksjon | Image | AttachedFile |
|---|---|---|
FileName | Ja (originalt bildenavn) | Ja (originalt filnavn) |
Bytes | Rå bildebytes | Rå filbytes |
Width / Height | Ja (renderede dimensjoner) | Nei |
AlternativeTextTitle/Description | Ja | Nei |
HyperlinkUrl | Ja | Nei |
Tags | Ja | Ja |
Replace(node) metode | Ja | Nei |
Tips
- Alltid vær på vakt mot
Nonefilnavn.img.FileNameerNonenår filen ikke hadde noe navn i kildedokumentet. img.Byteser aldriNoneog er alltid det rå binære innholdet; den kan være null byte for plassholder‑bilder.- Bruk
Page.GetChildNodes(Image)i stedet forDocument.GetChildNodes(Image)for å begrense uttrekket til en enkelt side. - Den
Image.Replace(image)metoden erstatter innholdet i en bildenode med en annen i minnet; lagring tilbake til.onestøttes ikke.