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 propietatTipus de productesDefaultDescripció
LoadHistoryboolFalseQuan? 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`strNone`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 laDescripció
OneNote2010Normalitat .one arxiu escrit per OneNote 2010 i posterior.
OneNoteOnline.one arxiu escrit per OneNote Online / Microsoft 365
OneNote2007Llegat .one format de OneNote 2007
UnknownNo 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

ImmobiliariTipus de productesDescripció
Title`TitleNone`
Author`strNone`
CreationTime`datetimeNone`
LastModifiedTime`datetimeNone`
Level`intNone`
IsConflictPageboolTrue 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
                    └── AttachedFile

Mètodes de travessació clau heretats del sistema d’imatge. CompositeNode:

MètodeDescripció
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:: GetPageHistory Retorna un buit. PageHistory objecte quan LoadHistory és False Sempre establert. opts.LoadHistory = True abans 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: Document Carrega tot el .one arxiu en memòria a Construcció. Document instància i crida GetChildNodes repetidament 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 fixar LoadHistory=True quan 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 .one arxius per evitar mantenir el fitxer obert després que s’acabi l’anàlisi.
  • L’anomenaràs. DetectLayoutChanges abans Save: Quan es construeix un document de forma programàtica i nodes aplegats, crida DetectLayoutChanges() per assegurar que les coordenades de la disposició són: coherent abans d’exportar al PDF.

Problemàtiques comuns

EdicióCausaCorrecció
IncorrectPasswordException en càrregaEl fitxer està xifrat; no es suporta el codi de documents xifrat.Obtindre una còpia no codificada del fitxer
FileCorruptedException en càrregaEl 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 salvamentIntent de guardar en un format diferent del PDF.Només: SaveFormat.Pdf És suportat per a l’exportació.
Buit . GetPageHistory resultatLoadOptions.LoadHistory no estava establert en: True abans de la càrrega.Recarregar el document amb: opts.LoadHistory = True
ModuleNotFoundError: reportlabIntent d’exportació de PDF sense el extra del PDFCorreu. 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ètodeDescripció
Document(path_or_stream, options?)Carrega a .one arxiu o crear un document buit
Document.FileFormatVariant 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.LoadHistoryConfigurar a True Inclure les revisions de pàgines en el DOM.
LoadOptions.DocumentPasswordReservat; arxius xifrat augmentar IncorrectPasswordException
FileFormatEnum: OneNote2010, OneNoteOnline, OneNote2007, Unknown
SaveFormat.PdfÚnic format d’exportació suportat
PageHistory.CountNombre de revisions disponibles de pàgines
Page.LevelProfunditat de subpàs (1 = nivell superior)
Page.IsConflictPageTrue per a còpies de conflicte sincronitzades

Veure també

 Català