Attēli un Pievienotie faili — Aspose.Note FOSS priekš Python

Aspose.Note FOSS for Python gives direct access to both embedded images and attached files stored inside OneNote .one sadaļas faili. Saturs tiek atklāts caur the Image un AttachedFile mezglu tipiem.


Attēlu izgūšana

Katrs attēls OneNote dokumentā tiek pārstāvēts ar an Image mezglu. Izmantojiet GetChildNodes(Image) lai rekursīvi izgūtu visus attēlus no 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)")

Attēla īpašības

ĪpašībaTipsApraksts
FileName`strNone`
BytesbytesNeapstrādāti attēla dati (formāts atbilst oriģinālam, piemēram, PNG, JPEG)
Width`floatNone`
Height`floatNone`
AlternativeTextTitle`strNone`
AlternativeTextDescription`strNone`
HyperlinkUrl`strNone`
Tagslist[NoteTag]OneNote birkas pievienotas šim attēlam

Saglabājiet attēlus ar drošiem failu nosaukumiem

Kad FileName ir None vai satur rakstzīmes, kas nav drošas failu sistēmai, attīriet pirms saglabāšanas:

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)

Izgūt attēlus lapas pa lapai

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)

Pārbaudiet attēla alternatīvo tekstu un hipersaites

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)

Noteikt attēla faila formātu no baitiem

Python’s imghdr modulis (Python ≤ 3.12) vai struct modulis var noteikt attēla formātu no pirmajiem baitiem:

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)

Pievienoto failu izgūšana

Iegultie failu pielikumi tiek glabāti kā AttachedFile mezgli:

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 īpašības

ĪpašībaTipsApraksts
FileName`strNone`
BytesbytesNeapstrādāts faila saturs
Tagslist[NoteTag]OneNote birkas pievienotas šim mezglam

Pārbaudiet birkas attēlos un pievienojumos

Abas Image un AttachedFile mezgli atbalsta OneNote birkas:

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

Kopsavilkums: Image vs AttachedFile

FunkcijaImageAttachedFile
FileNameJā (oriģinālais attēla nosaukums)Jā (oriģinālais faila nosaukums)
BytesNeapstrādāti attēla baitiNeapstrādāti faila baiti
Width / HeightJā (renderētie izmēri)
AlternativeTextTitle/Description
HyperlinkUrl
Tags
Replace(node) metode

Padomi

  • Vienmēr aizsargājieties pret None failu nosaukumiem. img.FileName ir None kad failam nebija nosaukuma avota dokumentā.
  • img.Bytes nekad nav None un vienmēr ir neapstrādāts binārais saturs; tas var būt nulle baitu viettura attēliem.
  • Izmantojiet Page.GetChildNodes(Image) nevis Document.GetChildNodes(Image) lai ierobežotu izguvi uz vienu lapu.
  • Šis Image.Replace(image) metode aizstāj viena attēla mezgla saturu ar citu in-memory; saglabāšana atpakaļ uz .one nav atbalstīts.

Skatīt arī

 Latviešu