Kūrėjo vadovas

Aspose.Note FOSS for Python is a free, open-source library for reading Microsoft OneNote .one skyriaus failus be jokios priklausomybės nuo Microsoft Office. Ji suteikia švarią viešą API po aspose.note paketą, modeliuotą pagal Aspose.Note .NET sąsają. Biblioteka tinka dokumentų automatizavimui, turinio indeksavimui, duomenų išgavimosi konvejeriams ir archyvavimo darbo srautams.

Ši kūrėjo vadovas apima visą viešą API, prieinamą 26.3.1 versijoje, su vykdomais kodo pavyzdžiais kiekvienai pagrindinei funkcijai.

Dokumento įkėlimas

Įkelti .one failą iš failo kelio arba binarinio srauto. The Document klasė yra įėjimo taškas visoms operacijoms.

Įkelti iš failo kelio

from aspose.note import Document

doc = Document("MyNotes.one")

Įkelti iš binarinio srauto

Naudinga skaitant iš debesų saugyklų, HTTP atsakymų arba atminties buferių:

from pathlib import Path
from aspose.note import Document

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

Įkėlimo parinktys

Naudokite LoadOptions nustatyti pasirenkamus parametrus įkėlimo metu:

from aspose.note import Document, LoadOptions

opts = LoadOptions()
opts.LoadHistory = True   # Include page history in the DOM
doc = Document("MyNotes.one", opts)

Pastaba: DocumentPassword yra LoadOptions API suderinamumui, tačiau šifruoti dokumentai nepalaikomi. Bandant įkelti šifruotą failą raises IncorrectPasswordException.


Dokumento struktūra (DOM)

OneNote dokumento modelis yra medis:

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

Kiekvienas mazgas atskleidžia ParentNode ir Document savybę, kuri keliauja iki šaknies. Sudėtiniai mazgai palaiko vaikų iteraciją, FirstChild, LastChild, AppendChildLast, InsertChild, RemoveChild, ir GetChildNodes(Type).


Puslapių iteravimas

Puslapiai yra tiesioginiai vaikai Document. Iteruokite juos tiesiogiai arba naudokite 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}]")

Puslapio metaduomenys:

SavybėTipasAprašymas
Title`TitleNone`
Author`strNone`
CreationTime`datetimeNone`
LastModifiedTime`datetimeNone`
Level`intNone`

Teksto išgavimas

Išgauti visą paprastą tekstą

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

Patikrinkite formatavimo sekas

Kiekvienas RichText turi sąrašą TextRun segmentų. Kiekvienas vykdymas turi savo 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)}]")

Išgauti hipersaitus

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)

Vaizdų išgavimas

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

Vaizdo savybės: FileName, Bytes, Width, Height, AlternativeTextTitle, AlternativeTextDescription, HyperlinkUrl, Tags.


Lentelės analizė

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)

Prisegtos failai

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

Žymos ir numeruoti sąrašai

Patikrinkite NoteTag elementus

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

Patikrinkite numeruotus sąrašus

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 šablonas

Naudoti DocumentVisitor įgyvendinti lankytoją, kuris pereina visą dokumento medį:

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 eksportas

PDF eksportui reikalinga neprivaloma ReportLab priklausomybė. Įdiekite ją naudodami:

pip install "aspose-note[pdf]"

Pagrindinis PDF eksportas

from aspose.note import Document, SaveFormat

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

PDF eksportas su parinktimis

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

Pastaba: PdfSaveOptions.PageIndex ir PageCount laukai egzistuoja, bet nėra perduodami PDF eksporteriui v26.3.1. Visas dokumentas visada eksportuojamas.


Dabartiniai apribojimai

SritisBūsena
Skaitymas .one failaiPilnai palaikoma
PDF eksportas (per ReportLab)Palaikoma
Rašoma atgal į .oneNeįgyvendinta
Užšifruoti dokumentaiNepalaikoma (kelia IncorrectPasswordException)
HTML / vaizdas / ONE išsaugojimo formataiDeklaruota API suderinamumui; kelti UnsupportedSaveFormatException

Prieinami vadovai


Žr. taip pat

 Lietuvių