Panduan Pengembang

Aspose.Note FOSS for Python is a free, open-source library for reading Microsoft OneNote .one file bagian tanpa ketergantungan pada Microsoft Office. Ini menyediakan API publik yang bersih di bawah aspose.note paket, dimodelkan setelah Aspose.Note untuk antarmuka .NET. Perpustakaan ini cocok untuk otomatisasi dokumen, pengindeksan konten, pipeline ekstraksi data, dan alur kerja arsip.

Panduan pengembang ini mencakup seluruh permukaan API publik yang tersedia pada versi 26.3.1, dengan contoh kode yang dapat dijalankan untuk setiap fitur utama.

Memuat Dokumen

Muat sebuah .one file dari jalur file atau aliran biner. Kelas Document kelas adalah titik masuk untuk semua operasi.

Muat dari jalur file

from aspose.note import Document

doc = Document("MyNotes.one")

Muat dari aliran biner

Berguna saat membaca dari penyimpanan cloud, respons HTTP, atau buffer dalam memori:

from pathlib import Path
from aspose.note import Document

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

Opsi Muat

Gunakan LoadOptions untuk mengatur parameter opsional saat pemuatan:

from aspose.note import Document, LoadOptions

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

Catatan: DocumentPassword ada pada LoadOptions untuk kompatibilitas API, tetapi dokumen terenkripsi tidak didukung. Mencoba memuat file terenkripsi akan memunculkan IncorrectPasswordException.


Struktur Dokumen (DOM)

Model dokumen OneNote adalah sebuah pohon:

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

Setiap node mengekspos ParentNode dan sebuah Document properti yang berjalan ke akar. Node komposit mendukung iterasi anak, FirstChild, LastChild, AppendChildLast, InsertChild, RemoveChild, dan GetChildNodes(Type).


Iterasi Halaman

Halaman adalah anak langsung dari Document. Iterasi mereka secara langsung atau gunakan 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}]")

Metadata halaman:

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

Ekstraksi Teks

Ekstrak semua teks polos

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

Periksa urutan format

Setiap RichText berisi daftar TextRun segmen. Setiap run membawa miliknya sendiri 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)}]")

Ekstrak tautan hiperteks

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)

Ekstraksi Gambar

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

Properti gambar: FileName, Bytes, Width, Height, AlternativeTextTitle, AlternativeTextDescription, HyperlinkUrl, Tags.


Penguraian Tabel

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)

Berkas Terlampir

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

Tag dan Daftar Bernomor

Periksa item NoteTag

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

Periksa daftar bernomor

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

Pola DocumentVisitor

Gunakan DocumentVisitor untuk mengimplementasikan visitor yang menelusuri seluruh pohon dokumen:

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

Ekspor PDF

Ekspor PDF memerlukan dependensi opsional ReportLab. Instal dengan:

pip install "aspose-note[pdf]"

Ekspor PDF dasar

from aspose.note import Document, SaveFormat

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

Ekspor PDF dengan opsi

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

Catatan: PdfSaveOptions.PageIndex dan PageCount field ada tetapi tidak diteruskan ke pengekspor PDF pada v26.3.1. Seluruh dokumen selalu diekspor.


Batasan Saat Ini

AreaStatus
Membaca .one berkasSepenuhnya didukung
Ekspor PDF (via ReportLab)Didukung
Menulis kembali ke .oneBelum diimplementasikan
Dokumen terenkripsiTidak didukung (menimbulkan IncorrectPasswordException)
HTML / gambar / ONE format penyimpananDideklarasikan untuk kompatibilitas API; menimbulkan UnsupportedSaveFormatException

Panduan yang Tersedia


Lihat Juga

 Bahasa Indonesia