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

EgenskapTypeBeskrivelse
FileName`strNone`
BytesbytesRå bildedata (formatet samsvarer med originalen, f.eks. PNG, JPEG)
Width`floatNone`
Height`floatNone`
AlternativeTextTitle`strNone`
AlternativeTextDescription`strNone`
HyperlinkUrl`strNone`
Tagslist[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

EgenskapTypeBeskrivelse
FileName`strNone`
BytesbytesRå filinnhold
Tagslist[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

FunksjonImageAttachedFile
FileNameJa (originalt bildenavn)Ja (originalt filnavn)
BytesRå bildebytesRå filbytes
Width / HeightJa (renderede dimensjoner)Nei
AlternativeTextTitle/DescriptionJaNei
HyperlinkUrlJaNei
TagsJaJa
Replace(node) metodeJaNei

Tips

  • Alltid vær på vakt mot None filnavn. img.FileName er None når filen ikke hadde noe navn i kildedokumentet.
  • img.Bytes er aldri None og er alltid det rå binære innholdet; den kan være null byte for plassholder‑bilder.
  • Bruk Page.GetChildNodes(Image) i stedet for Document.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 .one støttes ikke.

Se også

 Norsk