Obrazy a přiložené soubory Aspose.Note FOSS pro Python

Aspose.Note FOSS for Python gives direct access to both embedded images and attached files stored inside OneNote .one Obsah je vystaven prostřednictvím Image a) AttachedFile typy uzlů.


Vytvoření obrázků

Každý obrázek v dokumentu OneNote je reprezentován formou: Image Použijte. GetChildNodes(Image) k rekurzivnímu získání všech obrázků z dokumentu:

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

Vlastnosti obrázku

VlastnictvíTyp:Popis:
FileName`strNone`
BytesbytesPrvní data obrazu (formát odpovídá originálu, např. PNG, JPEG)
Width`floatNone`
Height`floatNone`
AlternativeTextTitle`strNone`
AlternativeTextDescription`strNone`
HyperlinkUrl`strNone`
Tagslist[NoteTag]OneNote tagové připojené k tomuto obrázku

Uložení obrázků s bezpečnými názvy souborů

Kdy? FileName je: None nebo obsahuje znaky, které nejsou bezpečné pro souborový systém. Před uložením dezinfikovat:

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)

Výběr obrázků na stránku

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)

Zkontrolovat obrázek a hypertextové odkazy

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)

Zjistit formát souboru snímku z bajtů

Pythonův. imghdr modul (Python ≤ 3.12) nebo struct modul dokáže rozpoznat formát snímku od prvních bajtů:

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)

Vytáhnout přiložené soubory

Vestavěné soubory jsou uložené jako: AttachedFile uzly:

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

Vlastnosti souboru připojeného

VlastnictvíTyp:Popis:
FileName`strNone`
BytesbytesNeprodlený obsah souboru
Tagslist[NoteTag]OneNote značky připojené k tomuto uzlu

Zkontrolujte značky na obrázcích a přílohách

Oba dva. Image a) AttachedFile uzly podporují OneNote tagy:

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

Zhrnutí: Obraz vs. Příložený soubor

Významné vlastnostiImageAttachedFile
FileNameAno (jméno původního obrázku)Ano (původní název souboru)
BytesByty surového snímkuPrvní byty souboru
Width / HeightAno (vyjádřené rozměry)Ne, ne.
AlternativeTextTitle/DescriptionAno , ano .Ne, ne.
HyperlinkUrlAno , ano .Ne, ne.
TagsAno , ano .Ano , ano .
Replace(node) metodaAno , ano .Ne, ne.

Tipy.

  • Vždy se střež proti … None jména souborů. img.FileName je: None když soubor neměl v zdrojovém dokumentu žádný název.
  • img.Bytes Nikdy není. None a je vždy surový binární obsah; může být nulové bajty pro místo držící obrázky.
  • Použití: Page.GetChildNodes(Image) místo: Document.GetChildNodes(Image) Pro rozsah výběru na jednu stránku.
  • Úřad pro bezpečnost a ochranu zdraví Image.Replace(image) metoda nahrazuje obsah jednoho obrazového uzlu jiným v paměti; ukládání zpět na .one není podporována.

Viz také:

 Čeština