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 imovinaIznos:StandardnoOpisivanje
LoadHistoryboolFalseKada? True, revizije povijesti stranica su uključene u DOM i dostupne putem: Document.GetPageHistory
DocumentPassword`strNone`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 vrijednostOpisivanje
OneNote2010Standardni sustav .one datoteka napisana od strane OneNote 2010 i kasnije
OneNoteOnline.one datoteka napisana od strane OneNote Online / Microsoft 365
OneNote2007Nasljeđe .one format iz OneNote 2007
UnknownNe 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 imovineIznos:Opisivanje
Title`TitleNone`
Author`strNone`
CreationTime`datetimeNone`
LastModifiedTime`datetimeNone`
Level`intNone`
IsConflictPageboolTrue 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
                    └── AttachedFile

Ključ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:: GetPageHistory vraća prazan broj. PageHistory predmet kada LoadHistory je: False Uvijek postavljeno. opts.LoadHistory = True prije 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: Document punjenje cijelog .one datoteka u memoriju na -Pusti jednu. Document primjedba i poziv GetChildNodes viš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=True kada izričito trebate revizijske podatke.
  • Prenos za velike datoteke: Predajte otvoreni objekt datoteke umjesto traga pri čitanju veliki .one datoteke kako bi se izbjeglo držanje datotek otvorenih nakon što je parser završio.
  • Zovi me. DetectLayoutChanges prije Save:Prilikom programskog izrade dokumenta: i dodati čvorove, poziv DetectLayoutChanges() da se osiguraju koordinate rasporeda. U skladu s člankom 15. stavkom 1. točkom (a) i podstavkom 5.

Zajednički problemi

IzdavanjeUzrokPopraviti
IncorrectPasswordException na teretDatoteka je šifrirana; šifrirani dokumenti nisu podržani.Dobijite nešifriranu kopiju datoteke
FileCorruptedException na teretDatoteka je skraćena ili ima nespreman unutarnji formatPotvrditi da je datoteka valjana. .one Odjeljak (ne) .onetoc2 (u skladu s člankom 77. stavkom 1.)
UnsupportedSaveFormatException na čuvanjePokušaj pohranjivanja u drugi format od PDF-aSamo: SaveFormat.Pdf podupire se za izvoz
Prazno. GetPageHistory rezultatLoadOptions.LoadHistory nije postavljen na: True prije utovarenjaPonovno učitati dokument s: opts.LoadHistory = True
ModuleNotFoundError: reportlabPDF izvoz pokušao bez dodatnog PDF-aBjež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 / metodaOpisivanje
Document(path_or_stream, options?)Opterećenje a .one datoteka ili kreiranje praznog dokumenta
Document.FileFormatPrikaz: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.LoadHistoryPostavljeno na: True uključiti revizije stranica u DOM-u
LoadOptions.DocumentPasswordRezervirana; šifrirana datoteka se podiže. IncorrectPasswordException
FileFormat-Ne, ne mogu.: OneNote2010, OneNoteOnline, OneNote2007, Unknown
SaveFormat.PdfJedini podržani format izvoza
PageHistory.CountBroj dostupnih revizija stranica
Page.LevelDubina podstranica (1 = gornji nivo)
Page.IsConflictPageTrue za sinhronizaciju kopija u sukobu s drugim programom

Također pogledajte:

 Hrvatski