Attēli un Pievienotie faili — Aspose.Note FOSS priekš Python
Aspose.Note FOSS for Python gives direct access to both embedded images and attached files stored inside OneNote .one sadaļas faili. Saturs tiek atklāts caur the Image un AttachedFile mezglu tipiem.
Attēlu izgūšana
Katrs attēls OneNote dokumentā tiek pārstāvēts ar an Image mezglu. Izmantojiet GetChildNodes(Image) lai rekursīvi izgūtu visus attēlus no dokumenta:
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)")Attēla īpašības
| Īpašība | Tips | Apraksts |
|---|---|---|
FileName | `str | None` |
Bytes | bytes | Neapstrādāti attēla dati (formāts atbilst oriģinālam, piemēram, PNG, JPEG) |
Width | `float | None` |
Height | `float | None` |
AlternativeTextTitle | `str | None` |
AlternativeTextDescription | `str | None` |
HyperlinkUrl | `str | None` |
Tags | list[NoteTag] | OneNote birkas pievienotas šim attēlam |
Saglabājiet attēlus ar drošiem failu nosaukumiem
Kad FileName ir None vai satur rakstzīmes, kas nav drošas failu sistēmai, attīriet pirms saglabāšanas:
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)Izgūt attēlus lapas pa lapai
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)Pārbaudiet attēla alternatīvo tekstu un hipersaites
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)Noteikt attēla faila formātu no baitiem
Python’s imghdr modulis (Python ≤ 3.12) vai struct modulis var noteikt attēla formātu no pirmajiem baitiem:
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)Pievienoto failu izgūšana
Iegultie failu pielikumi tiek glabāti kā AttachedFile mezgli:
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)")AttachedFile īpašības
| Īpašība | Tips | Apraksts |
|---|---|---|
FileName | `str | None` |
Bytes | bytes | Neapstrādāts faila saturs |
Tags | list[NoteTag] | OneNote birkas pievienotas šim mezglam |
Pārbaudiet birkas attēlos un pievienojumos
Abas Image un AttachedFile mezgli atbalsta OneNote birkas:
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}")Kopsavilkums: Image vs AttachedFile
| Funkcija | Image | AttachedFile |
|---|---|---|
FileName | Jā (oriģinālais attēla nosaukums) | Jā (oriģinālais faila nosaukums) |
Bytes | Neapstrādāti attēla baiti | Neapstrādāti faila baiti |
Width / Height | Jā (renderētie izmēri) | Nē |
AlternativeTextTitle/Description | Jā | Nē |
HyperlinkUrl | Jā | Nē |
Tags | Jā | Jā |
Replace(node) metode | Jā | Nē |
Padomi
- Vienmēr aizsargājieties pret
Nonefailu nosaukumiem.img.FileNameirNonekad failam nebija nosaukuma avota dokumentā. img.Bytesnekad navNoneun vienmēr ir neapstrādāts binārais saturs; tas var būt nulle baitu viettura attēliem.- Izmantojiet
Page.GetChildNodes(Image)nevisDocument.GetChildNodes(Image)lai ierobežotu izguvi uz vienu lapu. - Šis
Image.Replace(image)metode aizstāj viena attēla mezgla saturu ar citu in-memory; saglabāšana atpakaļ uz.onenav atbalstīts.