Imej dan Fail Dilampirkan — Aspose.Note FOSS untuk Python
Aspose.Note FOSS for Python gives direct access to both embedded images and attached files stored inside OneNote .one fail seksyen. Kandungan didedahkan melalui the Image dan AttachedFile jenis nod.
Mengekstrak Imej
Setiap imej dalam dokumen OneNote diwakili oleh Image nod. Gunakan GetChildNodes(Image) untuk mendapatkan semua imej daripada dokumen secara rekursif:
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)")Sifat Imej
| Sifat | Jenis | Keterangan |
|---|---|---|
FileName | `str | None` |
Bytes | bytes | Data imej mentah (format sepadan dengan asal, contohnya PNG, JPEG) |
Width | `float | None` |
Height | `float | None` |
AlternativeTextTitle | `str | None` |
AlternativeTextDescription | `str | None` |
HyperlinkUrl | `str | None` |
Tags | list[NoteTag] | Tag OneNote yang dilampirkan pada imej ini |
Simpan Imej dengan Nama Fail Selamat
Apabila FileName adalah None atau mengandungi aksara yang tidak selamat untuk sistem fail, bersihkan sebelum menyimpan:
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)Mengekstrak Imej Per Halaman
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)Periksa Teks Alt Imej dan Pautan Hiper
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)Kesan Format Fail Imej daripada Bait
Python’s imghdr modul (Python ≤ 3.12) atau struct modul dapat mengesan format imej daripada bait pertama:
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)Mengekstrak Fail Lampiran
Lampiran fail terbenam disimpan sebagai AttachedFile nod:
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)")Sifat AttachedFile
| Sifat | Jenis | Keterangan |
|---|---|---|
FileName | `str | None` |
Bytes | bytes | Kandungan fail mentah |
Tags | list[NoteTag] | Tag OneNote yang dilampirkan pada nod ini |
Periksa Tag pada Imej dan Lampiran
Kedua-dua Image dan AttachedFile nod menyokong tag 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}")Ringkasan: Image vs AttachedFile
| Ciri | Image | AttachedFile |
|---|---|---|
FileName | Ya (nama imej asal) | Ya (nama fail asal) |
Bytes | Byte imej mentah | Byte fail mentah |
Width / Height | Ya (dimensi terrender) | Tidak |
AlternativeTextTitle/Description | Ya | Tidak |
HyperlinkUrl | Ya | Tidak |
Tags | Ya | Ya |
Replace(node) kaedah | Ya | Tidak |
Petua
- Sentiasa berjaga-jaga terhadap
Nonenama fail.img.FileNameadalahNoneapabila fail tidak mempunyai nama dalam dokumen sumber. img.Bytestidak pernahNonedan sentiasa merupakan kandungan binari mentah; ia boleh menjadi sifar bait untuk imej pemegang tempat.- Gunakan
Page.GetChildNodes(Image)daripadaDocument.GetChildNodes(Image)untuk mengehadkan pengekstrakan kepada satu halaman. - Yang
Image.Replace(image)kaedah menggantikan kandungan satu nod imej dengan yang lain dalam memori; menyimpan kembali ke.onetidak disokong.