Descrição geral Aspose.Note FOSS para Python
Aspose.Note FOSS for Python (package aspose-note, versão 26.3.2) fornece uma API Python para leitura do Microsoft OneNote . .one Todos os recursos listados abaixo são verificados contra o código fonte do repositório, README e scripts de exemplo.
Instalação e configuração
Instalar a partir do PyPI:
pip install aspose-notePara o apoio à exportação de PDF (requer ReportLab):
pip install aspose-noteRequisitos: Python 3.10 ou posterior. Não é necessária instalação do Microsoft Office.
Características e capacidades
.one Carregamento de ficheiro
Carregar arquivos de seção do Microsoft OneNote a partir de um caminho de arquivo ou qualquer fluxo binário (handle de ficheiro, io.BytesIO, corpo de resposta HTTP, fluxo de armazenamento em nuvem).
Document.FileFormatfornece uma indicação de melhor esforço da versão do formato de arquivo OneNote (OneNo te2010, One No teOnline ou One Note 2007),- Carregamento baseado em fluxo elimina I/O de disco para fluxos de trabalho na memória ou rede
LoadOptions.LoadHistoryControlo de sinalização se o histórico da página está incluído no DOM
from aspose.note import Document
##From a file path
doc = Document("notebook.one")
##From a binary stream
with open("notebook.one", "rb") as f:
doc = Document(f)Documentos DOM de travessia
O documento completo do OneNote é exposto como uma árvore de objetos Python tipados. Cada nó herda da base de dados e o código-fonto, que são os elementos que compõem a base. Node ou a) CompositeNode:
Document:Rótulo; expõeDisplayName,CreationTime,FileFormatPage: filho direto de:Document;expõe;Title,Author,CreationTime,LastModifiedTime,LevelTitle: expõeTitleText,TitleDate,TitleTime(todos os produtos)RichTextNúmeros de dados (nodes)Outline: recipiente posicional com:HorizontalOffset,VerticalOffset,MaxWidth,MaxHeight,MinWidth,ReservedWidth,IndentPositionOutlineElement: recipiente de folhas; exposiçõesNumberList
Métodos de navegação em CompositeNode:
| Método / Propriedade | Descrição: |
|---|---|
FirstChild, LastChild | Acesso direto de crianças |
GetChildNodes(Type) | Pesquisa recorrente, filtrada por tipo de texto |
AppendChildLast(node) | Adicionar criança no final |
AppendChildFirst(node) | Adicionar criança no início |
InsertChild(index, node) | Insiração em posição |
RemoveChild(node) | Remova uma criança. |
for child in node | Iterar filhos diretos |
from aspose.note import Document, Page, Outline, OutlineElement, RichText
doc = Document("notebook.one")
for page in doc.GetChildNodes(Page):
title_text = page.Title.TitleText.Text if page.Title and page.Title.TitleText else ""
print(f"Page: {title_text}")
for outline in page.GetChildNodes(Outline):
for oe in outline.GetChildNodes(OutlineElement):
for rt in oe.GetChildNodes(RichText):
print(f" {rt.Text}")Extração de conteúdo em texto rico
RichText Os nós expõem:
Text: str: cadeia de texto simples completaTextRuns: list[TextRun]: lista de segmentos formatadosTags: list[NoteTag]:Tags do OneNote anexados a este blocoAppend(text, style=None): adicionar um texto executado na memóriaReplace(old_value, new_value):Substituição de cadeias na memória:
Cada um. TextRun que contém:
| Propriedade | Tipo de veículo: | Descrição: |
|---|---|---|
Text | str | Texto do segmento |
Style | TextStyle | Formatação de metadados |
TextStyle propriedades:
| Propriedade | Tipo de veículo: |
|---|---|
IsBold, IsItalic, IsUnderline, IsStrikethrough | bool |
IsSuperscript, IsSubscript | bool |
FontName | `str |
FontSize | `float |
FontColor, Highlight | `int |
Language | `int |
IsHyperlink | bool |
HyperlinkAddress | `str |
from aspose.note import Document, RichText
doc = Document("notebook.one")
for rt in doc.GetChildNodes(RichText):
for run in rt.TextRuns:
if run.Style.IsHyperlink:
print(f"Hyperlink: {run.Text} -> {run.Style.HyperlinkAddress}")
if run.Style.IsBold:
print(f"Bold text: {run.Text}")Extração de imagem
Image Os nós expõem bytes e metadados brutos para cada imagem incorporada:
| Propriedade | Tipo de veículo: | Descrição: |
|---|---|---|
FileName | `str | None` |
Bytes | bytes | Dados de imagem em bruto |
Width, Height | `float | None` |
AlternativeTextTitle | `str | None` |
AlternativeTextDescription | `str | None` |
HyperlinkUrl | `str | None` |
Tags | list[NoteTag] | Tags do OneNote anexados |
from aspose.note import Document, Image
doc = Document("notebook.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)")Extração de arquivos anexados
AttachedFile Os nós expõem os anexos de ficheiros incorporados:
| Propriedade | Tipo de veículo: | Descrição: |
|---|---|---|
FileName | `str | None` |
Bytes | bytes | Dados dos ficheiros brutos |
Tags | list[NoteTag] | Tags do OneNote anexados |
from aspose.note import Document, AttachedFile
doc = Document("notebook.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)Análise de tabela
Table, TableRow, e TableCell Expor a estrutura completa da tabela:
| Classe: | Principais propriedades |
|---|---|
Table | Columns: list[TableColumn] (cada um) TableColumn tem .Width e a) .LockedWidth), IsBordersVisible: bool, Tags: list[NoteTag] |
TableRow | Celas iteradas via GetChildNodes(TableCell) |
TableCell | Contém: RichText, Image, e outros nós de conteúdo |
from aspose.note import Document, Table, TableRow, TableCell, RichText
doc = Document("notebook.one")
for table in doc.GetChildNodes(Table):
print("Column widths:", [col.Width for col in table.Columns])
for r, row in enumerate(table.GetChildNodes(TableRow), start=1):
cells = row.GetChildNodes(TableCell)
values = [
" ".join(rt.Text for rt in cell.GetChildNodes(RichText)).strip()
for cell in cells
]
print(f"Row {r}:", values)Inspecção de etiquetas do OneNote
NoteTag Aparece em: RichText, Image, AttachedFile, e Table Os nódulos via sua .Tags propriedade. OutlineElement não tem um .Tags propriedade. NoteTag propriedades:
| Propriedade | Tipo de veículo: | Descrição: |
|---|---|---|
Icon | `int | None` |
Label | `str | None` |
FontColor | `int | None` |
Highlight | `int | None` |
CreationTime | `datetime | None` |
CompletedTime | `datetime | None` |
Método de fábrica: NoteTag.CreateYellowStar() cria um nó padrão de etiqueta com estrela amarela.
from aspose.note import Document, RichText
doc = Document("notebook.one")
for rt in doc.GetChildNodes(RichText):
for tag in rt.Tags:
print(f"Tag: {tag.Label} (icon={tag.Icon}, completed={tag.CompletedTime})")Suporte de lista numerada
OutlineElement.NumberList expõe:
| Propriedade | Tipo de veículo: | Descrição: |
|---|---|---|
Format | `str | None` |
Restart | `int | None` |
from aspose.note import Document, OutlineElement
doc = Document("notebook.one")
for oe in doc.GetChildNodes(OutlineElement):
nl = oe.NumberList
if nl:
print(f"format={nl.Format!r}")DocumentVisitor Traversal (Documento)
DocumentVisitor fornece um padrão de visitante para a navegação estruturada do documento completo. VisitXxxStart / VisitXxxEnd método para interceptar tipos específicos de nós:
VisitDocumentStart(doc)/VisitDocumentEnd(doc)VisitPageStart(page)/VisitPageEnd(page)VisitTitleStart(title)/VisitTitleEnd(title)VisitOutlineStart(outline)/VisitOutlineEnd(outline)VisitOutlineElementStart(oe)/VisitOutlineElementEnd(oe)VisitRichTextStart(rt)/VisitRichTextEnd(rt)VisitImageStart(img)/VisitImageEnd(img)
from aspose.note import Document, DocumentVisitor, Page, RichText, Image
class MySummaryVisitor(DocumentVisitor):
def __init__(self):
self.pages, self.texts, self.images = 0, 0, 0
def VisitPageStart(self, page: Page) -> None:
self.pages += 1
def VisitRichTextStart(self, rt: RichText) -> None:
self.texts += 1
def VisitImageStart(self, img: Image) -> None:
self.images += 1
doc = Document("notebook.one")
v = MySummaryVisitor()
doc.Accept(v)
print(f"Pages={v.pages} RichText={v.texts} Images={v.images}")Exportação PDF
Salvar um documento carregado para PDF usando: Document.Save().Suportado através do backend opcional ReportLab.
from aspose.note import Document, SaveFormat
doc = Document("notebook.one")
doc.Save("output.pdf", SaveFormat.Pdf)PdfSaveOptions
| Opção: | Tipo de veículo: | Descrição: |
|---|---|---|
PageIndex | int | Índice baseado em zero da primeira página a ser exportada (padrão: 0, primeira pagina) |
PageCount | `int | None` |
ImageCompression | `Any | None` |
JpegQuality | `int | None` |
PageSettings | `Any | None` |
PageSplittingAlgorithm | `Any | None` |
import io
from aspose.note import Document, SaveFormat
from aspose.note.saving import PdfSaveOptions
doc = Document("notebook.one")
##Save to file
doc.Save("output.pdf", SaveFormat.Pdf)
##Save to in-memory stream
buf = io.BytesIO()
doc.Save(buf, PdfSaveOptions())
pdf_bytes = buf.getvalue()Formatos e referências do Enum
SaveFormat
| Valor de um produto | Estatuto da União Europeia |
|---|---|
SaveFormat.Pdf | Implementado através do ReportLab; aumenta o valor de cada um dos créditos. ValueError se o manipulador de formato não estiver registado |
FileFormat
Document.FileFormat fornece uma indicação de melhor esforço da versão do formato de arquivo OneNote. O enum declara três valores:
| Valor de um produto | Descrição: |
|---|---|
FileFormat.OneNote2010 | Formatos do OneNote 2010 |
FileFormat.OneNoteOnline | Formato OneNote Online |
FileFormat.OneNote2007 | Formato do OneNote 2007 |
NodeType
NodeType.Document, NodeType.Page, NodeType.Outline, NodeType.OutlineElement, NodeType.RichText, NodeType.Image, NodeType.Table, NodeType.AttachedFile
HorizontalAlignment
HorizontalAlignment.Left, HorizontalAlignment.Center, HorizontalAlignment.Right
Limitações actuais
| Limitação | Detalhes |
|---|---|
| Apenas leitura | A escrever de volta para: .one formato não está implementado |
| Sem criptografia . | Documentos criptografados levantam IncorrectPasswordException |
| PDF apenas para exportação | Outros produtos de base SaveFormat valores de aumento UnsupportedSaveFormatException |
| Requerido para PDF ReportLab | Instalar pip install "aspose-note[pdf]" separadamente |
GetPageHistory Retorna lista de um único elemento | A travessa completa do histórico da página é um estúdio; retorna [page] |
DetectLayoutChanges() | Estudo de compatibilidade; não operação |
Dicas e melhores práticas
- Verificar para Nenhum:
Page.Title,Title.TitleText,OutlineElement.NumberList, e a maioria dos campos de metadados pode serNone.- Sempre a vigiar com o meu amigo .if x is not Noneou a)if xantes de aceder a propriedades. - Utilização:
GetChildNodes(Type)Ele busca toda a sub-árvore. - Iterar filhos diretos com:
for child in nodequando só precisas de filhos imediatos. - Manusear a codificação no Windows:Em Windows,
sys.stdoutPode usar uma página de código legado. Adicionarsys.stdout.reconfigure(encoding="utf-8", errors="replace")no início da impressão de texto Unicode. - Instalar
[pdf]extra: Exportação PDF requer ReportLab. Runpip install "aspose-note[pdf]"antes de utilizar:SaveFormat.Pdf.Sem o ReportLab, a salvação para PDF aumenta um valor de R$ 10 milhões.ImportErrorno momento da execução.