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 EigentumTypDefaultBeschreibung
LoadHistoryboolFalseWann True, die Seite-Historie-Revisionen sind in den DOM enthalten und über Document.GetPageHistory
DocumentPassword`strNone`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 WertBeschreibung
OneNote2010Standard .one Datei, die von OneNote 2010 und später geschrieben wurde
OneNoteOnline.one Datei von OneNote Online / Microsoft 365
OneNote2007Erbe .one Format von OneNote 2007
UnknownFormat 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

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

Schlüssel-Trans-Methoden, die von CompositeNode:

MethodeBeschreibung
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: GetPageHistory Rückkehr eines leeren PageHistory Objekt, wenn LoadHistory ist False (die Default) immer eingestellt opts.LoadHistory = True Vor 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: Document Lade das ganze .one Datei in die Erinnerung auf Bau - ein halten Document Instanz und Anruf GetChildNodes wiederholt 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 Set LoadHistory=True wenn 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 .one Dateien, um die Datei offen zu halten, nachdem die Parse abgeschlossen ist.
  • Anruf DetectLayoutChanges vor Save: Wenn Sie ein Dokument programmatisch erstellen und die Noten aufzuhalten, rufen DetectLayoutChanges() Um sicherzustellen, dass die Layout-Koordinate Konsistent vor Export in PDF.

Gemeinsame Probleme

ThemaUrsacheFix
IncorrectPasswordException auf LastDateien sind verschlüsselt; verschlüsselte Dokumente werden nicht unterstütztErhalten Sie eine unschlüsselte Kopie des Dateien
FileCorruptedException auf LastDatei 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 SaveVersucht, in einem anderen Format als PDF zu speichernNur SaveFormat.Pdf Unterstützt wird für Export
leere GetPageHistory ErgebnisLoadOptions.LoadHistory wurde nicht auf True Vor der LadungWiederladen des Dokuments mit opts.LoadHistory = True
ModuleNotFoundError: reportlabPDF Export versucht ohne PDF ExtraRennen 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 / MethodeBeschreibung
Document(path_or_stream, options?)Laden Sie A .one Datei oder erstellen eines leeren Dokuments
Document.FileFormatDie 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.LoadHistorySet zu True zu den Seitenrevisionen in den DOM einfügen
LoadOptions.DocumentPasswordReserviert; verschlüsselte Dateien erhöhen IncorrectPasswordException
FileFormatEnum ist: OneNote2010, OneNoteOnline, OneNote2007, Unknown
SaveFormat.PdfDer einzige unterstützte Exportformat
PageHistory.CountAnzahl der verfügbaren Seitenrevisionen
Page.LevelSub-Seite Tiefe (1 = Top-Level)
Page.IsConflictPageTrue für Synchronisierung Konfliktskopien

Siehe auch

 Deutsch