Imagens e arquivos anexados Aspose.Note FOSS para Python
Aspose.Note FOSS for Python gives direct access to both embedded images and attached files stored inside OneNote .one Este guia mostra como extrair bytes de imagem, inspecionar metadados de imágenes e salvar dados de arquivo anexado ao disco usando o Image e a) AttachedFile tipos de nó.
Extração de imagens
Cada imagem num documento do OneNote é representada por um símbolo de identificação. Image Nodo. Use GetChildNodes(Image) Para recuperar todas as imagens do documento de forma recursiva:
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)")Propriedades da imagem
| Propriedade | Tipo de veículo: | Descrição: |
|---|---|---|
FileName | `str | None` |
Bytes | bytes | Dados de imagem em bruto (formato correspondente ao original, por exemplo PNG, JPEG) |
Width | `float | None` |
Height | `float | None` |
AlternativeTextTitle | `str | None` |
AlternativeTextDescription | `str | None` |
HyperlinkUrl | `str | None` |
Tags | list[NoteTag] | Tags do OneNote anexados a esta imagem |
Salvar imagens com nomes de arquivo seguros
Quando ? FileName é: None ou contém caracteres que não são seguros para o sistema de ficheiros, limpar o nome antes de abrir um manuseio de arquivo:
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)Extrair imagens por página
Iterar páginas com: GetChildNodes(Page) E chama-me. GetChildNodes(Image) em cada página para abranger a extração de imagens para slides individuais:
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)Inspecionar imagem Alt Texto e hiperlinks
Leia o artigo 85.o. AlternativeTextTitle, AlternativeTextDescription, e HyperlinkUrl Propriedades de cada um dos Estados-Membros Image Nodo para aceder a metadados de acessibilidade e ligação dos alvos:
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)Detectar formato de arquivo de imagem a partir de bytes
Python’s (Python) imghdr módulo (Python ≤ 3.12) ou o struct módulo pode detectar formato de imagem a partir dos primeiros bytes:
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)Extrair arquivos anexados
Os anexos de ficheiros incorporados são armazenados como: AttachedFile Nomes. usar GetChildNodes(AttachedFile) para recuperar todos os anexos do documento e escrever cada arquivo de bytes em bruto no disco:
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)")Propriedades do arquivo anexado
| Propriedade | Tipo de veículo: | Descrição: |
|---|---|---|
FileName | `str | None` |
Bytes | bytes | Conteúdo do ficheiro em bruto |
Tags | list[NoteTag] | Tags do OneNote anexados a este nó |
Verifique as etiquetas nas imagens e anexos
Ambos. Image e a) AttachedFile Os nós suportam as etiquetas do OneNote. Iterar o .Tags lista em cada nó para ler o Label e marca de tempo de conclusão para cada etiqueta aplicada no documento-fonte:
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}")Resumo: Imagem vs. AttachedFile
| Características | Image | AttachedFile |
|---|---|---|
FileName | Sim (nome da imagem original) | Sim (nome do ficheiro original) |
Bytes | Bytes de imagem bruta | Bytes de arquivo bruto |
Width / Height | Sim (dimensões representadas) | Não, não. |
AlternativeTextTitle/Description | - Sim , sim . | Não, não. |
HyperlinkUrl | - Sim , sim . | Não, não. |
Tags | - Sim , sim . | - Sim , sim . |
Replace(node) método de | - Sim , sim . | Não, não. |
Dicas de trabalho
- Sempre cuidado contra …
NoneNome dos ficheiros.img.FileNameé:Nonequando o ficheiro não tinha nome no documento de origem. img.BytesNunca é .Nonee é sempre o conteúdo binário bruto; pode ser zero bytes para imagens de marcador de lugar.- Utilização:
Page.GetChildNodes(Image)em vez de:Document.GetChildNodes(Image)para ampliar a extracção numa única página. - A Comissão
Image.Replace(image)método substitui o conteúdo de um nó imagem com outro em-memória; salvando para trás a.onenão é suportado.