Bilder und angehängte 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 Abschnittsdateien. Inhalte werden über die Image und AttachedFile Knotentypen.
Bilder extrahieren
Jedes Bild in einem OneNote-Dokument wird durch einen Image Knoten dargestellt. Verwenden Sie GetChildNodes(Image) um alle Bilder aus dem Dokument rekursiv abzurufen:
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)")Bildeigenschaften
| Eigenschaft | Typ | Beschreibung |
|---|---|---|
FileName | `str | None` |
Bytes | bytes | Rohbilddaten (Format entspricht dem Original, z. B. PNG, JPEG) |
Width | `float | None` |
Height | `float | None` |
AlternativeTextTitle | `str | None` |
AlternativeTextDescription | `str | None` |
HyperlinkUrl | `str | None` |
Tags | list[NoteTag] | OneNote-Tags, die an diesem Bild angehängt sind |
Bilder mit sicheren Dateinamen speichern
Wann FileName ist None oder enthält Zeichen, die für das Dateisystem unsicher sind, bereinigen Sie vor dem Speichern:
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)Alt-Text und Hyperlinks von Bildern prüfen
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 imghdr Modul (Python ≤ 3.12) oder das struct Modul kann das Bildformat anhand der ersten Bytes 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)Angehängte Dateien extrahieren
Eingebettete Dateianhänge werden gespeichert 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)")Eigenschaften von AttachedFile
| Eigenschaft | Typ | Beschreibung |
|---|---|---|
FileName | `str | None` |
Bytes | bytes | Rohdateiinhalt |
Tags | list[NoteTag] | OneNote-Tags, die an diesem Knoten angehängt sind |
Tags bei Bildern und Anhängen prüfen
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: Image vs AttachedFile
| Funktion | Image | AttachedFile |
|---|---|---|
FileName | Ja (ursprünglicher Bildname) | Ja (ursprünglicher Dateiname) |
Bytes | Roh-Bildbytes | Roh-Dateibytes |
Width / Height | Ja (gerenderte Abmessungen) | Nein |
AlternativeTextTitle/Description | Ja | Nein |
HyperlinkUrl | Ja | Nein |
Tags | Ja | Ja |
Replace(node) Methode | Ja | Nein |
Tipps
- Schütze dich immer vor
NoneDateinamen.img.FileNameistNonewenn die Datei im Quelldokument keinen Namen hatte. img.Bytesist nieNoneund ist immer der rohe Binärinhalt; er kann null Bytes für Platzhalterbilder sein.- Verwenden
Page.GetChildNodes(Image)stattDocument.GetChildNodes(Image)um die Extraktion auf eine einzelne Seite zu beschränken. - Der
Image.Replace(image)Methode ersetzt den Inhalt eines Bildknotens durch einen anderen im Speicher; das Zurückspeichern nach.onewird nicht unterstützt.