Imagini și fișiere atașate — Aspose.Note FOSS pentru Python

Aspose.Note FOSS for Python gives direct access to both embedded images and attached files stored inside OneNote .one fișiere de secțiune. Conținutul este expus prin Image și AttachedFile tipuri de noduri.


Extracție de imagini

Fiecare imagine dintr-un document OneNote este reprezentată de o Image nod. Folosiți GetChildNodes(Image) pentru a prelua toate imaginile din document recursiv:

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

Proprietăți imagine

ProprietateTipDescriere
FileName`strNone`
BytesbytesDate brute ale imaginii (formatul corespunde originalului, de ex. PNG, JPEG)
Width`floatNone`
Height`floatNone`
AlternativeTextTitle`strNone`
AlternativeTextDescription`strNone`
HyperlinkUrl`strNone`
Tagslist[NoteTag]Etichete OneNote atașate acestei imagini

Salvează imaginile cu nume de fișier sigure

Când FileName este None sau conține caractere nesigure pentru sistemul de fișiere, curăță înainte de salvare:

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)

Extrage imagini pe pagină

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)

Inspectează textul alternativ al imaginii și hyperlink-urile

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)

Detectează formatul fișierului imagine din octeți

Python’s imghdr modul (Python ≤ 3.12) sau the struct modulul poate detecta formatul imaginii din primii octeți:

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)

Extracția fișierelor atașate

Atașamentele de fișiere încorporate sunt stocate ca AttachedFile noduri:

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

Proprietăți AttachedFile

ProprietateTipDescriere
FileName`strNone`
BytesbytesConținut brut al fișierului
Tagslist[NoteTag]Etichete OneNote atașate acestui nod

Inspectează etichetele pe imagini și atașamente

Ambele Image și AttachedFile nodurile suportă etichete OneNote:

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

Rezumat: Image vs AttachedFile

FuncționalitateImageAttachedFile
FileNameDa (numele original al imaginii)Da (numele original al fișierului)
BytesOcteți brut ai imaginiiOcteți brut ai fișierului
Width / HeightDa (dimensiuni redate)Nu
AlternativeTextTitle/DescriptionDaNu
HyperlinkUrlDaNu
TagsDaDa
Replace(node) metodăDaNu

Sfaturi

  • Fii întotdeauna precaut față de None nume de fișiere. img.FileName este None când fișierul nu avea nume în documentul sursă.
  • img.Bytes nu este niciodată None și este întotdeauna conținutul binar brut; poate avea zero octeți pentru imagini de substituție.
  • Utilizați Page.GetChildNodes(Image) în loc de Document.GetChildNodes(Image) pentru a restrânge extragerea la o singură pagină.
  • The Image.Replace(image) metoda înlocuiește conținutul unui nod de imagine cu altul în memorie; salvarea înapoi la .one nu este suportat.

Vezi și

 Română