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

EgenskapTypBeskrivning
FileName`strNone`
BytesbytesRå bilddata (formatet matchar originalet, t.ex. PNG, JPEG)
Width`floatNone`
Height`floatNone`
AlternativeTextTitle`strNone`
AlternativeTextDescription`strNone`
HyperlinkUrl`strNone`
Tagslist[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

EgenskapTypBeskrivning
FileName`strNone`
BytesbytesRå filinnehåll
Tagslist[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

FunktionImageAttachedFile
FileNameJa (originalt bildnamn)Ja (originalfilnamn)
BytesRå bildbytesRå filbytes
Width / HeightJa (renderade dimensioner)Nej
AlternativeTextTitle/DescriptionJaNej
HyperlinkUrlJaNej
TagsJaJa
Replace(node) metodJaNej

Tips

  • Var alltid vaksam mot None filnamn. img.FileName är None när filen saknade namn i källdokumentet.
  • img.Bytes är aldrig None och ä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ör Document.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 .one stöds inte.

Se även

 Svenska