Práce s dokumentem poznámek

Úřad pro bezpečnost a ochranu zdraví Document třída je kořenem Aspose. Poznámka pro Python dokument objektový model (DOM). Každá čtení, průcházka nebo vývozní operace začíná s Document Příklad, který představuje Jediná. .one sekce soubor.


Naložení dokumentu

Naložení ze stezky souboru

Přejít cestu k… .one Příběh přímo do Úřadu. Document konstruktor:

from aspose.note import Document

doc = Document("MyNotes.one")

Zátěž z binárního proudu

Použijte souborový objekt, když data pocházejí z odpovědi sítě, blobu cloudového ukládání nebo paměťové buffer:

from pathlib import Path
from aspose.note import Document

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

Vytvořit prázdný dokument

Vytvořte si Document bez argumentů pro programově vytvoření nového dokumentu OneNote:

from aspose.note import Document, Page

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

Náklad s možností

Použití: LoadOptions nastavit volitelné parametry při načítání:

from aspose.note import Document, LoadOptions

opts = LoadOptions()
opts.LoadHistory = True   # include page revision history in the DOM
doc = Document("MyNotes.one", opts)
LoadOptions majetekTyp:PředvoleněPopis:
LoadHistoryboolFalseKdy? True, revize historie stránek jsou zahrnuty do DOM a přístupné prostřednictvím Document.GetPageHistory
DocumentPassword`strNone`None

Zjistění formátu dokumentu

Úřad pro bezpečnost a ochranu zdraví FileFormat vlastnost identifikuje, který variant formátu OneNote soubor používá:

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 hodnotaPopis:
OneNote2010Standardní .one soubor napsaný pomocí OneNote 2010 a novějšího systému
OneNoteOnline.one soubor napsaný pomocí OneNote Online / Microsoft 365
OneNote2007Původní název: .one formát z OneNote 2007
UnknownNešlo identifikovat formát

Iterující stránky

Stránky jsou přímými dětmi Document.Použijte: for smyčka pro jednoduchou iteraci:

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žití: GetChildNodes(Page) získat zapsaný seznam všech stránek najednou:

from aspose.note import Document, Page

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

Metadata stránek

VlastnictvíTyp:Popis:
Title`TitleNone`
Author`strNone`
CreationTime`datetimeNone`
LastModifiedTime`datetimeNone`
Level`intNone`
IsConflictPageboolTrue pokud je stránka synchronizovaná konfliktní kopie

Procházení stromem dokumentů

Document dědictví z: CompositeNode, což mu dává plné metody procházení 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))

Hierarchie 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

Klíčové metody procházení zdězené z CompositeNode:

MetodikaPopis:
GetChildNodes(NodeType)Zpětný kód:
AppendChildLast(node)Přidání dětského uzlu na konec seznamu dětí .
AppendChildFirst(node)Přidat dítětský uzel na začátku .
InsertChild(index, node)Vložte dítě do určitého indexu.
RemoveChild(node)Odstranit dětský uzel
GetEnumerator()Iterované přímé děti

Historie stránek

Když je naložen s: LoadHistory=True, Document.GetPageHistory Vrátí všechny uložené změny z jedné stránky, pořaděná od nejstaršího k nejnovějšímu:

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 vrací prázdné číslo. PageHistory předmětem, když LoadHistory je: False (default) Vždy nastaven opts.LoadHistory = True před nakládkou, pokud je to nutné. údaje o revizi.


Ušetření a vývoz

Použití: Document.Save PDF je jediný podporovaný exportní formát.

Uložit do souboru

from aspose.note import Document, SaveFormat

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

Uložení do souboru paměti

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žení s možnostmi

Použití: PdfSaveOptions (od aspose.note.saving) pro ovládání výběru stránek:

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é .: Export PDF vyžaduje volitelnou závislost ReportLab. Nainstalujte to s … pip install "aspose-note[pdf]".


Zjistit změny v uspořádání

