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 majetok | Typ: | Predvolené: | Opis: |
|---|---|---|---|
LoadHistory | bool | False | Kedy? True, revízie histórie stránok sú zahrnuté do DOM a prístupné prostredníctvom: Document.GetPageHistory |
DocumentPassword | `str | None` | 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 hodnota | Opis: |
|---|---|
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 |
OneNote2007 | Zákony .one formát z OneNote 2007 |
Unknown | Nevyš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íctvo | Typ: | Opis: |
|---|---|---|
Title | `Title | None` |
Author | `str | None` |
CreationTime | `datetime | None` |
LastModifiedTime | `datetime | None` |
Level | `int | None` |
IsConflictPage | bool | True 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
└── AttachedFileKľúčové metódy prechodu zdedené z CompositeNode:
| Metóda | Opis: |
|---|---|
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::
GetPageHistoryvráti prázdny kód.PageHistorypredmetom, keď:LoadHistoryje:False(predvolené) Vždy nastavenéopts.LoadHistory = Truepred 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:
Documentzaťahuje celú.onesúbor do pamäte na - Zastavte sa.DocumentPrípad a volanieGetChildNodesopakovane 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=Truekeď 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á
.onesúbory, aby sa zabránilo držaniu súbor otvorený po dokončení analýzy. - Zavolajte .
DetectLayoutChangespredtýmSave: Pri programovom vytváraní dokumentu a pripojené uzly, volanieDetectLayoutChanges()zabezpečiť, aby sú koordináty rozloženia súlad pred exportom do PDF.
Spoločné problémy
| Výstava | Príčina: | Oprava |
|---|---|---|
IncorrectPasswordException na zaťaženie | Súbor je šifrovaný; šiferované dokumenty nie sú podporované. | Získať nekrypovanú kópiu súboru |
FileCorruptedException na zaťaženie | Sú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 ukladanie | Skúšal som uložiť do iného formátu ako PDF . | Len: SaveFormat.Pdf je podporovaný na vývoz. |
Prázdne . GetPageHistory výsledok | LoadOptions.LoadHistory nie je nastavený na: True pred nakladaním | Opäť načítať dokument s opts.LoadHistory = True |
ModuleNotFoundError: reportlab | Pokúsil sa exportovať PDF bez dodatku PDF | Bež! 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óda | Opis: |
|---|---|
Document(path_or_stream, options?) | Zaťaženie a .one súbor alebo vytvorenie prázdneho dokumentu |
Document.FileFormat | Zistená 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.LoadHistory | Nastavenie na: True zahrnúť revízie stránok do DOM |
LoadOptions.DocumentPassword | Rezervované; šifrované súbory zdvihnúť IncorrectPasswordException |
FileFormat | Enum: OneNote2010, OneNoteOnline, OneNote2007, Unknown |
SaveFormat.Pdf | Jediný podporovaný formát vývozu |
PageHistory.Count | Počet dostupných revízií stránok |
Page.Level | Hĺbka podstránok (1 = horná úroveň) |
Page.IsConflictPage | True pre synchronizované konfliktujúce kópie |
Pozri tiež:
- Výber textu: extrahovanie jednoduchého textu a formátovaných zásahov
- PDF exportovanie: možnosti vývozu, výber stránok a výstup prúdu
- Obrázky a prílohy: extrakcia vložených obrázkov a priložených súborov
- Tabuľky: analýza štruktúry tabuľky a obsahu buniek
- Odkaz na API: Dokument