Lavorare con il documento di nota

Il Consiglio ha adottato: Document class è la radice dell’ Aspose.Nota per il modello di oggetto del documento Python (DOM). Ogni lettura, attraversamento o esportazione inizia con un Document istanza che rappresenta un singolo .one - La sezione file.


Caricare un documento

Carico da un percorso di file

Passare il percorso a un .one - Invio direttamente al Consiglio. Document costruttore:

from aspose.note import Document

doc = Document("MyNotes.one")

Carico da un flusso binario

Utilizzare un oggetto simile a file quando i dati provengono da una risposta di rete, blob di archiviazione in cloud o buffer nella memoria:

from pathlib import Path
from aspose.note import Document

with Path("MyNotes.one").open("rb") as f:
    doc = Document(f)

Creare un documento vuoto

Costruire un Document senza argomenti per creare un nuovo documento OneNote programmaticamente:

from aspose.note import Document, Page

doc = Document()
doc.AppendChildLast(Page())

Carico con opzioni

Utilizzo: LoadOptions per impostare parametri facoltativi al tempo di carico:

from aspose.note import Document, LoadOptions

opts = LoadOptions()
opts.LoadHistory = True   # include page revision history in the DOM
doc = Document("MyNotes.one", opts)
LoadOptions proprietàTipo di prodottoImpostazione predefinitaDescrizione
LoadHistoryboolFalseQuando ? True, le revisioni della cronologia delle pagine sono incluse nel DOM e accessibili tramite: Document.GetPageHistory
DocumentPassword`strNone`None

Rilevamento del formato dei documenti

Il Consiglio ha adottato: FileFormat proprietà identifica quale variante di formato OneNote utilizza il file:

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 valore diDescrizione
OneNote2010Norme di riferimento .one file scritto da OneNote 2010 e versioni successive
OneNoteOnline.one file scritto da OneNote Online / Microsoft 365
OneNote2007La eredità .one formato da OneNote 2007
UnknownFormat non è stato identificato

Pagine iterative

Le pagine sono i figli diretti di: Document.- Usare un … for loop per l’iterazione semplice:

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}]")

Utilizzo: GetChildNodes(Page) per ottenere una lista digitata di tutte le pagine in una volta:

from aspose.note import Document, Page

doc = Document("MyNotes.one")
pages = doc.GetChildNodes(Page)
print(f"Total pages: {len(pages)}")

Metadati della pagina

ImmobiliariTipo di prodottoDescrizione
Title`TitleNone`
Author`strNone`
CreationTime`datetimeNone`
LastModifiedTime`datetimeNone`
Level`intNone`
IsConflictPageboolTrue se la pagina è una copia in conflitto di sincronizzazione

Attraversare l’albero dei documenti

Document ereditato da: CompositeNode, che gli fornisce metodi di tracciamento completo degli alberi:

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))

Gerarchia del 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

Metodi di tracciamento chiave ereditati da: CompositeNode:

Metodo di valutazioneDescrizione
GetChildNodes(NodeType)Restituire un elenco digitato di tutti i discendenti corrispondenti al tipo dato.
AppendChildLast(node)Aggiungere un nodo figlio alla fine della lista dei figli
AppendChildFirst(node)Aggiungere un nodo figlio all’inizio
InsertChild(index, node)Inserire un bambino in uno specifico indice.
RemoveChild(node)Rimuovere un nodo figlio
GetEnumerator()Iterazione dei figli diretti

Storia della pagina

Quando carico di LoadHistory=True, Document.GetPageHistory restituisce tutte le revisioni salvate di una pagina, ordinata dal più antico al più 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 di seguito:: GetPageHistory restituisce un vuoto PageHistory obiettivo quando LoadHistory è: False (il predefinito). opts.LoadHistory = True prima del caricamento, se necessario. dati di revisione.


Risparmio e esportazione

Utilizzo: Document.Save PDF è l’unico formato di esportazione supportato.

Salvare in un file

from aspose.note import Document, SaveFormat

doc = Document("MyNotes.one")
doc.Save("output.pdf", SaveFormat.Pdf)

Salvare in un flusso di memoria

import io
from aspose.note import Document, SaveFormat

doc = Document("MyNotes.one")
buf = io.BytesIO()
doc.Save(buf, SaveFormat.Pdf)
pdf_bytes = buf.getvalue()

Salvare con opzioni

Utilizzo: PdfSaveOptions (dal aspose.note.saving) per controllare la selezione delle pagine:

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()

Importanti: L’esportazione PDF richiede la dipendenza ReportLab facoltativa. Installa con: pip install "aspose-note[pdf]".


Riconoscere le modifiche di layout

