Rad s dokumentom za napomenutosti
U skladu s člankom 1. Document class je korijen Aspose.Pomidba za Python dokumentni objekt model (DOM). Svaka čitanje, prelazak ili izvoz operacija počinje s Document primjer koji predstavlja Jednostavno. .one Odjeljeni dosje.
Upisivanje dokumenta
Opterećenje s puta datoteke
Predajte put na… .one Izvršite direktno na: Document konstruktor:
from aspose.note import Document
doc = Document("MyNotes.one")Opterećenje iz binarnog toka
Koristite datoteku sličan objekat kada podaci dolaze iz mrežnog odgovora, oblak skladištenja blob ili u memoriji bufera:
from pathlib import Path
from aspose.note import Document
with Path("MyNotes.one").open("rb") as f:
doc = Document(f)Stvaranje praznog dokumenta
Izgraditi Document bez argumenata za programski stvaranje novog OneNote dokumenta:
from aspose.note import Document, Page
doc = Document()
doc.AppendChildLast(Page())Opcije za opciju
Upotreba: LoadOptions za postavljanje opcionalnih parametara u vrijeme učitavanja:
from aspose.note import Document, LoadOptions
opts = LoadOptions()
opts.LoadHistory = True # include page revision history in the DOM
doc = Document("MyNotes.one", opts)LoadOptions imovina | Iznos: | Standardno | Opisivanje |
|---|---|---|---|
LoadHistory | bool | False | Kada? True, revizije povijesti stranica su uključene u DOM i dostupne putem: Document.GetPageHistory |
DocumentPassword | `str | None` | None |
Detekcija formata dokumenta
U skladu s člankom 1. FileFormat Priloga I. Odjeljak 1.:
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 vrijednost | Opisivanje |
|---|---|
OneNote2010 | Standardni sustav .one datoteka napisana od strane OneNote 2010 i kasnije |
OneNoteOnline | .one datoteka napisana od strane OneNote Online / Microsoft 365 |
OneNote2007 | Nasljeđe .one format iz OneNote 2007 |
Unknown | Ne može se identificirati format |
Iterirajuće stranice
Stranice su direktna djeca Document.Koristite: for za jednostavnu iteraciju:
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}]")Upotreba: GetChildNodes(Page) da biste dobili natpisanu listu svih stranica odjednom:
from aspose.note import Document, Page
doc = Document("MyNotes.one")
pages = doc.GetChildNodes(Page)
print(f"Total pages: {len(pages)}")Metapodatki stranice
| Održavanje imovine | Iznos: | Opisivanje |
|---|---|---|
Title | `Title | None` |
Author | `str | None` |
CreationTime | `datetime | None` |
LastModifiedTime | `datetime | None` |
Level | `int | None` |
IsConflictPage | bool | True ako je stranica sinhronizirana kopija sukobnih podataka |
Prelazak kroz drvo dokumenta
Document nasljeđuje od: CompositeNode, dajući mu sve metode prelaza kroz stabla:
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))DOM hijerarhija:
Document
└── Page (0..n)
├── Title
│ ├── TitleText (RichText)
│ ├── TitleDate (RichText)
│ └── TitleTime (RichText)
└── Outline (0..n)
└── OutlineElement (0..n)
├── RichText
├── Image
├── Table
│ └── TableRow → TableCell → RichText / Image
└── AttachedFileKljučne metode prelaženja naslijeđene od: CompositeNode:
| Metoda: | Opisivanje |
|---|---|
GetChildNodes(NodeType) | Vrati tipku s popisu svih potomaka koji odgovaraju datom tipu. |
AppendChildLast(node) | Dodavanje djetetovog čvora na kraju popisa djece |
AppendChildFirst(node) | Dodajte dječji čvor na početku. |
InsertChild(index, node) | Ustaviti dijete na određeni indeks |
RemoveChild(node) | Uklanjanje djetetovog čvora |
GetEnumerator() | Iterirani direktni sinovi |
Istorija stranice
Kada je napunjen s: LoadHistory=True, Document.GetPageHistory vraća sve sačuvane revizije od jedne stranice, uređene po najstarijoj do najnovije:
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}")Opomena::
GetPageHistoryvraća prazan broj.PageHistorypredmet kadaLoadHistoryje:FalseUvijek postavljeno.opts.LoadHistory = Trueprije utovaranja ako je potrebno. revizija podataka.
Štetno i izvozno
Upotreba: Document.Save PDF je jedini podržani format izvoza.
Sačuvati u datoteku
from aspose.note import Document, SaveFormat
doc = Document("MyNotes.one")
doc.Save("output.pdf", SaveFormat.Pdf)Sačuvajte u struju u memoriji.
import io
from aspose.note import Document, SaveFormat
doc = Document("MyNotes.one")
buf = io.BytesIO()
doc.Save(buf, SaveFormat.Pdf)
pdf_bytes = buf.getvalue()Sačuvanje s opcijama
Upotreba: PdfSaveOptions (od 1. siječnja) aspose.note.saving) za kontrolu odabira stranica:
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()Važno.:U ovom slučaju, u skladu s člankom 3. stavkom 1. točkom (a) ovog članka. Instaliraj s:
pip install "aspose-note[pdf]".
Otkrivanje promjena rasporeda
Zovi me. DetectLayoutChanges Nakon izmjene dokumenta kako bi se prebrojili parametri rasporeda prije čuvanja:
from aspose.note import Document, Page
doc = Document()
page = Page()
doc.AppendChildLast(page)
# ... add content to page ...
doc.DetectLayoutChanges()
doc.Save("output.pdf")Savjeti i najbolje prakse
- Napunite jednom, upitajte mnogo puta:
Documentpunjenje cijelog.onedatoteka u memoriju na -Pusti jednu.Documentprimjedba i pozivGetChildNodesviše puta nego što je to slučaj. Ponovno učitavanje datoteke za svako upitno pitanje. - Čekaj.
IsConflictPage:OneNote sinhronizacija može proizvesti suprotstavljene stranice. Filtrirajte s:[p for p in doc if not p.IsConflictPage]prije obrade sadržaja. - Upotreba:
LoadHistory=False(predviđeno) za brzinu:Povijest stranica dodaje značajnu memoriju i Samo postaviti.LoadHistory=Truekada izričito trebate revizijske podatke. - Prenos za velike datoteke: Predajte otvoreni objekt datoteke umjesto traga pri čitanju veliki
.onedatoteke kako bi se izbjeglo držanje datotek otvorenih nakon što je parser završio. - Zovi me.
DetectLayoutChangesprijeSave:Prilikom programskog izrade dokumenta: i dodati čvorove, pozivDetectLayoutChanges()da se osiguraju koordinate rasporeda. U skladu s člankom 15. stavkom 1. točkom (a) i podstavkom 5.
Zajednički problemi
| Izdavanje | Uzrok | Popraviti |
|---|---|---|
IncorrectPasswordException na teret | Datoteka je šifrirana; šifrirani dokumenti nisu podržani. | Dobijite nešifriranu kopiju datoteke |
FileCorruptedException na teret | Datoteka je skraćena ili ima nespreman unutarnji format | Potvrditi da je datoteka valjana. .one Odjeljak (ne) .onetoc2 (u skladu s člankom 77. stavkom 1.) |
UnsupportedSaveFormatException na čuvanje | Pokušaj pohranjivanja u drugi format od PDF-a | Samo: SaveFormat.Pdf podupire se za izvoz |
Prazno. GetPageHistory rezultat | LoadOptions.LoadHistory nije postavljen na: True prije utovarenja | Ponovno učitati dokument s: opts.LoadHistory = True |
ModuleNotFoundError: reportlab | PDF izvoz pokušao bez dodatnog PDF-a | Bježi! pip install "aspose-note[pdf]" |
FAQ
Što OneNote formati mogu obuhvatiti.Pomenuti čitanje?
Svaka tri OneNote sekcija formata: OneNote2007, OneNote2010, i OneNoteOnline. Upotreba: doc.FileFormat da se utvrdi koja varijanta je bila učita.
Mogu li da mu se javim? .one -Da. Da li je to bilo u dosjeu nakon što si ga pročitao?
Ne, pišem natrag. .one Izvoz na PDF s: Document.Save je u skladu s člankom samo podržava izlaznu operaciju.
Kako čitati određenu stranicu po naslovu?
Iterirati stranice i usporediti page.Title.TitleText.Text na ciljan niz:
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,
)Kako da brojim podstranice odvojeno od stranica najvišeg nivoa?
Upotreba: page.Level: razina 1 je gornja, razine 2 podstranica i tako dalje.
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)}")U skladu s člankom 21. stavkom 1. točkom (a) Uredbe (EU) br. .onetoc2 datoteke za sadržaj?
Ne, samo… .one Podržane su datoteke odjeljka. .onetoc2 Notebookovi će podići… FileCorruptedException.
Svrha referentnog API-a
| Klasa / metoda | Opisivanje |
|---|---|
Document(path_or_stream, options?) | Opterećenje a .one datoteka ili kreiranje praznog dokumenta |
Document.FileFormat | Prikaz:FileFormat (u svakoj kategoriji) |
Document.GetChildNodes(NodeType) | Pronaći sve potomke od određenog tipa. |
Document.GetPageHistory(page) | Dobijate povijest revizija za stranicu (za potrebe) LoadHistory=True) |
Document.Save(target, format_or_options) | Izvoz u PDF po traci ili struju datoteke |
Document.DetectLayoutChanges() | Prepoznajte metrike rasporeda nakon programskih uređivanja |
Document.Accept(visitor) | Hodaj DOM koristeći DocumentVisitor podklasa |
LoadOptions.LoadHistory | Postavljeno na: True uključiti revizije stranica u DOM-u |
LoadOptions.DocumentPassword | Rezervirana; šifrirana datoteka se podiže. IncorrectPasswordException |
FileFormat | -Ne, ne mogu.: OneNote2010, OneNoteOnline, OneNote2007, Unknown |
SaveFormat.Pdf | Jedini podržani format izvoza |
PageHistory.Count | Broj dostupnih revizija stranica |
Page.Level | Dubina podstranica (1 = gornji nivo) |
Page.IsConflictPage | True za sinhronizaciju kopija u sukobu s drugim programom |
Također pogledajte:
- Izvadba teksta: izvlačenje običnog teksta i formattiranih izvodova
- PDF izvoz: mogućnosti izvoza, izbor stranica i izlaz toka
- Slike i prilozi: ekstrakcija ugrađenih slika i priloženih datoteka
- Sljedeći članak: raspiranje strukture tabele i sadržaja ćelija
- Odgovor na API: dokument