Lucrarea cu documentul de notă
În ceea ce priveşte Document clasa este rădăcina Aspose.Note pentru modelul obiectului document Python (DOM). Fiecare citire, traversare sau export operațiuni începe cu un Document o instanţă care reprezintă un singur .one secţiunea dosar.
Încărcarea unui document
Încărcare de pe o cale a fișierului
Treci pe o cale. .one - Da, domnule. Document constructor:
from aspose.note import Document
doc = Document("MyNotes.one")Sarcină dintr-un flux binar
Utilizați un obiect similar fișierului atunci când datele provin dintr-un răspuns de rețea, o bucătărie în cloud sau din memorie:
from pathlib import Path
from aspose.note import Document
with Path("MyNotes.one").open("rb") as f:
doc = Document(f)Crearea unui document gol
Construiţi un Document fără argumente pentru a crea un nou document OneNote programatic:
from aspose.note import Document, Page
doc = Document()
doc.AppendChildLast(Page())Sarcină cu opțiuni
Utilizare: LoadOptions pentru a stabili parametri opționali la timpul de încărcare:
from aspose.note import Document, LoadOptions
opts = LoadOptions()
opts.LoadHistory = True # include page revision history in the DOM
doc = Document("MyNotes.one", opts)LoadOptions proprietate | Tipul de vehicul | Default | Descriere: |
|---|---|---|---|
LoadHistory | bool | False | Când ? True, revizuirile istoricului paginii sunt incluse în DOM şi accesibile prin intermediul Document.GetPageHistory |
DocumentPassword | `str | None` | None |
Detectarea formatului documentelor
În ceea ce priveşte FileFormat proprietatea identifică care variantă de format OneNote folosește fișierul:
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 valoare | Descriere: |
|---|---|
OneNote2010 | Standardul .one fișier scris de OneNote 2010 și ulterior |
OneNoteOnline | .one fişier scris de OneNote Online / Microsoft 365 |
OneNote2007 | Moştenire .one format din OneNote 2007 |
Unknown | Format nu a putut fi identificat |
Pagini iterative
Paginile sunt copii direcţi ai Document.Foloseste un for buclă pentru iterare simplă:
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}]")Utilizare: GetChildNodes(Page) pentru a obține o listă tipografată de toate paginile la un moment dat:
from aspose.note import Document, Page
doc = Document("MyNotes.one")
pages = doc.GetChildNodes(Page)
print(f"Total pages: {len(pages)}")Metadate de pagină
| Proprietate | Tipul de vehicul | Descriere: |
|---|---|---|
Title | `Title | None` |
Author | `str | None` |
CreationTime | `datetime | None` |
LastModifiedTime | `datetime | None` |
Level | `int | None` |
IsConflictPage | bool | True dacă pagina este o copie de conflict sincronizată |
Trecerea prin arborele documentelor
Document moștenire de la: CompositeNode, oferindu-i metode complete de traversare a arborilor:
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))Ierarhia 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
└── AttachedFileMetodele cheie de traversare moștenite din CompositeNode:
| Metoda de evaluare | Descriere: |
|---|---|
GetChildNodes(NodeType) | Întoarce o listă tipată a tuturor descendenților care corespund tipului dat. |
AppendChildLast(node) | Adăugați un nod copil la sfârșitul listei de copii |
AppendChildFirst(node) | Adăugați un nod copil la început |
InsertChild(index, node) | Introduce un copil la un anumit index. |
RemoveChild(node) | Îndepărtează un nod copil |
GetEnumerator() | Copii direcți iterativi |
Istoricul paginii
Când este încărcat cu: LoadHistory=True, Document.GetPageHistory returnă toate reviziunile salvate de o pagină, ordonate din cea mai veche la cea 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}")Notă::
GetPageHistoryreturnă un gol.PageHistoryobiect atunci cândLoadHistoryeste:FalseÎntotdeauna setat.opts.LoadHistory = Trueînainte de încărcare, dacă este necesar. datele de revizuire.
Economisirea şi exportul
Utilizare: Document.Save PDF este singurul format de export suportat.
Salvare într-un fişier
from aspose.note import Document, SaveFormat
doc = Document("MyNotes.one")
doc.Save("output.pdf", SaveFormat.Pdf)Salvare într-un flux în memorie
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 cu opțiuni
Utilizare: PdfSaveOptions (din aspose.note.saving) pentru a controla selecția paginii:
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ă.: Exportul PDF necesită dependența opțională ReportLab. Instalaţi-o cu:
pip install "aspose-note[pdf]".
Detectarea schimbărilor de aspectare
Sună-mă. DetectLayoutChanges după modificarea documentului pentru a recalcula metricile de amenajare înainte de păstrare:
from aspose.note import Document, Page
doc = Document()
page = Page()
doc.AppendChildLast(page)
# ... add content to page ...
doc.DetectLayoutChanges()
doc.Save("output.pdf")Sfaturi şi cele mai bune practici
- Încărcătură o dată, întrebare de multe ori:
Documentîncărcătoarea întregii.oneFişier în memorie pe Construcţie.DocumentInstanţă şi apelGetChildNodesmai mult decât de câteva ori. Reîncărcarea fișierului pentru fiecare întrebare. - Verifică.
IsConflictPage: Sincronizarea OneNote poate produce pagini conflictuale. Filtrează cu:[p for p in doc if not p.IsConflictPage]înainte de prelucrarea conținutului. - Utilizare:
LoadHistory=False(default) pentru viteză: Istoricul paginii adaugă memorie semnificativă şi Parsează peste cap.LoadHistory=Truecând aveți nevoie în mod explicit de date de revizuire. - Stream pentru fișiere mari: Treci un obiect de fişier deschis în loc de o sârmă de căi când citeşti . mare
.onefişiere pentru a evita păstrarea dosarului deschis după terminarea parse. - Sună-mă.
DetectLayoutChangesînainte deSave: Atunci când se construiește un document în mod programatic şi noduri anexate, apelDetectLayoutChanges()pentru a asigura coordonatele de amenajare sunt: în mod consecvent înainte de exportul la PDF.
Probleme comune
| Numărul de date | Cauza | Fixare |
|---|---|---|
IncorrectPasswordException în încărcare | Fișierul este criptat; documentele criptate nu sunt suportate. | Obține o copie necriptată a fișierului |
FileCorruptedException în încărcare | Fişier truncat sau cu un format intern neînsoţit. | Verificați fișierul este un valid .one secţiunea (nu o .onetoc2 (în tabelul conținutului) |
UnsupportedSaveFormatException pe salvare | Încercare de salvare într-un alt format decât PDF | Doar … SaveFormat.Pdf este susținută pentru export |
Eliberaţi. GetPageHistory rezultatul | LoadOptions.LoadHistory nu a fost setat la: True înainte de încărcare | Reîncărcați documentul cu: opts.LoadHistory = True |
ModuleNotFoundError: reportlab | Export PDF încercat fără extra PDF | Fugiţi ! pip install "aspose-note[pdf]" |
FAQ
Ce formate OneNote pot fi utilizate.Citește nota?
Toate cele trei formate de secțiuni OneNote: OneNote2007, OneNote2010, și OneNoteOnline. Utilizare: doc.FileFormat pentru a identifica care variantă a fost încărcată.
Pot să-i scriu înapoi unui … .one Fişier după ce l-ai citit?
Nu, îi scriu înapoi. .one nu este implementat. Export la PDF cu Document.Save este de: numai operațiunea de ieșire suportată.
Cum citesc o pagină specifică după titlu?
Iterarea pagini și comparare page.Title.TitleText.Text la șirul țintă:
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,
)Cum număr subpaginile separat de paginile de nivel superior?
Utilizare: page.Level: nivelul 1 este cel de sus, nivelului 2 o subpagină și așa mai departe.
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)}")Se aplică.Suport de notă .onetoc2 fişiere de conţinut?
Nu, doar… .one fişierele secţiunii sunt suportate. .onetoc2 notebook-uri va ridica FileCorruptedException.
Rezultatele de la data aplicării.
| Clasa / metoda | Descriere: |
|---|---|
Document(path_or_stream, options?) | Încărcare a .one fişier sau creaţi un document gol |
Document.FileFormat | Varianta formatului detectată (FileFormat (număr) |
Document.GetChildNodes(NodeType) | Obține toate nodurile descendente de un anumit tip |
Document.GetPageHistory(page) | Obține istoricul revizuirii pentru o pagină (requerit) LoadHistory=True) |
Document.Save(target, format_or_options) | Export în PDF prin cale de acces sau flux |
Document.DetectLayoutChanges() | Calculare de metrice după modificări programatice |
Document.Accept(visitor) | Mergeți pe DOM folosind un DocumentVisitor subclasa |
LoadOptions.LoadHistory | Setat la: True să includă revizuirile de pagini în DOM |
LoadOptions.DocumentPassword | Rezervat; fişiere criptate de ridicare IncorrectPasswordException |
FileFormat | Enum: OneNote2010, OneNoteOnline, OneNote2007, Unknown |
SaveFormat.Pdf | Singurul format de export suportat |
PageHistory.Count | Numărul de revizuiri disponibile ale paginii |
Page.Level | Adâncimea subpaginii (1 = nivel superior) |
Page.IsConflictPage | True pentru copiile de conflict sincronizator |
Vezi și:
- Extractarea textului: extragerea textului simplu și a rularii formatate
- PDF pentru exportare:Opțiuni de export, selecție pagină și flux de ieșire
- Imagini și anexe: extragerea imaginilor încorporate și a fișierelor atașate
- Tabelul 1: structura tabelului și conținutul celulei de analiză
- Referință API: Document