Arbeiten mit dem Note-Dokument
Die Document Die Klasse ist die Wurzel des Aspose.Note für das Dokument-Objektmodell (DOM) von Python. Jede Les-, Durch- oder Exportoperation beginnt mit einer Document Die Vorlage, die repräsentiert Ein Einzel .one Abschnitt Datei.
Laden eines Dokuments
Laden von einem Dateiweg
Über den Weg zu A .one Datei direkt an die Document Der Konstrukteur:
from aspose.note import Document
doc = Document("MyNotes.one")Laden von einem binären Stream
Verwenden Sie ein Datei-ähnliches Objekt, wenn die Daten aus einer Netzwerk-Reaktion, einem Cloud-Speicher-Block oder einem In-Memory-Buffert stammen:
from pathlib import Path
from aspose.note import Document
with Path("MyNotes.one").open("rb") as f:
doc = Document(f)Erstellen eines leeren Dokuments
Konstruktion A Document mit keinem Argument, ein neues OneNote-Dokument programmatisch zu erstellen:
from aspose.note import Document, Page
doc = Document()
doc.AppendChildLast(Page())Laden mit Optionen
Gebrauch LoadOptions Optionelle Parameter zu Lastzeit festlegen:
from aspose.note import Document, LoadOptions
opts = LoadOptions()
opts.LoadHistory = True # include page revision history in the DOM
doc = Document("MyNotes.one", opts)LoadOptions Eigentum | Typ | Default | Beschreibung |
|---|---|---|---|
LoadHistory | bool | False | Wann True, die Seite-Historie-Revisionen sind in den DOM enthalten und über Document.GetPageHistory |
DocumentPassword | `str | None` | None |
Dokumentenformat Detektion
Die FileFormat Eigenschaft identifiziert, welche OneNote Format Variante der Datei verwendet:
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 Wert | Beschreibung |
|---|---|
OneNote2010 | Standard .one Datei, die von OneNote 2010 und später geschrieben wurde |
OneNoteOnline | .one Datei von OneNote Online / Microsoft 365 |
OneNote2007 | Erbe .one Format von OneNote 2007 |
Unknown | Format kann nicht identifiziert werden |
Iterating Seiten
Die Seiten sind die direkten Kinder Document.Verwenden Sie A for Lauf für einfache Iteration:
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}]")Gebrauch GetChildNodes(Page) um eine angezeigte Liste aller Seiten gleichzeitig zu erhalten:
from aspose.note import Document, Page
doc = Document("MyNotes.one")
pages = doc.GetChildNodes(Page)
print(f"Total pages: {len(pages)}")Metadata Seite
| Eigentum | Typ | Beschreibung |
|---|---|---|
Title | `Title | None` |
Author | `str | None` |
CreationTime | `datetime | None` |
LastModifiedTime | `datetime | None` |
Level | `int | None` |
IsConflictPage | bool | True Wenn die Seite eine Sync-Konfliktskopie ist |
Über den Dokumentenbaum
Document Erbe von CompositeNode, es mit vollem Baum-Trousale Methoden zu geben:
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))Die DOM-Hierarchie ist:
Document
└── Page (0..n)
├── Title
│ ├── TitleText (RichText)
│ ├── TitleDate (RichText)
│ └── TitleTime (RichText)
└── Outline (0..n)
└── OutlineElement (0..n)
├── RichText
├── Image
├── Table
│ └── TableRow → TableCell → RichText / Image
└── AttachedFileSchlüssel-Trans-Methoden, die von CompositeNode:
| Methode | Beschreibung |
|---|---|
GetChildNodes(NodeType) | Zurück eine angegebenen Liste aller Nachkommen, die den angegebenen Typ entsprechen |
AppendChildLast(node) | Hinzufügen eines Kindesnoten am Ende der Kinderliste |
AppendChildFirst(node) | Hinzufügen eines Kindes Node am Anfang |
InsertChild(index, node) | Einziehen eines Kindes auf einen bestimmten Index |
RemoveChild(node) | Entfernen Sie ein Kind Node |
GetEnumerator() | Die direkte Kinder |
Seite Geschichte
Wenn mit dem LoadHistory=True, Document.GetPageHistory alle gespeicherten Reviews zurück von einer Seite, bestellt von der ältesten bis zur neuesten:
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}")Note:
GetPageHistoryRückkehr eines leerenPageHistoryObjekt, wennLoadHistoryistFalse(die Default) immer eingestelltopts.LoadHistory = TrueVor der Ladung, wenn Sie brauchen Daten über die Revision.
Sparen und Exportieren
Gebrauch Document.Save PDF ist das einzige unterstützte Exportformat.
Speichern Sie auf eine Datei
from aspose.note import Document, SaveFormat
doc = Document("MyNotes.one")
doc.Save("output.pdf", SaveFormat.Pdf)Speichern Sie in einem In-Memory Stream
import io
from aspose.note import Document, SaveFormat
doc = Document("MyNotes.one")
buf = io.BytesIO()
doc.Save(buf, SaveFormat.Pdf)
pdf_bytes = buf.getvalue()Sparen Sie Optionen
Gebrauch PdfSaveOptions (von aspose.note.saving• zur Auswahl der Seite:
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()Wichtig: PDF Export erfordert die optionale ReportLab Abhängigkeit. Installieren Sie es mit
pip install "aspose-note[pdf]".
Layout Veränderungen zu erkennen
Anruf DetectLayoutChanges nach der Änderung des Dokuments um die Layout-Metriken zu neu zu berechnen Vor dem Sparen:
from aspose.note import Document, Page
doc = Document()
page = Page()
doc.AppendChildLast(page)
# ... add content to page ...
doc.DetectLayoutChanges()
doc.Save("output.pdf")Tipps und beste Praktiken
- Laden Sie einmal, fragen Sie mehrmals:
DocumentLade das ganze.oneDatei in die Erinnerung auf Bau - ein haltenDocumentInstanz und AnrufGetChildNodeswiederholt statt Wiederladen der Datei für jede Anfrage. - Check
IsConflictPage: OneNote Sync kann Konfliktsseiten produzieren.[p for p in doc if not p.IsConflictPage]Vor der Verarbeitung von Inhalten. - Gebrauch
LoadHistory=False(Default) für Geschwindigkeit: Page history fügt signifikante memory und Schneller: nur SetLoadHistory=Truewenn Sie ausdrücklich Daten über die Revision benötigen. - Stream für große Dateien: Durchführen Sie ein offenes Dateiobjekt anstelle eines Path-Strack beim Lesen Große
.oneDateien, um die Datei offen zu halten, nachdem die Parse abgeschlossen ist. - Anruf
DetectLayoutChangesvorSave: Wenn Sie ein Dokument programmatisch erstellen und die Noten aufzuhalten, rufenDetectLayoutChanges()Um sicherzustellen, dass die Layout-Koordinate Konsistent vor Export in PDF.
Gemeinsame Probleme
| Thema | Ursache | Fix |
|---|---|---|
IncorrectPasswordException auf Last | Dateien sind verschlüsselt; verschlüsselte Dokumente werden nicht unterstützt | Erhalten Sie eine unschlüsselte Kopie des Dateien |
FileCorruptedException auf Last | Datei ist verblüffert oder hat ein nicht unterstütztes internes Format | Überprüfen Sie, ob das Datei gültig ist .one Abschnitt (nicht A .onetoc2 Tabelle der Inhalte) |
UnsupportedSaveFormatException auf Save | Versucht, in einem anderen Format als PDF zu speichern | Nur SaveFormat.Pdf Unterstützt wird für Export |
leere GetPageHistory Ergebnis | LoadOptions.LoadHistory wurde nicht auf True Vor der Ladung | Wiederladen des Dokuments mit opts.LoadHistory = True |
ModuleNotFoundError: reportlab | PDF Export versucht ohne PDF Extra | Rennen pip install "aspose-note[pdf]" |
FAQ
Welche OneNote-Formate kann Aspose.Note lesen?
Alle drei OneNote-Abschnittformate: OneNote2007, OneNote2010,und OneNoteOnline. Gebrauch doc.FileFormat zu bestimmen, welche Variante geladen wurde.
Kann ich zurück zu einem .one Datei nach dem Lesen?
No. Wenden Sie zurück zu .one nicht implementiert. Export in PDF mit Document.Save ist die nur die Ausgangsoperation unterstützt.
Wie kann ich eine bestimmte Seite nach Titel lesen?
Seiten zu vergleichen und zu vergleichen page.Title.TitleText.Text Zu Ihrem Zielstring:
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,
)Wie kann ich Sub-Seiten separat von Top-Level-Seiten berechnen?
Gebrauch page.Level: Level 1 ist Top-Level, Level 2 ist eine Unterseite, und so weiter.
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)}")Wir unterstützen Aspose.Note .onetoc2 Tabelle von Inhalten?
nicht nur .one Abschnittdateien werden unterstützt. .onetoc2 Notebooks werden aufsteigen FileCorruptedException.
API Referenzabschnitt
| Klasse / Methode | Beschreibung |
|---|---|
Document(path_or_stream, options?) | Laden Sie A .one Datei oder erstellen eines leeren Dokuments |
Document.FileFormat | Die Variante des Format (FileFormat Enum) |
Document.GetChildNodes(NodeType) | Retrüge alle Nachkommenknochen eines bestimmten Typs |
Document.GetPageHistory(page) | Erhalten Sie eine Revision-Historie für eine Seite (Anforderungen LoadHistory=True) |
Document.Save(target, format_or_options) | Exportieren Sie PDF-Datei durch Datei-Path oder Stream |
Document.DetectLayoutChanges() | Layoutmetriken nach programmatischen Edits neu berechnen |
Document.Accept(visitor) | Fahren Sie die DOM mit einem DocumentVisitor Unterklasse |
LoadOptions.LoadHistory | Set zu True zu den Seitenrevisionen in den DOM einfügen |
LoadOptions.DocumentPassword | Reserviert; verschlüsselte Dateien erhöhen IncorrectPasswordException |
FileFormat | Enum ist: OneNote2010, OneNoteOnline, OneNote2007, Unknown |
SaveFormat.Pdf | Der einzige unterstützte Exportformat |
PageHistory.Count | Anzahl der verfügbaren Seitenrevisionen |
Page.Level | Sub-Seite Tiefe (1 = Top-Level) |
Page.IsConflictPage | True für Synchronisierung Konfliktskopien |
Siehe auch
- Text Extraction: Ausgeben reich Text und formatierte Runs
- PDF Export: Exportoptionen, Seitewahl und Stream-Ausgang
- Bilder und Anlagen: Abfangen eingebauter Bilder und angeschlossenen Dateien
- Tisch: Parsing Tischstruktur und Zellgehalt
- API Referenz: Dokument