Chiamami. DetectLayoutChanges dopo aver modificato il documento per ricalcolare le metriche di layout prima di salvare:

from aspose.note import Document, Page

doc = Document()
page = Page()
doc.AppendChildLast(page)

# ... add content to page ...

doc.DetectLayoutChanges()
doc.Save("output.pdf")

Suggerimenti e migliori pratiche

  • Caricare una volta, richiedere molte volte: Document carica l’intero .one Archivio in memoria su - Prendi un attimo. Document istanza e chiamata GetChildNodes più volte piuttosto che ri-caricare il file per ogni query.
  • Controllo IsConflictPage: La sincronizzazione OneNote può generare pagine in conflitto. Filtrare con [p for p in doc if not p.IsConflictPage] prima di elaborare il contenuto.
  • Utilizzo: LoadHistory=False (di default) per la velocità: Storia della pagina aggiunge memoria significativa e Solo set di dati. LoadHistory=True quando è necessario esplicitamente un’analisi dei dati.
  • Stream per file di grandi dimensioni: Passare un oggetto di file aperto invece di una stringa del percorso durante la lettura grande .one file per evitare di tenere il file aperto dopo la parsa completa.
  • Chiamami. DetectLayoutChanges prima di questo. Save: Quando si costruisce un documento in modo programmatico e i nodi collegati, chiamare DetectLayoutChanges() per garantire che le coordinate di disposizione siano: coerente prima dell’esportazione in formato PDF.

Problemi comuni

Numero di pubblicazioneCausa di morteRettifica
IncorrectPasswordException a caricoIl file è crittografato; i documenti criptuati non sono supportati.Ottenere una copia non criptata del file
FileCorruptedException a caricoIl file è truncato o ha un formato interno non supportato.Verifica che il file sia valido .one Sezione (non un .onetoc2 (tavola dei contenuti)
UnsupportedSaveFormatException a salvareTentato di salvare in un formato diverso da PDFSolo: SaveFormat.Pdf è supportato per l’esportazione.
Valo GetPageHistory risultatoLoadOptions.LoadHistory non è stato impostato su: True prima del caricoRicaricare il documento con: opts.LoadHistory = True
ModuleNotFoundError: reportlabEsportazione PDF tentata senza il supplemento PDFCorri . pip install "aspose-note[pdf]"

FAQ

Quali formati OneNote possono essere utilizzati.Nota letta?

Tutti e tre i formati di sezione di OneNote: OneNote2007, OneNote2010, e OneNoteOnline. Utilizzo: doc.FileFormat identificare quale variante è stata caricata.

Posso rispondere a un… .one - Il file dopo averlo letto?

No, scrivo a… .one Non è implementato. Esportazione in PDF con Document.Save è il solo l’operazione di uscita supportata.

Come si legge una pagina specifica per titolo?

Iterare le pagine e confrontarle page.Title.TitleText.Text alla stringa di destinazione:

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,
)

Come faccio a contare le sotto pagine separatamente dalle pagini di livello superiore?

Utilizzo: page.Level: il livello 1 è di primo piano, il 2 un sottopiano e così via.

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)}")

Non è necessario.Nota di supporto .onetoc2 file di contenuti?

No, solo… .one sezione sono supportati. .onetoc2 notebook aumenteranno FileCorruptedException.


Riassunto di riferimento API

Classe / metodoDescrizione
Document(path_or_stream, options?)Carico a .one file o creare un documento vuoto
Document.FileFormatVariante di formato rilevata (FileFormat (in numero)
Document.GetChildNodes(NodeType)Ritracciare tutti i nodi discendenti di un dato tipo
Document.GetPageHistory(page)Ottenere la cronologia delle revisioni di una pagina (richiede) LoadHistory=True)
Document.Save(target, format_or_options)Esportazione in PDF per percorso o flusso di file
Document.DetectLayoutChanges()Ricalcolare le metriche di layout dopo modifiche programmatiche
Document.Accept(visitor)Cammina il DOM utilizzando un DocumentVisitor sottoclasse
LoadOptions.LoadHistoryImpostazione a: True includere le revisioni delle pagine nel DOM
LoadOptions.DocumentPasswordRiserva; codificato file sollevare IncorrectPasswordException
FileFormat- Non è vero.: OneNote2010, OneNoteOnline, OneNote2007, Unknown
SaveFormat.PdfUnico formato di esportazione supportato
PageHistory.CountNumero di revisioni disponibili delle pagine
Page.LevelProfondità delle sottopagine (1 = livello superiore)
Page.IsConflictPageTrue per le copie in conflitto di sincronizzazione

Vedi anche:

 Italiano