Images et fichiers joints — Aspose.Note FOSS pour Python
Aspose.Note FOSS for Python gives direct access to both embedded images and attached files stored inside OneNote .one fichiers de section. Le contenu est exposé via le Image et AttachedFile types de nœuds.
Extraction d’images
Chaque image dans un document OneNote est représentée par un Image nœud. Utilisez GetChildNodes(Image) pour récupérer toutes les images du document de manière récursive :
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)")Propriétés de l’image
| Propriété | Type | Description |
|---|---|---|
FileName | `str | None` |
Bytes | bytes | Données d’image brutes (le format correspond à l’original, par ex. PNG, JPEG) |
Width | `float | None` |
Height | `float | None` |
AlternativeTextTitle | `str | None` |
AlternativeTextDescription | `str | None` |
HyperlinkUrl | `str | None` |
Tags | list[NoteTag] | Étiquettes OneNote attachées à cette image |
Enregistrer les images avec des noms de fichiers sûrs
Quand FileName est None ou contient des caractères dangereux pour le système de fichiers, désinfectez avant d’enregistrer :
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)Extraire les images par page
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)Inspecter le texte alternatif et les hyperliens des images
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)Détecter le format de fichier image à partir des octets
Python’s imghdr module (Python ≤ 3.12) ou le struct Le module peut détecter le format d’image à partir des premiers octets :
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)Extraction des fichiers joints
Les pièces jointes de fichiers intégrés sont stockées en tant que AttachedFile nœuds :
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)")Propriétés de AttachedFile
| Propriété | Type | Description |
|---|---|---|
FileName | `str | None` |
Bytes | bytes | Contenu brut du fichier |
Tags | list[NoteTag] | Étiquettes OneNote attachées à ce nœud |
Inspecter les balises sur les images et les pièces jointes
Les deux Image et AttachedFile les nœuds prennent en charge les balises OneNote :
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}")Résumé : Image vs AttachedFile
| Fonctionnalité | Image | AttachedFile |
|---|---|---|
FileName | Oui (nom d’image original) | Oui (nom de fichier original) |
Bytes | Octets bruts d’image | Octets bruts du fichier |
Width / Height | Oui (dimensions rendues) | Non |
AlternativeTextTitle/Description | Oui | Non |
HyperlinkUrl | Oui | Non |
Tags | Oui | Oui |
Replace(node) méthode | Oui | Non |
Conseils
- Soyez toujours vigilant contre
Nonenoms de fichiers.img.FileNameestNonelorsque le fichier n’avait pas de nom dans le document source. img.Bytesn’est jamaisNoneet est toujours le contenu binaire brut ; il peut être de zéro octet pour les images de substitution.- Utilisez
Page.GetChildNodes(Image)au lieu deDocument.GetChildNodes(Image)pour limiter l’extraction à une seule page. - Le
Image.Replace(image)la méthode remplace le contenu d’un nœud d’image par un autre en mémoire ; l’enregistrement vers.onen’est pas pris en charge.