Izstrādātāja rokasgrāmata

Aspose.Note FOSS for Python is a free, open-source library for reading Microsoft OneNote .one sadaļas failus bez jebkādas atkarības no Microsoft Office. Tas nodrošina tīru publisku API zem the aspose.note pakete, modelēta pēc Aspose.Note priekš .NET saskarnes. Bibliotēka ir piemērota dokumentu automatizācijai, satura indeksēšanai, datu izguves cauruļvadiem un arhīvu darba plūsmām.

Šī izstrādātāju rokasgrāmata aptver pilnu publiskā API virsmu, kas pieejama versijā 26.3.1, ar izpildāmiem koda piemēriem katrai galvenajai funkcijai.

Dokumenta ielāde

Ielādēt .one failu no faila ceļa vai binārā straumes. The Document klase ir ieejas punkts visām operācijām.

Ielādēt no faila ceļa

from aspose.note import Document

doc = Document("MyNotes.one")

Ielādēt no binārā straumes

Noderīgi, lasot no mākoņa glabātuves, HTTP atbildēm vai atmiņā buferiem:

from pathlib import Path
from aspose.note import Document

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

Ielādes iespējas

Izmantot LoadOptions lai iestatītu izvēles parametrus ielādes laikā:

from aspose.note import Document, LoadOptions

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

Piezīme: DocumentPassword eksistē uz LoadOptions API saderībai, bet šifrēti dokumenti netiek atbalstīti. Mēģinājums ielādēt šifrētu failu izraisa IncorrectPasswordException.


Dokumenta struktūra (DOM)

OneNote dokumenta modelis ir koks:

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

Katrs mezgls atklāj ParentNode un Document īpašību, kas pārvietojas uz sakni. Kompozīcijas mezgli atbalsta bērnu iterāciju, FirstChild, LastChild, AppendChildLast, InsertChild, RemoveChild, un GetChildNodes(Type).


Lapu iterācija

Lapas ir tieši bērni Document. Iterējiet tos tieši vai izmantojiet 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}]")

Lapas metadati:

ĪpašībaTipsApraksts
Title`TitleNone`
Author`strNone`
CreationTime`datetimeNone`
LastModifiedTime`datetimeNone`
Level`intNone`

Teksta izguve

Izgūt visu vienkāršo tekstu

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

Pārbaudīt formatēšanas fragmentus

Katrs RichText satur sarakstu ar TextRun segmentus. Katrs izpildījums nes savu 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)}]")

Izgūt hipersaites

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)

Attēlu izguve

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

Attēla īpašības: FileName, Bytes, Width, Height, AlternativeTextTitle, AlternativeTextDescription, HyperlinkUrl, Tags.


Tabulu parsēšana

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)

Pievienotie faili

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

Tagi un numurēti saraksti

Pārbaudīt NoteTag vienumus

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

Pārbaudīt numurētus sarakstus

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 paraugs

Izmantot DocumentVisitor lai īstenotu apmeklētāju, kas pārvietojas pa visu dokumenta koku:

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 eksportēšana

PDF eksportēšanai ir nepieciešama izvēles atkarība ReportLab. Instalējiet to, izmantojot:

pip install "aspose-note[pdf]"

Pamata PDF eksportēšana

from aspose.note import Document, SaveFormat

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

PDF eksportēšana ar opcijām

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

Piezīme: PdfSaveOptions.PageIndex un PageCount lauki pastāv, bet tie netiek pārsūtīti PDF eksportētājam versijā v26.3.1. Vesels dokuments vienmēr tiek eksportēts.


Pašreizējie ierobežojumi

ApgabalsStatuss
Lasīšana .one failiPilnībā atbalstīts
PDF eksportēšana (caur ReportLab)Atbalstīts
Rakstīt atpakaļ uz .oneNav īstenots
Šifrēti dokumentiNav atbalstīts (izraisa IncorrectPasswordException)
HTML / attēls / ONE saglabāšanas formātiDeklarēts API saderībai; izraisīt UnsupportedSaveFormatException

Pieejamie ceļveži


Skatīt arī

 Latviešu