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
                    └── AttachedFile

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

OminaisuusTyyppiKuvaus
Title`TitleNone`
Author`strNone`
CreationTime`datetimeNone`
LastModifiedTime`datetimeNone`
Level`intNone`

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

AlueTila
Lukeminen .one tiedostotTäysin tuettu
PDF-vienti (via ReportLab)Tuettu
Kirjoitetaan takaisin kohteeseen .oneEi toteutettu
Salatut asiakirjatEi tuettu (nostaa IncorrectPasswordException)
HTML / kuva / ONE tallennusmuodotMääritelty API-yhteensopivuutta varten; nosta UnsupportedSaveFormatException

Saatavilla olevat oppaat


Katso myös

 Suomi