Kuvat ja liitetiedostot — Aspose.Note FOSS Python:lle

Aspose.Note FOSS for Python gives direct access to both embedded images and attached files stored inside OneNote .one osatiedostot. Sisältö on esitetty kautta Image ja AttachedFile solmutyypit.


Kuvien poiminta

Jokainen kuva OneNote-asiakirjassa esitetään Image solmulla. Käytä GetChildNodes(Image) kaikkien kuvien hakemiseen asiakirjasta rekursiivisesti:

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

Kuvan ominaisuudet

OminaisuusTyyppiKuvaus
FileName`strNone`
BytesbytesRaaka kuvatieto (formaatti vastaa alkuperäistä, esim. PNG, JPEG)
Width`floatNone`
Height`floatNone`
AlternativeTextTitle`strNone`
AlternativeTextDescription`strNone`
HyperlinkUrl`strNone`
Tagslist[NoteTag]OneNote-tunnisteet liitettynä tähän kuvaan

Tallenna kuvat turvallisilla tiedostonimillä

Kun FileName on None tai sisältää merkkejä, jotka eivät ole turvallisia tiedostojärjestelmälle, puhdista ennen tallentamista:

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)

Kuvien poiminta sivua kohti

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)

Tarkastele kuvan alt-tekstiä ja hyperlinkkejä

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)

Tunnista kuvatiedoston formaatti tavuista

Python’n imghdr moduuli (Python ≤ 3.12) tai struct moduuli voi tunnistaa kuvan muodon ensimmäisistä tavuista:

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)

Liitetiedostojen poiminta

Upotetut tiedostoliitteet tallennetaan muodossa AttachedFile solmut:

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-ominaisuudet

OminaisuusTyyppiKuvaus
FileName`strNone`
BytesbytesRaaka tiedoston sisältö
Tagslist[NoteTag]OneNote-tunnisteet liitetty tähän solmuun

Tarkastele tageja kuvissa ja liitteissä

Molemmat Image ja AttachedFile solmut tukevat OneNote-tunnisteita:

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

Yhteenveto: Image vs AttachedFile

OminaisuusImageAttachedFile
FileNameKyllä (alkuperäinen kuvan nimi)Kyllä (alkuperäinen tiedoston nimi)
BytesKuvan raakabittitTiedoston raakabittit
Width / HeightKyllä (renderöidyt mitat)Ei
AlternativeTextTitle/DescriptionKylläEi
HyperlinkUrlKylläEi
TagsKylläKyllä
Replace(node) menetelmäKylläEi

Vinkkejä

  • Varmista aina, että vältät None tiedostonimet. img.FileName on None kun tiedostolla ei ollut nimeä lähdedokumentissa.
  • img.Bytes ei koskaan None ja on aina raakabinäärinen sisältö; se voi olla nollatavuinen paikkamerkkikuville.
  • Käytä Page.GetChildNodes(Image) sen sijaan Document.GetChildNodes(Image) rajoittaaksesi poiminnan yhdelle sivulle.
  • Se Image.Replace(image) menetelmä korvaa yhden kuvan solmun sisällön toiseen in-memory; tallentaminen takaisin .one ei ole tuettu.

Katso myös

 Suomi