Slike i priloženi fajlovi — Aspose.Note FOSS za Python

Aspose.Note FOSS za Python pruža direktan pristup i ugrađenim slikama i priloženim fajlovima koji su pohranjeni unutar OneNote .one sekcijskih fajlova. Sadržaj je izložen putem Image i AttachedFile tipova čvorova.


Ekstrahovanje slika

Svaka slika u OneNote dokumentu je predstavljena Image čvorom. Koristite GetChildNodes(Image) da biste rekurzivno dohvatili sve slike iz dokumenta:

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)")

Svojstva slike

SvojstvoTipOpis
FileNamestr | NoneOriginalno ime fajla sačuvano u OneNote fajlu (može biti None)
BytesbytesSirovi podaci slike (format odgovara originalu, npr. PNG, JPEG)
Widthfloat | NoneRenderisana širina u tačkama
Heightfloat | NoneRenderisana visina u tačkama
AlternativeTextTitlestr | NoneAlt tekst naslov za pristupačnost
AlternativeTextDescriptionstr | NoneAlt tekst opis
HyperlinkUrlstr | NoneURL ako je slika klikabilni hiperveza
Tagslist[NoteTag]OneNote oznake prikačene uz ovu sliku

Sačuvajte slike sa sigurnim imenima fajlova

Kada je FileName None ili sadrži znakove koji nisu sigurni za fajl sistem, očistite pre čuvanja:

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)

Ekstrakcija slika po stranici

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)

Прегледајте алтернативни текст слике и хипервезе

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)

Откривање формата слике из бајтова

Python‑ov imghdr modul (Python ≤ 3.12) ili struct modul može da otkrije format slike iz prvih bajtova:

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)

Ekstrakcija priloženih fajlova

Ugrađeni prilozi fajlova se čuvaju kao AttachedFile čvorovi:

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 Svojstva

SvojstvoTipOpis
FileNamestr | NoneOriginalno ime datoteke sačuvano u OneNote datoteci
BytesbytesSirovi sadržaj datoteke
Tagslist[NoteTag]OneNote oznake prikačene ovom čvoru

Pregledajte oznake na slikama i prilozima

Oba čvora Image i AttachedFile podržavaju OneNote oznake:

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}")

Sažetak: Image vs AttachedFile

FunkcijaImageAttachedFile
FileNameDa (originalno ime slike)Da (originalno ime fajla)
BytesSirovi bajtovi slikeSirovi bajtovi fajla
Width / HeightDa (prikazane dimenzije)Ne
AlternativeTextTitle/DescriptionDaNe
HyperlinkUrlDaNe
TagsDaDa
Replace(node) metodDaNe

Saveti

  • Uvek se zaštitite od None imena fajlova. img.FileName je None kada fajl nije imao ime u izvornom dokumentu.
  • img.Bytes nikada nije None i uvek je sirovi binarni sadržaj; može biti nula bajtova za rezervne slike.
  • Koristite Page.GetChildNodes(Image) umesto Document.GetChildNodes(Image) da ograničite ekstrakciju na jednu stranicu.
  • Metod Image.Replace(image) zamenjuje sadržaj jednog čvora slike drugim u memoriji; čuvanje nazad u .one nije podržano.

Vidi takođe

 Српски