Zavolej . DetectLayoutChanges po úpravě dokumentu k přepočítání metrik rozložení před uložení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 nejlepší postupy

  • Jednou načten, mnohokrát vyřízen.: Document naloží celou .one soubor do paměti na - Počkej, počkej. Document příklad a volání GetChildNodes opakovaně než Přeložení souboru pro každý dotaz.
  • Ček. IsConflictPage:Synchronizace OneNote může vytvářet konfliktní stránky. Filtrovat pomocí [p for p in doc if not p.IsConflictPage] před zpracováním obsahu.
  • Použití: LoadHistory=False (podstatné) pro rychlost: Historie stránek přidává významnou paměť a Parse nadhead. pouze nastavit LoadHistory=True když výslovně potřebujete údaje o revizi.
  • Proud pro velké soubory: Přejít otevřený soubor objekt místo cesty řetězce při čtení velké .one soubory, aby se zabránilo udržování otevřených souborů po dokončení analýzy.
  • Zavolej . DetectLayoutChanges předchozí Save:Při programovém vytváření dokumentu: a připojené uzly, volání DetectLayoutChanges() zajištění, aby souřadnice rozvrhu byly před exportem do PDF.

Obvyklé problémy

Výše:Příčina:Opravy
IncorrectPasswordException na nákladuSoubor je zašifrovaný; šifrované dokumenty nejsou podporovány.Získejte nekódovanou kopii souboru .
FileCorruptedException na nákladuSoubor je zkrácený nebo má nepodporovaný vnitřní formát.Ověřit , zda je soubor platný . .one oddíl (ne) .onetoc2 (včetně příspěvku)
UnsupportedSaveFormatException na uloženíPokus o uložení do jiného formátu než PDFPouze: SaveFormat.Pdf je podporován pro vývoz
Prázdný . GetPageHistory výsledekLoadOptions.LoadHistory nebyla nastavena na: True před nakládkouNové načtení dokumentu s: opts.LoadHistory = True
ModuleNotFoundError: reportlabPokus o export PDF bez dodatku PDFBěžte. pip install "aspose-note[pdf]"

FAQ

Jaké formáty OneNote může obsahovat.Příčítání poznámky?

Všechny tři formáty sekcí programu OneNote: OneNote2007, OneNote2010,a) OneNoteOnline. Použití: doc.FileFormat identifikovat, která varianta byla naložena.

Můžu ti napsat zpět? .one - Po přečtení?

Ne, píšu zpátky na… .one není implementován. Export do PDF s Document.Save je to: podporuje pouze výstupní operaci.

Jak čtu konkrétní stránku podle názvu?

Iterovat stránky a porovnávat page.Title.TitleText.Text na cílový řetěz:

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

Jak počítám podstránky odděleně od stránek nejvyšší úrovně?

Použití: page.Level: úroveň 1 je vrchní, úroveň 2 je podstránka a tak dále.

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é.Podpora poznámky .onetoc2 Soubory obsahu?

Ne, jen… .one soubory sekce jsou podporovány. .onetoc2 Notebooky se zvednou. FileCorruptedException.


Souhrnná referenční informace API

Třída / metodaPopis:
Document(path_or_stream, options?)Náklad a .one soubor nebo vytvoření prázdného dokumentu
Document.FileFormatZjištěná varianta formátu (FileFormat enum) se vztahuje k:
Document.GetChildNodes(NodeType)Získejte všechny potomkové uzly daného typu .
Document.GetPageHistory(page)Získejte historii revizí pro stránku (vyžaduje) LoadHistory=True)
Document.Save(target, format_or_options)Export do PDF souboru podle cesty nebo proudu
Document.DetectLayoutChanges()Zpětný výpočet metrik rozvrhu po programových úpravách
Document.Accept(visitor)Procházka DOM pomocí DocumentVisitor podtřída
LoadOptions.LoadHistoryNastavení na: True zahrnout revize stránek do DOM
LoadOptions.DocumentPasswordRezervované; šifrované soubory vybírají IncorrectPasswordException
FileFormat- Ano , pane .: OneNote2010, OneNoteOnline, OneNote2007, Unknown
SaveFormat.PdfJediný podporovaný exportní formát
PageHistory.CountPočet dostupných revizí stránek
Page.LevelHloubka podstránky (1 = horní úroveň)
Page.IsConflictPageTrue pro synchronizační konflikty kopií

Viz také:

 Čeština