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 ejendom | Type: | Standardindstilling | Beskrivelse: |
|---|---|---|---|
LoadHistory | bool | False | Hvornår? True, revisioner af sidehistorien er inkluderet i DOM og tilgængelig via Document.GetPageHistory |
DocumentPassword | `str | None` | 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ærdi | Beskrivelse: |
|---|---|
OneNote2010 | Standard .one fil skrevet af OneNote 2010 og nyere |
OneNoteOnline | .one fil skrevet af OneNote Online / Microsoft 365 |
OneNote2007 | Arvelig arv .one Format fra OneNote 2007 |
Unknown | Format 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
| Ejendomme | Type: | Beskrivelse: |
|---|---|---|
Title | `Title | None` |
Author | `str | None` |
CreationTime | `datetime | None` |
LastModifiedTime | `datetime | None` |
Level | `int | None` |
IsConflictPage | bool | True 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
└── AttachedFileNøglepassningsmetoder, der er arvet fra CompositeNode:
| Metode | Beskrivelse: |
|---|---|
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::
GetPageHistoryreturnerer et tomt tal.PageHistorygenstand, nårLoadHistoryer:False(default).opts.LoadHistory = Truefø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:
Documentlægger hele.onefilen i hukommelse på - Hold en.DocumentIndkaldelse og indkaldelsesnummerGetChildNodesgentagne 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=Truenå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
.onefilerne for at undgå, at filen holdes åben efter parsen er afsluttet. - Ring til mig.
DetectLayoutChangesførSave: Ved programmeringsmæssig opbygning af et dokument og vedhæftede knudepunkter, opkaldDetectLayoutChanges()at sikre, at koordinaterne for udformningen er: konsistent før eksport til PDF.
Almindelige problemer
| Udgave: | Årsagen til dette | Forklaret |
|---|---|---|
IncorrectPasswordException på last | Fil er krypteret; dokumentation med kryptering understøttes ikke. | Få en ukrypteret kopi af filen |
FileCorruptedException på last | Filen er afkortet eller har et uunderstøttet internt format | Verificer, at filen er gyldig. .one (ikke en del af den fælles landbrugspolitik) .onetoc2 Indholdsfortegnelse) |
UnsupportedSaveFormatException på save | Forsøg på at gemme i et andet format end PDF | Kun i tilfælde af: SaveFormat.Pdf er støttet til eksport |
Udelagt. GetPageHistory resultat | LoadOptions.LoadHistory ikke er indstillet til: True før indlæsning | Genindlæs dokumentet med: opts.LoadHistory = True |
ModuleNotFoundError: reportlab | PDF-eksport forsøgt uden extra-filen | Lø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/metode | Beskrivelse: |
|---|---|
Document(path_or_stream, options?) | Lade a .one fil eller oprette et tomt dokument |
Document.FileFormat | Detekteret 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.LoadHistory | Indstilt til: True at medtage sideændringer i DOM-databasen |
LoadOptions.DocumentPassword | Reserveret; krypterede filer løftes op IncorrectPasswordException |
FileFormat | Enum: OneNote2010, OneNoteOnline, OneNote2007, Unknown |
SaveFormat.Pdf | Det eneste understøttede eksportformat |
PageHistory.Count | Antal tilgængelige siderevisioner |
Page.Level | Underside-dybde (1 = øverste niveau) |
Page.IsConflictPage | True for synkronisering af kopier i konflikt |
Se også:
- Tekstudtrækning: udtrækning af almindelig tekst og formaterede optagelser
- PDF-eksport: eksportmuligheder, valg af sider og strømudgang
- Billeder og vedhæftede filer: udtrækning af indlejrede billeder og vedlagte filer
- Tabeller: analysering af tabellens struktur og celleindhold
- API-reference: Dokument