Práca s dokumentom poznámky

Úrad pre bezpečnosť a ochranu zdravia Document trieda je koreňom Aspose. Poznámka pre model objektov dokumentu v Pythone (DOM). Každá čítacia, prechádzanie alebo export operácie začína s Document instancia, ktorá predstavuje jedno- .one sekcia súboru.


Zaťažovanie dokumentu

Naloženie z cesty súboru

Prejdite cestu na: .one priamo na úrad. Document konštruktor:

from aspose.note import Document

doc = Document("MyNotes.one")

Zaťaženie z binárneho prúdu

Používajte objekt podobný súboru, keď dáta pochádzajú z sieťovej odpovede, blobu cloudového ukladania alebo pamäťového bufera:

from pathlib import Path
from aspose.note import Document

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

Vytvorenie prázdneho dokumentu

Vytvorte si: Document bez argumentov na programovanie nového dokumentu OneNote:

from aspose.note import Document, Page

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

Náklad s možnosťami

Použitie: LoadOptions na nastavenie voliteľných parametrov v čase zaťaženia:

from aspose.note import Document, LoadOptions

opts = LoadOptions()
opts.LoadHistory = True   # include page revision history in the DOM
doc = Document("MyNotes.one", opts)
LoadOptions majetokTyp:Predvolené:Opis:
LoadHistoryboolFalseKedy? True, revízie histórie stránok sú zahrnuté do DOM a prístupné prostredníctvom: Document.GetPageHistory
DocumentPassword`strNone`None

Zistenie formátu dokumentu

Úrad pre bezpečnosť a ochranu zdravia FileFormat vlastnosť identifikuje, ktorý variant formátu OneNote súbor používa:

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 hodnotaOpis:
OneNote2010Štandardné .one súbor napísaný pomocou OneNote 2010 a novších verzií
OneNoteOnline.one súbor napísaný pomocou OneNote Online / Microsoft 365
OneNote2007Zákony .one formát z OneNote 2007
UnknownNevyšlo identifikovať formát

Iterujúce stránky

Stránky sú priamymi deťmi Document.Použite: for oblúk pre jednoduchú iteráciu:

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

Použitie: GetChildNodes(Page) získať listinu všetkých strán naraz:

from aspose.note import Document, Page

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

Metadata stránky

VlastníctvoTyp:Opis:
Title`TitleNone`
Author`strNone`
CreationTime`datetimeNone`
LastModifiedTime`datetimeNone`
Level`intNone`
IsConflictPageboolTrue ak je stránka synchronizovaná konfliktná kópia

Prechádzanie stromom dokumentov

Document dedičstvo od: CompositeNode, čo mu dáva plné metódy prechodu cez stromy:

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

Hierarchia 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

Kľúčové metódy prechodu zdedené z CompositeNode:

MetódaOpis:
GetChildNodes(NodeType)Vrátiť typovaný zoznam všetkých potomkov zodpovedajúcich danému typu
AppendChildLast(node)Pridať detský uzol na koniec zoznamu detí .
AppendChildFirst(node)Pridať detský uzol na začiatku .
InsertChild(index, node)Vložte dieťa do špecifického indexu.
RemoveChild(node)Odstrániť detský uzol
GetEnumerator()Iterované priame deti

História stránky

Keď je naložený s: LoadHistory=True, Document.GetPageHistory vráti všetky uložené úpravy na jednej strane, usporiadané od najstaršej po najnovšiu:

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

Poznámka:: GetPageHistory vráti prázdny kód. PageHistory predmetom, keď: LoadHistory je: False (predvolené) Vždy nastavené opts.LoadHistory = True pred nakladaním, ak potrebujete. údaje z revízie.


Ušetrenie a vývoz

Použitie: Document.Save PDF je jediný podporovaný formát vývozu.

Uložiť do súboru

from aspose.note import Document, SaveFormat

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

Uložiť do in-memory prúdu

import io
from aspose.note import Document, SaveFormat

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

Uložiť s možnosťami

Použitie: PdfSaveOptions (od aspose.note.saving) na ovládanie výberu stránok:

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

Dôležité .: Vývoz PDF vyžaduje voliteľnú závislosť ReportLab. Inštalovať s: pip install "aspose-note[pdf]".


Odhaľovanie zmien v rozložení

Zavolajte . DetectLayoutChanges po úprave dokumentu na opätovný výpočet metrik rozloženia pred ukladaním:

from aspose.note import Document, Page

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

# ... add content to page ...

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

