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 prodotto | Impostazione predefinita | Descrizione |
|---|---|---|---|
LoadHistory | bool | False | Quando ? True, le revisioni della cronologia delle pagine sono incluse nel DOM e accessibili tramite: Document.GetPageHistory |
DocumentPassword | `str | None` | 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 di | Descrizione |
|---|---|
OneNote2010 | Norme di riferimento .one file scritto da OneNote 2010 e versioni successive |
OneNoteOnline | .one file scritto da OneNote Online / Microsoft 365 |
OneNote2007 | La eredità .one formato da OneNote 2007 |
Unknown | Format 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
| Immobiliari | Tipo di prodotto | Descrizione |
|---|---|---|
Title | `Title | None` |
Author | `str | None` |
CreationTime | `datetime | None` |
LastModifiedTime | `datetime | None` |
Level | `int | None` |
IsConflictPage | bool | True 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
└── AttachedFileMetodi di tracciamento chiave ereditati da: CompositeNode:
| Metodo di valutazione | Descrizione |
|---|---|
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::
GetPageHistoryrestituisce un vuotoPageHistoryobiettivo quandoLoadHistoryè:False(il predefinito).opts.LoadHistory = Trueprima 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:
Documentcarica l’intero.oneArchivio in memoria su - Prendi un attimo.Documentistanza e chiamataGetChildNodespiù 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=Truequando è 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
.onefile per evitare di tenere il file aperto dopo la parsa completa. - Chiamami.
DetectLayoutChangesprima di questo.Save: Quando si costruisce un documento in modo programmatico e i nodi collegati, chiamareDetectLayoutChanges()per garantire che le coordinate di disposizione siano: coerente prima dell’esportazione in formato PDF.
Problemi comuni
| Numero di pubblicazione | Causa di morte | Rettifica |
|---|---|---|
IncorrectPasswordException a carico | Il file è crittografato; i documenti criptuati non sono supportati. | Ottenere una copia non criptata del file |
FileCorruptedException a carico | Il 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 salvare | Tentato di salvare in un formato diverso da PDF | Solo: SaveFormat.Pdf è supportato per l’esportazione. |
Valo GetPageHistory risultato | LoadOptions.LoadHistory non è stato impostato su: True prima del carico | Ricaricare il documento con: opts.LoadHistory = True |
ModuleNotFoundError: reportlab | Esportazione PDF tentata senza il supplemento PDF | Corri . 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 / metodo | Descrizione |
|---|---|
Document(path_or_stream, options?) | Carico a .one file o creare un documento vuoto |
Document.FileFormat | Variante 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.LoadHistory | Impostazione a: True includere le revisioni delle pagine nel DOM |
LoadOptions.DocumentPassword | Riserva; codificato file sollevare IncorrectPasswordException |
FileFormat | - Non è vero.: OneNote2010, OneNoteOnline, OneNote2007, Unknown |
SaveFormat.Pdf | Unico formato di esportazione supportato |
PageHistory.Count | Numero di revisioni disponibili delle pagine |
Page.Level | Profondità delle sottopagine (1 = livello superiore) |
Page.IsConflictPage | True per le copie in conflitto di sincronizzazione |
Vedi anche:
- Estrazione di testo: estrazione di testo semplice e esecuzioni formattate
- PDF per l’esportazione: opzioni di esportazione, selezione delle pagine e output stream
- Immagini e allegati: estrazione di immagini incorporate e file allegati
- Tabelle di riferimento: analizzare la struttura della tabella e il contenuto delle celle
- Referenza API: documento