Vaizdai ir prisebti failai — Aspose.Note FOSS for Python

Aspose.Note FOSS for Python gives direct access to both embedded images and attached files stored inside OneNote .one skyriaus failai. Turinys yra prieinamas per Image ir AttachedFile mazgo tipų.


Vaizdų išskyrimas

Kiekvienas paveikslėlis OneNote dokumente yra atvaizduojamas kaip Image mazgas. Naudokite GetChildNodes(Image) norėdami gauti visus paveikslėlius iš dokumento rekursyviai:

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

Vaizdo savybės

SavybėTipasAprašymas
FileName`strNone`
BytesbytesNeapdoroti paveikslėlio duomenys (formatas atitinka originalą, pvz., PNG, JPEG)
Width`floatNone`
Height`floatNone`
AlternativeTextTitle`strNone`
AlternativeTextDescription`strNone`
HyperlinkUrl`strNone`
Tagslist[NoteTag]OneNote žymės, prisegtos prie šio vaizdo

Išsaugokite vaizdus su saugiais failų pavadinimais

Kai FileName yra None arba turi simbolių, kurie nėra saugūs failų sistemai, prieš išsaugojant juos išvalykite:

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)

Išskirti vaizdus iš kiekvieno puslapio

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)

Patikrinkite vaizdo alternatyvų tekstą ir hipersaitus

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)

Nustatykite vaizdo failo formatą iš baitų

Python’s imghdr modulis (Python ≤ 3.12) arba the struct modulis gali aptikti vaizdo formatą iš pirmų baitų:

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)

Prisegtų failų išskyrimas

Įterpti failų priedai saugomi kaip AttachedFile mazgai:

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 savybės

SavybėTipasAprašymas
FileName`strNone`
BytesbytesNeapdorotas failo turinys
Tagslist[NoteTag]OneNote žymės, prisegtos prie šio mazgo

Patikrinkite žymas vaizduose ir prieduose

Abu Image ir AttachedFile mazgai palaiko OneNote žymes:

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

Santrauka: Image vs AttachedFile

FunkcijaImageAttachedFile
FileNameTaip (originalus vaizdo pavadinimas)Taip (originalus failo pavadinimas)
BytesNeapdoroti paveikslėlio baitaiNeapdoroti failo baitai
Width / HeightTaip (atvaizduoti matmenys)Ne
AlternativeTextTitle/DescriptionTaipNe
HyperlinkUrlTaipNe
TagsTaipTaip
Replace(node) metodasTaipNe

Patarimai

  • Visada saugokitės nuo None failų pavadinimų. img.FileName yra None kai failas šaltinio dokumente neturėjo pavadinimo.
  • img.Bytes niekada nėra None ir visada yra neapdorotas dvejetainis turinys; tai gali būti nulinio dydžio baitų skaičius rezervuotų paveikslėlių atveju.
  • Naudokite Page.GetChildNodes(Image) vietoj Document.GetChildNodes(Image) norint apriboti išskyrimą iki vieno puslapio.
  • Šis Image.Replace(image) metodas pakeičia vieno paveikslėlio mazgo turinį kitu atmintyje; išsaugojimas atgal į .one nepalaikoma.

Žr. taip pat

 Lietuvių