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 majetek | Typ: | Předvoleně | Popis: |
|---|---|---|---|
LoadHistory | bool | False | Kdy? True, revize historie stránek jsou zahrnuty do DOM a přístupné prostřednictvím Document.GetPageHistory |
DocumentPassword | `str | None` | 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 hodnota | Popis: |
|---|---|
OneNote2010 | Standardní .one soubor napsaný pomocí OneNote 2010 a novějšího systému |
OneNoteOnline | .one soubor napsaný pomocí OneNote Online / Microsoft 365 |
OneNote2007 | Původní název: .one formát z OneNote 2007 |
Unknown | Neš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 | `Title | None` |
Author | `str | None` |
CreationTime | `datetime | None` |
LastModifiedTime | `datetime | None` |
Level | `int | None` |
IsConflictPage | bool | True 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
└── AttachedFileKlíčové metody procházení zdězené z CompositeNode:
| Metodika | Popis: |
|---|---|
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::
GetPageHistoryvrací prázdné číslo.PageHistorypředmětem, kdyžLoadHistoryje:False(default) Vždy nastavenopts.LoadHistory = Truepř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.:
Documentnaloží celou.onesoubor do paměti na - Počkej, počkej.Documentpříklad a voláníGetChildNodesopakovaně 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 nastavitLoadHistory=Truekdyž 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é
.onesoubory, aby se zabránilo udržování otevřených souborů po dokončení analýzy. - Zavolej .
DetectLayoutChangespř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ákladu | Soubor je zašifrovaný; šifrované dokumenty nejsou podporovány. | Získejte nekódovanou kopii souboru . |
FileCorruptedException na nákladu | Soubor 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ž PDF | Pouze: SaveFormat.Pdf je podporován pro vývoz |
Prázdný . GetPageHistory výsledek | LoadOptions.LoadHistory nebyla nastavena na: True před nakládkou | Nové načtení dokumentu s: opts.LoadHistory = True |
ModuleNotFoundError: reportlab | Pokus o export PDF bez dodatku PDF | Běž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 / metoda | Popis: |
|---|---|
Document(path_or_stream, options?) | Náklad a .one soubor nebo vytvoření prázdného dokumentu |
Document.FileFormat | Zjiš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.LoadHistory | Nastavení na: True zahrnout revize stránek do DOM |
LoadOptions.DocumentPassword | Rezervované; šifrované soubory vybírají IncorrectPasswordException |
FileFormat | - Ano , pane .: OneNote2010, OneNoteOnline, OneNote2007, Unknown |
SaveFormat.Pdf | Jediný podporovaný exportní formát |
PageHistory.Count | Počet dostupných revizí stránek |
Page.Level | Hloubka podstránky (1 = horní úroveň) |
Page.IsConflictPage | True pro synchronizační konflikty kopií |
Viz také:
- Výběr textu: extrahování prostého textu a formátovaných záběrů
- PDF exportování: možnosti exportu, výběr stránek a výkon proudu
- Obrázky a přílohy: extrahování vložených obrázků a přiložených souborů
- Tabulky: analýza struktury tabulky a obsahu buněk
- Odkaz na API: dokument