Bilder und beigefügte Dateien Aspose.Note FOSS für Python

Aspose.Note FOSS for Python gives direct access to both embedded images and attached files stored inside OneNote .one Inhalte werden über die Image und . AttachedFile Knotenarten.


Bilder extrahieren

Jedes Bild in einem OneNote-Dokument wird durch eine Image Knoten. Verwenden Sie GetChildNodes(Image) alle Bilder aus dem Dokument rekursiv abrufen:

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

Bild-Eigenschaften

Immobilien und VermögenswerteTyp derBeschreibung
FileName`strNone`
BytesbytesRohbilddaten (Format entspricht dem Original, z. B. PNG oder JPEG)
Width`floatNone`
Height`floatNone`
AlternativeTextTitle`strNone`
AlternativeTextDescription`strNone`
HyperlinkUrl`strNone`
Tagslist[NoteTag]OneNote-Tags, die an dieses Bild angebracht sind

Bilder mit sicheren Dateinamen speichern

Wann ? FileName ist . None oder enthält Zeichen, die für das Dateisystem unsicher sind. Sanitieren Sie vor der Speicherung:

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)

Bilder pro Seite extrahieren

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)

Überprüfen von Bild-Alttext und Hyperlinks

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)

Bilddateiformat aus Bytes erkennen

Python’s ist ein imghdr Modul (Python ≤ 3.12) oder die struct Modul kann Bildformat von den ersten Bytes an erkennen:

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)

Beigefügte Dateien extrahieren

Eingebettete Dateiauflagen werden als AttachedFile Knoten:

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

BeigefügteDatei-Eigenschaften

Immobilien und VermögenswerteTyp derBeschreibung
FileName`strNone`
BytesbytesRohdateiinhalt
Tagslist[NoteTag]OneNote-Tags, die an diesen Knoten angeschlossen sind

Überprüfen Sie die Tags von Bildern und Anhängen

Beide . Image und . AttachedFile Knoten unterstützen OneNote-Tags:

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

Zusammenfassung: Bild gegen AnlageDatei

MerkmaleImageAttachedFile
FileNameJa (Originalbezeichnung des Bildes)Ja (ursprünglicher Dateiname)
BytesRohbild-BytesRohdatei-Bytes
Width / HeightJa (Gestaltungsmaße)- Nein .
AlternativeTextTitle/Description- Ja , das ist gut .- Nein .
HyperlinkUrl- Ja , das ist gut .- Nein .
Tags- Ja , das ist gut .- Ja , das ist gut .
Replace(node) Methode- Ja , das ist gut .- Nein .

Tipps für die Kinder

  • Immer vorsichtig sein. None Dateienamen. img.FileName ist . None wenn die Datei im Quelldokument keinen Namen hatte.
  • img.Bytes ist nie None und ist immer der Roh-Binär Inhalt; es kann Null Bytes für Platzhalter Bilder sein.
  • Verwendung Page.GetChildNodes(Image) statt der Document.GetChildNodes(Image) Umfang der Extraktion auf eine einzelne Seite.
  • Die Image.Replace(image) Methode ersetzt den Inhalt eines Bildknoten mit einem anderen in-Memory; Speichern zurück zu .one wird nicht unterstützt.

Siehe auch:

 Deutsch