Panduan Pembangun
Aspose.Note FOSS for Python adalah perpustakaan percuma, sumber terbuka untuk membaca fail bahagian Microsoft OneNote .one tanpa sebarang kebergantungan pada Microsoft Office. Ia menyediakan API awam yang bersih di bawah pakej aspose.note, yang dimodelkan mengikut antara muka Aspose.Note untuk .NET. Perpustakaan ini sesuai untuk automasi dokumen, pengindeksan kandungan, saluran pengekstrakan data, dan aliran kerja arkib.
Panduan pembangun ini merangkumi keseluruhan permukaan API awam yang tersedia dalam versi 26.3.1, dengan contoh kod yang boleh dijalankan untuk setiap ciri utama.
Memuat Dokumen
Muatkan fail .one dari laluan fail atau aliran binari. Kelas Document adalah titik masuk untuk semua operasi.
Muat dari laluan fail
from aspose.note import Document
doc = Document("MyNotes.one")Muat dari aliran binari
Berguna apabila membaca dari storan awan, respons HTTP, atau penampan dalam memori:
from pathlib import Path
from aspose.note import Document
with Path("MyNotes.one").open("rb") as f:
doc = Document(f)Pilihan Muat
Gunakan LoadOptions untuk menetapkan parameter pilihan semasa masa muat:
from aspose.note import Document, LoadOptions
opts = LoadOptions()
opts.LoadHistory = True # Include page history in the DOM
doc = Document("MyNotes.one", opts)Nota:
DocumentPasswordwujud padaLoadOptionsuntuk keserasian API, tetapi dokumen yang dienkripsi tidak disokong. Mencuba memuatkan fail yang dienkripsi akan menyebabkanIncorrectPasswordException.
Struktur Dokumen (DOM)
Model dokumen OneNote ialah pokok:
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 nod mendedahkan ParentNode dan sifat Document yang berjalan ke atas ke akar. Nod komposit menyokong iterasi anak, FirstChild, LastChild, AppendChildLast, InsertChild, RemoveChild, dan GetChildNodes(Type).
Mengiterasi Halaman
Halaman adalah anak langsung 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:
| Sifat | Jenis | Keterangan |
|---|---|---|
Title | Title | None | Blok tajuk halaman |
Author | str | None | Rentetan pengarang |
CreationTime | datetime | None | Masa penciptaan halaman |
LastModifiedTime | datetime | None | Masa pengubahsuaian terakhir |
Level | int | None | Tahap inden subhalaman |
Ekstraksi Teks
Ekstrak semua teks biasa
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 jalur pemformatan
Setiap RichText mengandungi senarai segmen TextRun. Setiap run membawa TextStylenya sendiri:
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 pautan 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 Imej
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})")Ciri-ciri imej: FileName, Bytes, Width, Height, AlternativeTextTitle, AlternativeTextDescription, HyperlinkUrl, Tags.
Penguraian Jadual
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)Fail Dilampirkan
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 Senarai Bernombor
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}")Semak senarai bernombor
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}")Corak DocumentVisitor
Gunakan DocumentVisitor untuk melaksanakan pelawat yang melintasi seluruh pokok 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}")Eksport PDF
Eksport PDF memerlukan kebergantungan ReportLab pilihan. Pasang ia dengan:
pip install "aspose-note[pdf]"Eksport PDF Asas
from aspose.note import Document, SaveFormat
doc = Document("MyNotes.one")
doc.Save("output.pdf", SaveFormat.Pdf)Eksport PDF dengan pilihan
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()Nota:
PdfSaveOptions.PageIndexdanPageCountwujud tetapi tidak dihantar ke pengekspor PDF dalam v26.3.1. Seluruh dokumen sentiasa dieksport.
Had Semasa
| Area | Status |
|---|---|
Membaca fail .one | Disokong sepenuhnya |
| Eksport PDF (melalui ReportLab) | Disokong |
Menulis kembali ke .one | Tidak dilaksanakan |
| Dokumen terenkripsi | Tidak disokong (menimbulkan IncorrectPasswordException) |
| Format simpan HTML / imej / ONE | Dinyatakan untuk keserasian API; menimbulkan UnsupportedSaveFormatException |
Panduan Tersedia
- Features Overview: senarai ciri penuh dengan bukti
- Getting Started: prasyarat, pemasangan, dan langkah pertama
- Installation: pip install dan kebergantungan pilihan