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
└── AttachedFileSetiap 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:
| Properti | Tipe | Deskripsi |
|---|---|---|
Title | `Title | None` |
Author | `str | None` |
CreationTime | `datetime | None` |
LastModifiedTime | `datetime | None` |
Level | `int | None` |
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
| Area | Status |
|---|---|
Membaca .one berkas | Sepenuhnya didukung |
| Ekspor PDF (via ReportLab) | Didukung |
Menulis kembali ke .one | Belum diimplementasikan |
| Dokumen terenkripsi | Tidak didukung (menimbulkan IncorrectPasswordException) |
| HTML / gambar / ONE format penyimpanan | Dideklarasikan untuk kompatibilitas API; menimbulkan UnsupportedSaveFormatException |
Panduan yang Tersedia
- Ikhtisar Fitur: daftar lengkap fitur dengan bukti
- Memulai: prasyarat, instalasi, dan langkah pertama
- Instalasi: pip install dan dependensi opsional