Tipy a najlepšie postupy

  • Naloženie raz, vyhľadávanie mnohokrát: Document zaťahuje celú .one súbor do pamäte na - Zastavte sa. Document Prípad a volanie GetChildNodes opakovane skôr ako opätovné načítanie súboru pre každý dotaz.
  • Prehľad IsConflictPage: Synchronizácia OneNote môže vytvárať konfliktné stránky. Filtrovať pomocou [p for p in doc if not p.IsConflictPage] pred spracovaním obsahu.
  • Použitie: LoadHistory=False (predvolené) pre rýchlosť: História stránky pridáva významnú pamäť a Parse nadhead. len nastaviť LoadHistory=True keď výslovne potrebujete údaje o revízii.
  • Prenos pre veľké súbory: Pri čítaní prejsť objektom otvoreného súboru namiesto reťazca cesty . veľká .one súbory, aby sa zabránilo držaniu súbor otvorený po dokončení analýzy.
  • Zavolajte . DetectLayoutChanges predtým Save: Pri programovom vytváraní dokumentu a pripojené uzly, volanie DetectLayoutChanges() zabezpečiť, aby sú koordináty rozloženia súlad pred exportom do PDF.

Spoločné problémy

VýstavaPríčina:Oprava
IncorrectPasswordException na zaťaženieSúbor je šifrovaný; šiferované dokumenty nie sú podporované.Získať nekrypovanú kópiu súboru
FileCorruptedException na zaťaženieSúbor je zredukovaný alebo má nepodporovaný vnútorný formát .Overte , či je súbor platný . .one časť (nie .onetoc2 (v časti “Tábla obsahu”)
UnsupportedSaveFormatException na ukladanieSkúšal som uložiť do iného formátu ako PDF .Len: SaveFormat.Pdf je podporovaný na vývoz.
Prázdne . GetPageHistory výsledokLoadOptions.LoadHistory nie je nastavený na: True pred nakladanímOpäť načítať dokument s opts.LoadHistory = True
ModuleNotFoundError: reportlabPokúsil sa exportovať PDF bez dodatku PDFBež! pip install "aspose-note[pdf]"

FAQ

Aké formáty programu OneNote môžu byť použité.Čítanie poznámky?

Všetky tri formáty sekcií programu OneNote: OneNote2007, OneNote2010,a) OneNoteOnline. Použitie: doc.FileFormat identifikovať, ktorá varianta bola naložená.

Môžem ti napísať späť? .one - Ak si to prečítala?

Nie, písem späť na… .one nie je implementovaná. Exportovať do PDF s Document.Save je to: podporuje iba výstupnú operáciu.

Ako si prečítať konkrétnu stránku podľa názvu?

Iterovať stránky a porovnávať page.Title.TitleText.Text na cieľový reťazec:

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

Ako počítam podstránky oddelene od stránok najvyššej úrovne?

Použitie: page.Level: úroveň 1 je vrchná, úroveň 2 je podstránka a tak ďalej.

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

Je to možné.Poznámka podporuje: .onetoc2 súbory obsahu?

Nie, len… .one sú podporované. .onetoc2 Notebooky budú zvyšovať FileCorruptedException.


Zhrnutie referenčného API

Trieda / metódaOpis:
Document(path_or_stream, options?)Zaťaženie a .one súbor alebo vytvorenie prázdneho dokumentu
Document.FileFormatZistená varianta formátu (FileFormat enum)
Document.GetChildNodes(NodeType)Vyhľadávanie všetkých potomkových uzlov daného typu .
Document.GetPageHistory(page)Získať históriu revízií pre stránku (vyžaduje) LoadHistory=True)
Document.Save(target, format_or_options)Export do PDF pomocou cesty alebo prúdu súboru
Document.DetectLayoutChanges()Prepočítanie metrik rozloženia po programových úpravách
Document.Accept(visitor)Prejsť DOM pomocou DocumentVisitor podtriedka
LoadOptions.LoadHistoryNastavenie na: True zahrnúť revízie stránok do DOM
LoadOptions.DocumentPasswordRezervované; šifrované súbory zdvihnúť IncorrectPasswordException
FileFormatEnum: OneNote2010, OneNoteOnline, OneNote2007, Unknown
SaveFormat.PdfJediný podporovaný formát vývozu
PageHistory.CountPočet dostupných revízií stránok
Page.LevelHĺbka podstránok (1 = horná úroveň)
Page.IsConflictPageTrue pre synchronizované konfliktujúce kópie

Pozri tiež:

 Slovenčina