Arbejde med notedokumentet

Den Europæiske Union Document klasse er roden til Aspose. Bemærk for Python-dokumentobjektmodellen (DOM). Hver læsning, gennemgang eller eksport operation starter med en Document Eksempler på disse er: en enkelt .one sektionsfil.


Indlæse et dokument

Lade fra en filvej

Gør vejen til en .one Indlever direkte til den nationale ret. Document konstruktor:

from aspose.note import Document

doc = Document("MyNotes.one")

Last fra en binær strøm

Brug en fillignende objekt, når dataene kommer fra et netværksrespons, cloud-lagring blob eller i-memori buffer:

from pathlib import Path
from aspose.note import Document

with Path("MyNotes.one").open("rb") as f:
    doc = Document(f)

Oprette et tomt dokument

Konstruer en Document uden argumenter til at oprette et nyt OneNote-dokument programmatisk:

from aspose.note import Document, Page

doc = Document()
doc.AppendChildLast(Page())

Optimeret belastning

Anvendelse: LoadOptions at indstille valgfrie parametre ved belastningstiden:

from aspose.note import Document, LoadOptions

opts = LoadOptions()
opts.LoadHistory = True   # include page revision history in the DOM
doc = Document("MyNotes.one", opts)
LoadOptions ejendomType:StandardindstillingBeskrivelse:
LoadHistoryboolFalseHvornår? True, revisioner af sidehistorien er inkluderet i DOM og tilgængelig via Document.GetPageHistory
DocumentPassword`strNone`None

Dokumentformatdetektering

Den Europæiske Union FileFormat Ejendommen angiver, hvilken OneNote-formatvariant filen bruger:

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 værdiBeskrivelse:
OneNote2010Standard .one fil skrevet af OneNote 2010 og nyere
OneNoteOnline.one fil skrevet af OneNote Online / Microsoft 365
OneNote2007Arvelig arv .one Format fra OneNote 2007
UnknownFormat kunne ikke identificeres

Itererende sider

Pages er direkte børn af Document.Brug en for loop for enkel iteration:

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}]")

Anvendelse: GetChildNodes(Page) at få en indskrevet liste over alle sider på én gang:

from aspose.note import Document, Page

doc = Document("MyNotes.one")
pages = doc.GetChildNodes(Page)
print(f"Total pages: {len(pages)}")

Metadata til siderne

EjendommeType:Beskrivelse:
Title`TitleNone`
Author`strNone`
CreationTime`datetimeNone`
LastModifiedTime`datetimeNone`
Level`intNone`
IsConflictPageboolTrue hvis siden er en synkroniseret konfliktkopi

Gennem dokumenttræet

Document arve fra CompositeNode, der giver den fulde træ-overgange metoder:

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-hierarkiet:

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

Nøglepassningsmetoder, der er arvet fra CompositeNode:

MetodeBeskrivelse:
GetChildNodes(NodeType)Returnerer en indskrevet liste over alle efterkommere, der svarer til den angivne type.
AppendChildLast(node)Tilføj en underknode i slutningen af børnelisten
AppendChildFirst(node)Tilføj en barneknude i starten
InsertChild(index, node)Indsæt et barn i en bestemt indeks.
RemoveChild(node)Fjern en underknode
GetEnumerator()Itererede direkte børn

Hjemmesiden historie

Når den er fyldt med: LoadHistory=True, Document.GetPageHistory Returnerer alle gemte revisioner af en side, der er opdelt fra den ældste til den nyeste:

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}")

Bemærkning:: GetPageHistory returnerer et tomt tal. PageHistory genstand, når LoadHistory er: False (default). opts.LoadHistory = True før lastning, hvis du har brug for det. revision af data.


Sparing og eksport

Anvendelse: Document.Save PDF er det eneste understøttede eksportformat.

Gem i fil

from aspose.note import Document, SaveFormat

doc = Document("MyNotes.one")
doc.Save("output.pdf", SaveFormat.Pdf)

Gem i en in-memory stream

import io
from aspose.note import Document, SaveFormat

doc = Document("MyNotes.one")
buf = io.BytesIO()
doc.Save(buf, SaveFormat.Pdf)
pdf_bytes = buf.getvalue()

Optimering med opsjoner

Anvendelse: PdfSaveOptions (fra aspose.note.saving) til at kontrollere valg af sider:

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()

Vigtig: PDF-eksport kræver den valgfri ReportLab-afhængighed. Installer det med: pip install "aspose-note[pdf]".


Opdagelse af ændringer i udformningen

