Treballar amb el document de notes
El Document classe és la arrel de l’Aspose.Nota per a Python document object model (DOM). Cada lectura, travessatge o exportació operació comença amb un Document instància que representa un sol .one arxiu de secció.
Carrega un document
Carrega des d’una ruta de fitxer
Passa el camí a un .one fixar directament al Document constructor:
from aspose.note import Document
doc = Document("MyNotes.one")Carrega d’un flux binari
Utilitzar un objecte de tipus fitxer quan les dades provenen d’una resposta de xarxa, blob de l’emmagatzematge en el núvol o buffer a la memòria:
from pathlib import Path
from aspose.note import Document
with Path("MyNotes.one").open("rb") as f:
doc = Document(f)Crear un document buit
Construir un Document sense argument per crear un nou document de OneNote programàticament:
from aspose.note import Document, Page
doc = Document()
doc.AppendChildLast(Page())Carrega amb opcions
Utilització: LoadOptions per establir paràmetres opcionals en el temps de càrrega:
from aspose.note import Document, LoadOptions
opts = LoadOptions()
opts.LoadHistory = True # include page revision history in the DOM
doc = Document("MyNotes.one", opts)LoadOptions propietat | Tipus de productes | Default | Descripció |
|---|---|---|---|
LoadHistory | bool | False | Quan? True, les revisions de l’ historial de pàgines estan incloses en el DOM i són accessibles a través del portal web . Document.GetPageHistory |
DocumentPassword | `str | None` | None |
Detecció de format del document
El FileFormat la propietat identifica quina variant de format OneNote utilitza el fitxer:
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 la | Descripció |
|---|---|
OneNote2010 | Normalitat .one arxiu escrit per OneNote 2010 i posterior. |
OneNoteOnline | .one arxiu escrit per OneNote Online / Microsoft 365 |
OneNote2007 | Llegat .one format de OneNote 2007 |
Unknown | No es va poder identificar el format |
Pages iteracions
Les pàgines són els fills directes de Document.Utilitza un for bucle per a iteració simple:
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}]")Utilització: GetChildNodes(Page) per obtenir una llista mecanitzada de totes les pàgines a la vegada:
from aspose.note import Document, Page
doc = Document("MyNotes.one")
pages = doc.GetChildNodes(Page)
print(f"Total pages: {len(pages)}")Metadades de pàgines
| Immobiliari | Tipus de productes | Descripció |
|---|---|---|
Title | `Title | None` |
Author | `str | None` |
CreationTime | `datetime | None` |
LastModifiedTime | `datetime | None` |
Level | `int | None` |
IsConflictPage | bool | True si la pàgina és una còpia de conflicte sincronitzada |
Traversar l’Arbre de Documents
Document hereta de CompositeNode, donant-li mètodes de travessatge complet dels arbres:
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))La jerarquia 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ètodes de travessació clau heretats del sistema d’imatge. CompositeNode:
| Mètode | Descripció |
|---|---|
GetChildNodes(NodeType) | Retorna una llista de tots els descendents que coincideixen amb el tipus donat. |
AppendChildLast(node) | Afegir un node fill al final de la llista dels fills |
AppendChildFirst(node) | Afegir un node fill al començament |
InsertChild(index, node) | Insertar un nen en un índex específic. |
RemoveChild(node) | Eliminar un node fill |
GetEnumerator() | Infants directes iterats |
Història de la pàgina
Quan es carrega amb LoadHistory=True, Document.GetPageHistory Retorna totes les revisions guardades. d’una pàgina, ordenada des de l’antiga a la més recent:
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 un buit.PageHistoryobjecte quanLoadHistoryésFalseSempre establert.opts.LoadHistory = Trueabans de carregar si ho necessites. dades de revisió.
Aconseguir i exportar
Utilització: Document.Save PDF és l’únic format d’exportació suportat.
Salvar a un fitxer
from aspose.note import Document, SaveFormat
doc = Document("MyNotes.one")
doc.Save("output.pdf", SaveFormat.Pdf)Salvar a un flux 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 amb opcions
Utilització: PdfSaveOptions (des del aspose.note.saving) per controlar la selecció de pàgines:
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()Important: Exportació PDF requereix la dependència opcional ReportLab. Instal·la amb:
pip install "aspose-note[pdf]".
Detectar canvis en l’estratègia
L’anomenaràs. DetectLayoutChanges després de modificar el document per recalcular les mètriques d’estampatge abans 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")Consells i millors pràctiques
- Carrega una vegada, consulta moltes vegades:
DocumentCarrega tot el.onearxiu en memòria a Construcció.Documentinstància i cridaGetChildNodesrepetidament en comptes de: Recarregant el fitxer per cada consulta. - Compte de pagament
IsConflictPage: La sincronizació d’OneNote pot generar pàgines en conflicte. Filtrar amb[p for p in doc if not p.IsConflictPage]abans de processar el contingut. - Utilització:
LoadHistory=False(default) per a velocitat: Historial de pàgines afegeix memòria significativa i Parsejar sobreheads. només fixarLoadHistory=Truequan necessiteu explícitament dades de revisió. - Stream per a fitxers grans: Passa un objecte de fitxer obert en comptes d’ una cadena de ruta quan llegeix gran
.onearxius per evitar mantenir el fitxer obert després que s’acabi l’anàlisi. - L’anomenaràs.
DetectLayoutChangesabansSave: Quan es construeix un document de forma programàtica i nodes aplegats, cridaDetectLayoutChanges()per assegurar que les coordenades de la disposició són: coherent abans d’exportar al PDF.
Problemàtiques comuns
| Edició | Causa | Correcció |
|---|---|---|
IncorrectPasswordException en càrrega | El fitxer està xifrat; no es suporta el codi de documents xifrat. | Obtindre una còpia no codificada del fitxer |
FileCorruptedException en càrrega | El fitxer és truncat o té un format intern no compatible. | Verificar que el fitxer és un fichier vàlid. .one secció (no un .onetoc2 Taula de contingut) |
UnsupportedSaveFormatException en salvament | Intent de guardar en un format diferent del PDF. | Només: SaveFormat.Pdf És suportat per a l’exportació. |
Buit . GetPageHistory resultat | LoadOptions.LoadHistory no estava establert en: True abans de la càrrega. | Recarregar el document amb: opts.LoadHistory = True |
ModuleNotFoundError: reportlab | Intent d’exportació de PDF sense el extra del PDF | Correu. pip install "aspose-note[pdf]" |
FAQ
Quins formats d’OneNote pot acceptar.Llegir nota?
Els tres formats de secció d’OneNote: OneNote2007, OneNote2010, i OneNoteOnline. Utilització: doc.FileFormat per identificar quina variant va ser carregada.
Puc escriure-li a un… .one arxiu després de llegir-lo?
No, escribo a… .one no està implementat. Exportació a PDF amb Document.Save és el només es suporta l’operació de sortida.
Com puc llegir una pàgina específica pel títol?
Iterar pàgines i comparar page.Title.TitleText.Text a la cadena de tòcs:
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,
)Com puc comptar les subpàgines separadament de les pàgines d’alt nivell?
Utilització: page.Level: el nivell 1 és un nivell superior, el nivel 2 una subpágina, i així successivament.
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)}")Escau.Nota de suport .onetoc2 arxius de la taula de continguts?
No, només… .one els arxius de secció són suportats. .onetoc2 els quaderns augmentaran FileCorruptedException.
Resum de referència d’API
| Classe / mètode | Descripció |
|---|---|
Document(path_or_stream, options?) | Carrega a .one arxiu o crear un document buit |
Document.FileFormat | Variant de format detectat (FileFormat enum) |
Document.GetChildNodes(NodeType) | Recuperar tots els nodes descendents d’un tipus donat. |
Document.GetPageHistory(page) | Obtindre l’historial de revisions d’una pàgina (requerir) LoadHistory=True) |
Document.Save(target, format_or_options) | Exportació a PDF per ruta o flux de fitxers |
Document.DetectLayoutChanges() | Recalcular les mètriques de disseny després d’edicions programàtiques |
Document.Accept(visitor) | Caminar el DOM utilitzant un DocumentVisitor subclasse |
LoadOptions.LoadHistory | Configurar a True Inclure les revisions de pàgines en el DOM. |
LoadOptions.DocumentPassword | Reservat; arxius xifrat augmentar IncorrectPasswordException |
FileFormat | Enum: OneNote2010, OneNoteOnline, OneNote2007, Unknown |
SaveFormat.Pdf | Únic format d’exportació suportat |
PageHistory.Count | Nombre de revisions disponibles de pàgines |
Page.Level | Profunditat de subpàs (1 = nivell superior) |
Page.IsConflictPage | True per a còpies de conflicte sincronitzades |
Veure també
- Extracció de text: extracció de text en comú i reproduccions formatades.
- Exportació PDF: opcions d’exportació, selecció de pàgines i sortida del flux
- Imatges i apendicis: extracció d’imatges incrustades i fitxers adjunts.
- Taules: analitzar l’estructura de la taula i el contingut de cèl·lula
- Referència a l’API: Document