Trabalhar com o documento de notas
A Comissão Document class é a raiz do Aspose.Nota para o modelo de objeto de documento Python (DOM). Cada leitura, cruzamento ou exportação operação começa com um Document instância que representa o um único .one Arquivo da secção.
Carregamento de um documento
Carregar a partir de um caminho de arquivo
Passe o caminho para um .one A Comissão Europeia Document constructor:
from aspose.note import Document
doc = Document("MyNotes.one")Carga de um fluxo binário
Use um objeto semelhante a arquivo quando os dados vêm de uma resposta de rede, blob de armazenamento em nuvem ou buffer na memória:
from pathlib import Path
from aspose.note import Document
with Path("MyNotes.one").open("rb") as f:
doc = Document(f)Criar um documento vazio
Construir um Document sem argumentos para criar um novo documento do OneNote programaticamente:
from aspose.note import Document, Page
doc = Document()
doc.AppendChildLast(Page())Carga com opções
Utilização: LoadOptions Para definir parâmetros opcionais no tempo de carga:
from aspose.note import Document, LoadOptions
opts = LoadOptions()
opts.LoadHistory = True # include page revision history in the DOM
doc = Document("MyNotes.one", opts)LoadOptions propriedade | Tipo de veículo: | Padrão | Descrição: |
|---|---|---|---|
LoadHistory | bool | False | Quando ? True, as revisões do histórico de páginas estão incluídas no DOM e acessíveis via Document.GetPageHistory |
DocumentPassword | `str | None` | None |
Detecção de formato do documento
A Comissão FileFormat Propriedade identifica qual variante do formato OneNote o ficheiro utiliza:
from aspose.note import Document, FileFormat
doc = Document("MyNotes.one")
if doc.FileFormat == FileFormat.OneNote2010:
print("OneNote 2010 format")
elif doc.FileFormat == FileFormat.OneNoteOnline:
print("OneNote Online format")
elif doc.FileFormat == FileFormat.OneNote2007:
print("OneNote 2007 format")
else:
print("Format:", doc.FileFormat)FileFormat valor de | Descrição: |
|---|---|
OneNote2010 | Padrão .one Arquivo escrito pelo OneNote 2010 e posteriormente |
OneNoteOnline | .one Arquivo escrito pelo OneNote Online / Microsoft 365 |
OneNote2007 | O legado .one formato do OneNote 2007 |
Unknown | Formatos não identificados . |
Páginas de iteração
As páginas são filhos diretos de: Document.- Usar um . for Loop para iteração simples:
from aspose.note import Document
doc = Document("MyNotes.one")
for page in doc:
title_text = (
page.Title.TitleText.Text
if page.Title and page.Title.TitleText
else "(untitled)"
)
author = page.Author or "(unknown)"
level = page.Level or 1
indent = " " * (level - 1)
print(f"{indent}{title_text} [by {author}]")Utilização: GetChildNodes(Page) para obter uma lista de todas as páginas digitadas ao mesmo tempo:
from aspose.note import Document, Page
doc = Document("MyNotes.one")
pages = doc.GetChildNodes(Page)
print(f"Total pages: {len(pages)}")Metadados da página
| Propriedade | Tipo de veículo: | Descrição: |
|---|---|---|
Title | `Title | None` |
Author | `str | None` |
CreationTime | `datetime | None` |
LastModifiedTime | `datetime | None` |
Level | `int | None` |
IsConflictPage | bool | True se a página for uma cópia de conflito sincronizado |
Atravessar a árvore de documentos
Document herda de: CompositeNode, dando-lhe métodos completos de travesso das árvores:
from aspose.note import Document, RichText
doc = Document("MyNotes.one")
# Extract all plain text from the entire document
all_text = [rt.Text for rt in doc.GetChildNodes(RichText) if rt.Text]
print("\n".join(all_text))A hierarquia DOM:
Document
└── Page (0..n)
├── Title
│ ├── TitleText (RichText)
│ ├── TitleDate (RichText)
│ └── TitleTime (RichText)
└── Outline (0..n)
└── OutlineElement (0..n)
├── RichText
├── Image
├── Table
│ └── TableRow → TableCell → RichText / Image
└── AttachedFileMétodos de travessação essenciais herdados da CompositeNode:
| Método de avaliação | Descrição: |
|---|---|
GetChildNodes(NodeType) | Devolver uma lista de todos os descendentes correspondente ao tipo dado. |
AppendChildLast(node) | Adicionar um nó filho no final da lista de filhos |
AppendChildFirst(node) | Adicionar um nó filho no início |
InsertChild(index, node) | Insira uma criança num índice específico. |
RemoveChild(node) | Remover um nó filho |
GetEnumerator() | Iterar filhos diretos |
Histórico da página
Quando carregado com LoadHistory=True, Document.GetPageHistory Retorna todas as revisões salvas de uma página, ordenada do mais antigo ao mais recente:
from aspose.note import Document, LoadOptions
opts = LoadOptions()
opts.LoadHistory = True
doc = Document("MyNotes.one")
for page in doc.GetChildNodes(None.__class__.__mro__[0]): # iterate pages
pass
# Get revisions for a specific page
import aspose.note as an
doc2 = Document("MyNotes.one", opts)
pages = doc2.GetChildNodes(an.Page)
if pages:
history = doc2.GetPageHistory(pages[0])
print(f"Revision count: {history.Count}")
for rev in history:
print(f" Modified: {rev.LastModifiedTime}")Nota::
GetPageHistoryRetorna um vazio.PageHistoryobjecto quandoLoadHistoryé:False(o padrão).opts.LoadHistory = Trueantes de carregar se precisar. dados de revisão.
A poupança e a exportação
Utilização: Document.Save PDF é o único formato de exportação suportado.
Salvar para um ficheiro
from aspose.note import Document, SaveFormat
doc = Document("MyNotes.one")
doc.Save("output.pdf", SaveFormat.Pdf)Salvar para um fluxo de memória
import io
from aspose.note import Document, SaveFormat
doc = Document("MyNotes.one")
buf = io.BytesIO()
doc.Save(buf, SaveFormat.Pdf)
pdf_bytes = buf.getvalue()Salvar com opções
Utilização: PdfSaveOptions (de aspose.note.saving) para controlar a selecção de páginas:
import io
from aspose.note import Document
from aspose.note.saving import PdfSaveOptions
doc = Document("MyNotes.one")
# Export pages 2 and 3 only (zero-based index)
opts = PdfSaveOptions(PageIndex=1, PageCount=2)
buf = io.BytesIO()
doc.Save(buf, opts)
pdf_bytes = buf.getvalue()Importância: A exportação de PDF requer a dependência opcional ReportLab. Instala-o com:
pip install "aspose-note[pdf]".
Detecção de alterações na configuração
Chama-me . DetectLayoutChanges Após a modificação do documento para recalcular as métricas de layout antes de guardar:
from aspose.note import Document, Page
doc = Document()
page = Page()
doc.AppendChildLast(page)
# ... add content to page ...
doc.DetectLayoutChanges()
doc.Save("output.pdf")Dicas e melhores práticas
- Carregar uma vez, consultar muitas vezes:
Documentcarrega o conjunto de.oneArquivo na memória em: - Construção.Documentinstância e chamadaGetChildNodesmais repetidamente do que Recarregar o ficheiro para cada consulta. - Verificação
IsConflictPage: A sincronização do OneNote pode produzir páginas em conflito. Filtrar com[p for p in doc if not p.IsConflictPage]antes de processar o conteúdo. - Utilização:
LoadHistory=False(default) para velocidade: Histórico de página acrescenta memória significativa e Só definido.LoadHistory=Truequando precisam de dados de revisão. - Fluxo para arquivos grandes: Passe um objeto de arquivo aberto em vez de uma cadeia de traços ao ler . grande
.oneArquivos para evitar manter o arquivo aberto depois que a análise é concluída. - Chama-me .
DetectLayoutChangesantes deSave: Ao construir um documento de forma programática e nós anexados, chamadaDetectLayoutChanges()para assegurar que as coordenadas de traçado são: consistente antes da exportação para o PDF.
Problemas comuns
| Emissão | Causa da morte | Correção |
|---|---|---|
IncorrectPasswordException em carga | O ficheiro está encriptado; documentos criptografados não são suportados. | Obter uma cópia não criptografada do arquivo |
FileCorruptedException em carga | O ficheiro é truncado ou tem um formato interno não suportado . | Verificar que o ficheiro é válido . .one secção (não um .onetoc2 (Tabela de conteúdos) |
UnsupportedSaveFormatException em salvação | Tentativa de salvar em outro formato que não o PDF. | Apenas: SaveFormat.Pdf é apoiado para exportação. |
Vazio. - Não . GetPageHistory resultado | LoadOptions.LoadHistory não foi definido para: True antes do carregamento | Recarregar o documento com: opts.LoadHistory = True |
ModuleNotFoundError: reportlab | Tentativa de exportação PDF sem o extra do PDF | Corra . pip install "aspose-note[pdf]" |
FAQ
Que formatos do OneNote podem ser utilizados.Ler nota?
Todos os três formatos de secção do OneNote: OneNote2007, OneNote2010, e OneNoteOnline. Utilização: doc.FileFormat Identificar qual variante foi carregada.
Posso responder a uma … .one Arquivo depois de o ler?
Não, estou a escrever para o meu amigo. .one Não está implementado. Exportar para PDF com Document.Save é o apenas operação de saída suportada.
Como leio uma página específica pelo título?
Iterar páginas e comparar page.Title.TitleText.Text para a sua cadeia de alvo:
from aspose.note import Document
doc = Document("MyNotes.one")
target = next(
(p for p in doc
if p.Title and p.Title.TitleText and p.Title.TitleText.Text == "My Page"),
None,
)Como posso contar subpáginas separadamente das páginas de nível superior?
Utilização: page.Level: o nível 1 é um nível superior, o nivel 2 uma subpágina e assim por diante.
from aspose.note import Document
doc = Document("MyNotes.one")
top_level = [p for p in doc if (p.Level or 1) == 1]
sub_pages = [p for p in doc if (p.Level or 1) > 1]
print(f"Top-level: {len(top_level)}, Sub-pages: {len(sub_pages)}")Acompanhe o pedido de autorização.Nota de apoio .onetoc2 Arquivos de tabela dos conteúdos?
Não, só… .one Os ficheiros de secção são suportados. .onetoc2 Os cadernos vão aumentar. FileCorruptedException.
Resumo de referência da API
| Classe / Método | Descrição: |
|---|---|
Document(path_or_stream, options?) | Carregamento a .one arquivo ou criar um documento vazio |
Document.FileFormat | Variante de formato detectada (FileFormat (em inglês) |
Document.GetChildNodes(NodeType) | Obter todos os nós descendentes de um tipo dado |
Document.GetPageHistory(page) | Obter o histórico de revisões para uma página (requer) LoadHistory=True) |
Document.Save(target, format_or_options) | Exportação para PDF por caminho de arquivo ou fluxo |
Document.DetectLayoutChanges() | Recalcular métricas de layout após edições programáticas |
Document.Accept(visitor) | Caminhar o DOM usando um DocumentVisitor Subclasse |
LoadOptions.LoadHistory | Configuração: True incluir revisões de páginas no DOM |
LoadOptions.DocumentPassword | Reservado; arquivos criptografados levantam IncorrectPasswordException |
FileFormat | Enum: OneNote2010, OneNoteOnline, OneNote2007, Unknown |
SaveFormat.Pdf | Único formato de exportação suportado |
PageHistory.Count | Número de revisões disponíveis da página |
Page.Level | Profundidade de subpágina (1 = nível superior) |
Page.IsConflictPage | True para cópias de conflito de sincronização |
Ver também:
- Extração de texto: extração de texto simples e executar formatados
- Exportação PDF:Opções de exportação, selecção de páginas e saída do fluxo.
- Imagens e anexos: extracção de imagens incorporadas e arquivos anexos
- Tabelas de dados: análise da estrutura e do conteúdo das células da tabela
- Referência API: Documento