Kehittäjän opas
Aspose.Note FOSS for Python is a free, open-source library for reading Microsoft OneNote .one section files ilman mitään riippuvuutta Microsoft Officeen. Se tarjoaa puhtaan julkisen API:n alla the aspose.note package, mallinnettu Aspose.Note .NET -rajapinnan perusteella. Kirjasto soveltuu asiakirja-automaatioon, sisällön indeksointiin, tietojen poimintaputkiin ja arkistointityönkulkuihin.
Tämä kehittäjäopas kattaa koko julkisen API:n, joka on saatavilla versiossa 26.3.1, sisältäen suoritettavia koodiesimerkkejä jokaisesta tärkeimmästä ominaisuudesta.
Asiakirjan lataus
Lataa .one tiedosto tiedostopolusta tai binaarisesta virrasta. The Document class on sisäänkäynti kaikille toiminnoille.
Lataa tiedostopolusta
from aspose.note import Document
doc = Document("MyNotes.one")Lataa binaarisesta virtauksesta
Hyödyllinen, kun luetaan pilvitallennuksesta, HTTP‑vastauksista tai muistissa olevista puskurista:
from pathlib import Path
from aspose.note import Document
with Path("MyNotes.one").open("rb") as f:
doc = Document(f)Latausasetukset
Käytä LoadOptions asettaaksesi valinnaisia parametreja latausajankohtana:
from aspose.note import Document, LoadOptions
opts = LoadOptions()
opts.LoadHistory = True # Include page history in the DOM
doc = Document("MyNotes.one", opts)Huomaa: DocumentPassword on olemassa LoadOptions API-yhteensopivuuden vuoksi, mutta salattuja asiakirjoja ei tueta. Salatun tiedoston latausyritys aiheuttaa IncorrectPasswordException.
Asiakirjarakenne (DOM)
OneNote‑asiakirjamalli on puu:
Document
└── Page (0..n)
├── Title
│ ├── TitleText (RichText)
│ ├── TitleDate (RichText)
│ └── TitleTime (RichText)
└── Outline (0..n)
└── OutlineElement (0..n)
├── RichText
├── Image
├── Table
│ └── TableRow
│ └── TableCell
│ └── RichText / Image
└── AttachedFileJokainen solmu paljastaa ParentNode ja Document ominaisuuden, joka kulkee kohti juurta. Yhdistetyt solmut tukevat lapsien iteraatiota, FirstChild, LastChild, AppendChildLast, InsertChild, RemoveChild, ja GetChildNodes(Type).
Sivujen iterointi
Sivut ovat suoria lapsia Document. Iteroi ne suoraan tai käytä GetChildNodes:
from aspose.note import Document, Page
doc = Document("MyNotes.one")
for page in doc:
title = page.Title.TitleText.Text if page.Title and page.Title.TitleText else "(untitled)"
author = page.Author or "(unknown)"
print(f" {title} [by {author}]")Sivun metatiedot:
| Ominaisuus | Tyyppi | Kuvaus |
|---|---|---|
Title | `Title | None` |
Author | `str | None` |
CreationTime | `datetime | None` |
LastModifiedTime | `datetime | None` |
Level | `int | None` |
Tekstin poiminta
Poimi kaikki tavallinen teksti
from aspose.note import Document, RichText
doc = Document("MyNotes.one")
all_text = [rt.Text for rt in doc.GetChildNodes(RichText) if rt.Text]
print("\n".join(all_text))Tarkastele muotoilurunoja
Jokainen RichText sisältää luettelon TextRun segmenttejä. Jokainen suoritus kantaa omaa TextStyle:
from aspose.note import Document, RichText
doc = Document("FormattedNotes.one")
for rt in doc.GetChildNodes(RichText):
for run in rt.TextRuns:
style = run.Style
flags = []
if style.IsBold: flags.append("bold")
if style.IsItalic: flags.append("italic")
if style.IsHyperlink: flags.append(f"link={style.HyperlinkAddress}")
print(f"{run.Text!r:40s} [{', '.join(flags)}]")Poimi hyperlinkit
from aspose.note import Document, RichText
doc = Document("MyNotes.one")
for rt in doc.GetChildNodes(RichText):
for run in rt.TextRuns:
if run.Style.IsHyperlink and run.Style.HyperlinkAddress:
print(run.Text, "->", run.Style.HyperlinkAddress)Kuvien poiminta
from aspose.note import Document, Image
doc = Document("MyNotes.one")
for i, img in enumerate(doc.GetChildNodes(Image), start=1):
name = img.FileName or f"image_{i}.bin"
with open(name, "wb") as f:
f.write(img.Bytes)
print(f"Saved {name} ({img.Width}x{img.Height})")Kuvan ominaisuudet: FileName, Bytes, Width, Height, AlternativeTextTitle, AlternativeTextDescription, HyperlinkUrl, Tags.
Taulukon jäsentäminen
from aspose.note import Document, Table, TableRow, TableCell, RichText
doc = Document("MyNotes.one")
for table in doc.GetChildNodes(Table):
print("Column widths:", [col.Width for col in table.Columns])
for r, row in enumerate(table.GetChildNodes(TableRow), start=1):
cells = row.GetChildNodes(TableCell)
row_text = [
" ".join(rt.Text for rt in cell.GetChildNodes(RichText)).strip()
for cell in cells
]
print(f"Row {r}:", row_text)Liitetiedostot
from aspose.note import Document, AttachedFile
doc = Document("NotesWithAttachments.one")
for i, af in enumerate(doc.GetChildNodes(AttachedFile), start=1):
name = af.FileName or f"attachment_{i}.bin"
with open(name, "wb") as f:
f.write(af.Bytes)
print(f"Saved: {name}")Tagit ja numeroidut listat
Tarkastele NoteTag‑kohteita
from aspose.note import Document, RichText, Image, Table
doc = Document("TaggedNotes.one")
for rt in doc.GetChildNodes(RichText):
for tag in rt.Tags:
print(f"RichText tag: {tag.Label} icon={tag.Icon}")
for img in doc.GetChildNodes(Image):
for tag in img.Tags:
print(f"Image tag: {tag.Label}")Tarkastele numeroituja listoja
from aspose.note import Document, OutlineElement
doc = Document("NumberedNotes.one")
for oe in doc.GetChildNodes(OutlineElement):
nl = oe.NumberList
if nl:
print(f"format={nl.Format!r}")DocumentVisitor‑malli
Käytä DocumentVisitor toteuttamaan vierailijan, joka käy läpi koko asiakirjapuun:
from aspose.note import Document, DocumentVisitor, Page, RichText, Image
class ContentCounter(DocumentVisitor):
def __init__(self):
self.pages = 0
self.texts = 0
self.images = 0
def VisitPageStart(self, page: Page) -> None:
self.pages += 1
def VisitRichTextStart(self, rt: RichText) -> None:
self.texts += 1
def VisitImageStart(self, img: Image) -> None:
self.images += 1
doc = Document("MyNotes.one")
counter = ContentCounter()
doc.Accept(counter)
print(f"Pages: {counter.pages}, Texts: {counter.texts}, Images: {counter.images}")PDF‑vienti
PDF‑vienti vaatii valinnaisen ReportLab‑riippuvuuden. Asenna se komennolla:
pip install "aspose-note[pdf]"Perus PDF -vienti
from aspose.note import Document, SaveFormat
doc = Document("MyNotes.one")
doc.Save("output.pdf", SaveFormat.Pdf)PDF-vienti asetuksilla
import io
from aspose.note import Document, SaveFormat
from aspose.note.saving import PdfSaveOptions
doc = Document("MyNotes.one")
##With save options
opts = PdfSaveOptions()
doc.Save("output.pdf", opts)
##Save to in-memory stream
buf = io.BytesIO()
doc.Save(buf, PdfSaveOptions())
pdf_bytes = buf.getvalue()Huomaa: PdfSaveOptions.PageIndex ja PageCount kentät ovat olemassa, mutta niitä ei välitetä PDF-vientiin versiossa v26.3.1. Koko asiakirja viedään aina.
Nykyiset rajoitukset
| Alue | Tila |
|---|---|
Lukeminen .one tiedostot | Täysin tuettu |
| PDF-vienti (via ReportLab) | Tuettu |
Kirjoitetaan takaisin kohteeseen .one | Ei toteutettu |
| Salatut asiakirjat | Ei tuettu (nostaa IncorrectPasswordException) |
| HTML / kuva / ONE tallennusmuodot | Määritelty API-yhteensopivuutta varten; nosta UnsupportedSaveFormatException |
Saatavilla olevat oppaat
- Ominaisuuksien yleiskatsaus: täydellinen ominaisuusluettelo todisteilla
- Aloittaminen: edellytykset, asennus ja ensimmäiset askeleet
- Asennus: pip install ja valinnaiset riippuvuudet