A jegyzet dokumentummal való munka
A Bizottság Document a klassz az Aspose.Note for Python document object model (DOM) gyökere . Minden olvasás, átjárás vagy export művelet egy Document példány, amely a következőket képviseli: egyetlen .one A részlet fájlt.
Dokumentum betöltése
Töltés egy fájl útvonalról
Adja át az utat a… .one közvetlenül a Document a konstruktor:
from aspose.note import Document
doc = Document("MyNotes.one")A bináris áramlék terhelése
Használjon fájlhoz hasonló objektumot, ha az adatok hálózati válaszból, felhő tároló blobból vagy memóriában lévő pufferből származnak:
from pathlib import Path
from aspose.note import Document
with Path("MyNotes.one").open("rb") as f:
doc = Document(f)Üres dokumentum létrehozása
A következőket kell létrehozni: Document nem indokolva egy új OneNote dokumentum programozását:
from aspose.note import Document, Page
doc = Document()
doc.AppendChildLast(Page())A lehetőségekkel töltés
Használat LoadOptions a töltés idején az opcionális paraméterek beállításához:
from aspose.note import Document, LoadOptions
opts = LoadOptions()
opts.LoadHistory = True # include page revision history in the DOM
doc = Document("MyNotes.one", opts)LoadOptions tulajdon | A típus: | Előzetesen megadott | Leírás |
|---|---|---|---|
LoadHistory | bool | False | Mikor? True, a laptörténeti módosítások szerepelnek a DOM-ban és hozzáférhetőek az interneten keresztül . Document.GetPageHistory |
DocumentPassword | `str | None` | None |
Dokumentumformátum felismerése
A Bizottság FileFormat A tulajdonság meghatározza, hogy a fájl mely OneNote formátumváltozatot használja:
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 érték | Leírás |
|---|---|
OneNote2010 | Standard .one OneNote 2010 és újabb verziókban készített fájl |
OneNoteOnline | .one OneNote Online / Microsoft 365 által írt fájl |
OneNote2007 | Örökség .one OneNote 2007 formátumából |
Unknown | Nem sikerült azonosítani a formátumot. |
Iteráló oldalak
A oldalak a közvetlen gyermekei. Document.Használjon egy for egyszerű iteráció:
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}]")Használat GetChildNodes(Page) hogy egyszerre egy betűzött listát kapjon az összes oldalról:
from aspose.note import Document, Page
doc = Document("MyNotes.one")
pages = doc.GetChildNodes(Page)
print(f"Total pages: {len(pages)}")Oldalas metaadatok
| Tárgyak | A típus: | Leírás |
|---|---|---|
Title | `Title | None` |
Author | `str | None` |
CreationTime | `datetime | None` |
LastModifiedTime | `datetime | None` |
Level | `int | None` |
IsConflictPage | bool | True ha az oldal egy szinkronizált konfliktus másolat. |
A dokumentumfa átjárása
Document örökölte a CompositeNode, amely teljes fa átjárási módszereket ad:
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))A DOM hierarchiája:
Document
└── Page (0..n)
├── Title
│ ├── TitleText (RichText)
│ ├── TitleDate (RichText)
│ └── TitleTime (RichText)
└── Outline (0..n)
└── OutlineElement (0..n)
├── RichText
├── Image
├── Table
│ └── TableRow → TableCell → RichText / Image
└── AttachedFileA fő átjárási módszerek a következőkből származnak: CompositeNode:
| Módszer | Leírás |
|---|---|
GetChildNodes(NodeType) | A megadott típushoz megfelelő összes leszármazott gépelt listáját adja vissza. |
AppendChildLast(node) | A gyermek listánál egy gyerek csomópontot kell hozzáadni. |
AppendChildFirst(node) | Adj egy gyermek csomót a kezdetben |
InsertChild(index, node) | Egy adott indexbe helyezzen egy gyermeket. |
RemoveChild(node) | Eltávolítani a gyermek csomót |
GetEnumerator() | Iterált közvetlen gyermekek |
Oldalak története
Ha tele van LoadHistory=True, Document.GetPageHistory Visszaadja az összes mentett módosítást. egy oldalról, a legrégebbiről a legújabbra sorolva:
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}")Megjegyzés::
GetPageHistoryüres értékkel tér vissza.PageHistoryobjektív, amikor:LoadHistoryaz aFalseMindig beállítva.opts.LoadHistory = Trueha szükség van rá, a betöltés előtt. felülvizsgálati adatok.
Takarítás és export
Használat Document.Save PDF az egyetlen támogatott exportformátum.
Tárolja egy fájlba
from aspose.note import Document, SaveFormat
doc = Document("MyNotes.one")
doc.Save("output.pdf", SaveFormat.Pdf)Működés a memóriában
import io
from aspose.note import Document, SaveFormat
doc = Document("MyNotes.one")
buf = io.BytesIO()
doc.Save(buf, SaveFormat.Pdf)
pdf_bytes = buf.getvalue()Megőrzés opciókkal
Használat PdfSaveOptions (az Európai Unió Hivatalos Lapjában) aspose.note.saving) a lapválasztás ellenőrzésére:
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()Fontos.: A PDF exportra a ReportLab függőség szükséges. A telepítéshez:
pip install "aspose-note[pdf]".
A szerkezetváltozás észlelése
Hívj! DetectLayoutChanges a dokumentum módosítása után, hogy újra kiszámítsa az elrendezés mérőszámait. mentése előtt:
from aspose.note import Document, Page
doc = Document()
page = Page()
doc.AppendChildLast(page)
# ... add content to page ...
doc.DetectLayoutChanges()
doc.Save("output.pdf")Tippek és legjobb gyakorlatok
- Egyszer tölteni, többször lekérdezni.:
Documentaz egész.oneA memóriába a Várj egy percet!Documenteset és hívásGetChildNodestöbbször, mint a következőkben: Minden egyes lekérdezéshez újra tölteni a fájlt. - A csekk.
IsConflictPage: A OneNote szinkronizációval konfliktusos oldalak is előállíthatók. Filtráljon a következőkkel:[p for p in doc if not p.IsConflictPage]a tartalom feldolgozása előtt. - Használat
LoadHistory=False(alapértelmezés szerint) a sebességre vonatkozóan:A laptörténet jelentős memóriát ad hozzá, és a Csak a beállítottLoadHistory=Trueamikor kifejezetten szükség van a felülvizsgálati adatokra. - Nagy fájlokhoz való áramlás: A felolvasás során egy nyílt fájlobjektumot adja át az útvonalszál helyett . nagy
.oneA programot a parszálás befejezése után nyitva kell tartani. - Hívj!
DetectLayoutChangeselőzőlegSave:A dokumentum programozási konstrukciójának megtervezése: és a csatlakozó csomópontok, hívásDetectLayoutChanges()a felület koordinátáinak biztosítása érdekében, a PDF-be történő exportálás előtt következetes.
Általános kérdések
| A kérdés | Okok | Megjavítani. |
|---|---|---|
IncorrectPasswordException terhelve | A fájl titkosított; a titkozott dokumentumok nem támogathatók. | Szerezzen egy titkosított másolatot a fájltól. |
FileCorruptedException terhelve | A fájl törléses vagy nem támogatott belső formátumban van. | Ellenőrizze, hogy a fájl érvényes. .one rész (nem a) .onetoc2 tartalomtáblás) |
UnsupportedSaveFormatException mentés | PDF- formaton kívüli formátumban menteni próbálkozott. | Csak a következők: SaveFormat.Pdf exportra támogatott |
Üres. GetPageHistory eredmény | LoadOptions.LoadHistory nem állított be a True a rakodás előtt | Újra töltse a dokumentumot: opts.LoadHistory = True |
ModuleNotFoundError: reportlab | PDF exportolás kísérlete a PDF extra nélkül | Menj! pip install "aspose-note[pdf]" |
FAQ
Milyen OneNote formátumokat tartalmazhat.Fogalmaz olvasható?
Mindhárom OneNote-részlet formátuma: OneNote2007, OneNote2010,és a következők: OneNoteOnline. Használat doc.FileFormat annak azonosítására, hogy melyik változatot töltötték be.
Visszaírhatom a… .one - A fájl, miután elolvastad?
Nem, visszaírom a… .one nem valósítható meg. Export to PDF with Document.Save a következő: csak a kiviteli műveletet támogatja.
Hogyan olvassak egy adott oldalt cím szerint?
Iterációs oldalak és összehasonlítás page.Title.TitleText.Text a célszekrényre:
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,
)Hogyan számolhatom az aloldalt a felső szintű oldalaktól elkülönítve?
Használat page.Level: az 1. szint a legmagasabb, a 2. szint egy aloldal és így tovább.
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)}")Célja.Fogalmazás .onetoc2 tartalomtáblák?
Nem, csak… .one A programok támogatják a részlet fájlok. .onetoc2 A jegyzetfüzet fel fogja emelni a FileCorruptedException.
API-referencia összefoglaló
| Rendszer / módszer | Leírás |
|---|---|
Document(path_or_stream, options?) | Töltés a .one üres dokumentum létrehozása vagy fájl felállítását |
Document.FileFormat | A formatváltozat (FileFormat enum) |
Document.GetChildNodes(NodeType) | A megadott típus összes leszármazotta csomópontjának felvételére . |
Document.GetPageHistory(page) | Szerezzen egy oldal módosítási történelmét (követelmény) LoadHistory=True) |
Document.Save(target, format_or_options) | PDF-be exportálás fájl útvonalon vagy áramlással |
Document.DetectLayoutChanges() | Újra számítsuk ki a layout mérőszámokat programos szerkesztések után |
Document.Accept(visitor) | A DOM-on egy DocumentVisitor alosztály |
LoadOptions.LoadHistory | Beállítva: True A DOM-be az oldalak felülvizsgálatának beillesztése. |
LoadOptions.DocumentPassword | Tartósított; titkosított fájlok emelése IncorrectPasswordException |
FileFormat | Enum: OneNote2010, OneNoteOnline, OneNote2007, Unknown |
SaveFormat.Pdf | Az egyetlen támogatott exportformátum |
PageHistory.Count | A rendelkezésre álló oldal-módosítások száma |
Page.Level | Aloltalom (1 = felső szint) |
Page.IsConflictPage | True szinkronizált konfliktus másolatok esetében |
Lásd még:
- A szöveg kivonása: egyszerű szöveg és formázott futtatás kivonása
- PDF-kivitel: export opció, oldal kiválasztása és áramlással történő kimeneti megjelenítés
- Fotók és mellékletek: beágyazott képek és csatolt fájlok kivonása.
- Táblázatok: elemző táblázat szerkezet és cellák tartalma
- API hivatkozás: dokumentum