Ring til mig. DetectLayoutChanges efter at have ændret dokumentet for at beregne layoutmetrikker igen før opbevaring:

from aspose.note import Document, Page

doc = Document()
page = Page()
doc.AppendChildLast(page)

# ... add content to page ...

doc.DetectLayoutChanges()
doc.Save("output.pdf")

Tips og bedste praksis

  • Lad en gang, spørg mange gange: Document lægger hele .one filen i hukommelse på - Hold en. Document Indkaldelse og indkaldelsesnummer GetChildNodes gentagne gange frem for at genindlæse filen for hver forespørgsel.
  • Kontrollering IsConflictPage: OneNote synkronisering kan producere konflikt sider. Filtrer med [p for p in doc if not p.IsConflictPage] inden behandlingen af indholdet.
  • Anvendelse: LoadHistory=False (standard) for hastighed: Pagehistorik tilføjer betydelig hukommelse og - Kun sat til. LoadHistory=True når der udtrykkeligt er behov for reviderede data.
  • Strøm for store filer: Passer et åbent filobjekt i stedet for en stistring, når du læser. stor .one filerne for at undgå, at filen holdes åben efter parsen er afsluttet.
  • Ring til mig. DetectLayoutChanges før Save: Ved programmeringsmæssig opbygning af et dokument og vedhæftede knudepunkter, opkald DetectLayoutChanges() at sikre, at koordinaterne for udformningen er: konsistent før eksport til PDF.

Almindelige problemer

Udgave:Årsagen til detteForklaret
IncorrectPasswordException på lastFil er krypteret; dokumentation med kryptering understøttes ikke.Få en ukrypteret kopi af filen
FileCorruptedException på lastFilen er afkortet eller har et uunderstøttet internt formatVerificer, at filen er gyldig. .one (ikke en del af den fælles landbrugspolitik) .onetoc2 Indholdsfortegnelse)
UnsupportedSaveFormatException på saveForsøg på at gemme i et andet format end PDFKun i tilfælde af: SaveFormat.Pdf er støttet til eksport
Udelagt. GetPageHistory resultatLoadOptions.LoadHistory ikke er indstillet til: True før indlæsningGenindlæs dokumentet med: opts.LoadHistory = True
ModuleNotFoundError: reportlabPDF-eksport forsøgt uden extra-filenLøb! pip install "aspose-note[pdf]"

FAQ

Hvilke OneNote-formater kan man bruge.Nota læst?

Alle tre OneNote-afsnitformater: OneNote2007, OneNote2010, og OneNoteOnline. Anvendelse: doc.FileFormat at identificere, hvilken variant der var lastet.

Kan jeg skrive tilbage til en… .one - Fil efter at have læst den?

Nej, jeg skriver tilbage til… .one Eksport til PDF med Document.Save er den kun understøttes udgangsoperation.

Hvordan læser jeg en bestemt side efter titel?

Iterere sider og sammenligne page.Title.TitleText.Text til din målstring:

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,
)

Hvordan tæller jeg undersiderne adskilt fra de øverste sider?

Anvendelse: page.Level: niveau 1 er øverste niveau, niveau 2 er en underside og så videre.

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)}")

Det er ikke relevant.Bemærk støtte .onetoc2 Indholdsfiler?

Nej, kun… .one er understøttet. .onetoc2 - Det er ikke rigtigt. FileCorruptedException.


API-referenceoversigt

Klasse/metodeBeskrivelse:
Document(path_or_stream, options?)Lade a .one fil eller oprette et tomt dokument
Document.FileFormatDetekteret formatvariant (FileFormat enum)
Document.GetChildNodes(NodeType)Hent alle efterkommere af en given type noder
Document.GetPageHistory(page)Få revisionshistorik for en side (krav) LoadHistory=True)
Document.Save(target, format_or_options)Eksport til PDF ved filvej eller strøm
Document.DetectLayoutChanges()Genberegne layoutmetrikker efter programmatiske redigeringer
Document.Accept(visitor)Gå DOM ved hjælp af en DocumentVisitor underklasse
LoadOptions.LoadHistoryIndstilt til: True at medtage sideændringer i DOM-databasen
LoadOptions.DocumentPasswordReserveret; krypterede filer løftes op IncorrectPasswordException
FileFormatEnum: OneNote2010, OneNoteOnline, OneNote2007, Unknown
SaveFormat.PdfDet eneste understøttede eksportformat
PageHistory.CountAntal tilgængelige siderevisioner
Page.LevelUnderside-dybde (1 = øverste niveau)
Page.IsConflictPageTrue for synkronisering af kopier i konflikt

Se også:

 Dansk