Geliştirici Kılavuzu
Aspose.Note FOSS for Python is a free, open-source library for reading Microsoft OneNote .one Microsoft Office’e bağımlı olmadan bölüm dosyaları. Temiz bir genel API sağlar aspose.note paket, Aspose.Note için .NET arayüzüne benzer şekilde modellenmiştir. Kütüphane belge otomasyonu, içerik indeksleme, veri çıkarma boru hatları ve arşiv iş akışları için uygundur.
Bu geliştirici kılavuzu, 26.3.1 sürümünde mevcut olan tam genel API yüzeyini kapsar ve her ana özellik için çalıştırılabilir kod örnekleri içerir.
Belge Yükleme
Yükle .one dosyayı bir dosya yolundan veya ikili akıştan. The Document sınıf, tüm işlemler için giriş noktasıdır.
Dosya yolundan yükle
from aspose.note import Document
doc = Document("MyNotes.one")İkili akıştan yükle
Bulut depolamadan, HTTP yanıtlarından veya bellek içi tamponlardan okurken kullanışlıdır:
from pathlib import Path
from aspose.note import Document
with Path("MyNotes.one").open("rb") as f:
doc = Document(f)Yükleme seçenekleri
Kullan LoadOptions yükleme sırasında isteğe bağlı parametreleri ayarlamak için:
from aspose.note import Document, LoadOptions
opts = LoadOptions()
opts.LoadHistory = True # Include page history in the DOM
doc = Document("MyNotes.one", opts)Not: DocumentPassword mevcut LoadOptions API uyumluluğu için, ancak şifreli belgeler desteklenmez. Şifreli bir dosyayı yüklemeye çalışmak hata oluşturur IncorrectPasswordException.
Belge Yapısı (DOM)
OneNote belge modeli bir ağaçtır:
Document
└── Page (0..n)
├── Title
│ ├── TitleText (RichText)
│ ├── TitleDate (RichText)
│ └── TitleTime (RichText)
└── Outline (0..n)
└── OutlineElement (0..n)
├── RichText
├── Image
├── Table
│ └── TableRow
│ └── TableCell
│ └── RichText / Image
└── AttachedFileHer düğüm şunları sunar ParentNode ve bir Document köküne kadar yürüyen bir özellik. Bileşik düğümler çocuk yinelemeyi destekler, FirstChild, LastChild, AppendChildLast, InsertChild, RemoveChild, ve GetChildNodes(Type).
Sayfaları Yineleme
Sayfalar, doğrudan şunun çocuklarıdır Document. Onları doğrudan yineleyin veya kullan 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}]")Sayfa meta verileri:
| Özellik | Tür | Açıklama |
|---|---|---|
Title | `Title | None` |
Author | `str | None` |
CreationTime | `datetime | None` |
LastModifiedTime | `datetime | None` |
Level | `int | None` |
Metin Çıkarma
Tüm düz metni çıkar
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))Biçimlendirme koşularını incele
Her RichText bir listesini içerir TextRun segmentler. Her çalıştırma kendi 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)}]")Köprüleri çıkar
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)Görsel Çıkarma
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})")Görsel özellikleri: FileName, Bytes, Width, Height, AlternativeTextTitle, AlternativeTextDescription, HyperlinkUrl, Tags.
Tablo Ayrıştırma
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)Ekli Dosyalar
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}")Etiketler ve Numaralı Listeler
NoteTag öğelerini incele
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}")Numaralı listeleri incele
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 Deseni
Kullan DocumentVisitor tüm belge ağacını dolaşan bir ziyaretçi uygulamak için:
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 Dışa Aktarım
PDF dışa aktarımı, isteğe bağlı ReportLab bağımlılığını gerektirir. Şu komutla kurun:
pip install "aspose-note[pdf]"Temel PDF dışa aktarımı
from aspose.note import Document, SaveFormat
doc = Document("MyNotes.one")
doc.Save("output.pdf", SaveFormat.Pdf)Seçenekli PDF dışa aktarı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()Not: PdfSaveOptions.PageIndex ve PageCount alanlar mevcut ancak v26.3.1’de PDF dışa aktarıcısına iletilmiyor. Tüm belge her zaman dışa aktarılır.
Mevcut Sınırlamalar
| Alan | Durum |
|---|---|
Okuma .one dosyalar | Tamamen destekleniyor |
| PDF dışa aktarım (ReportLab aracılığıyla) | Destekleniyor |
Şuraya geri yazma .one | Uygulanmadı |
| Şifreli belgeler | Desteklenmiyor (hata verir IncorrectPasswordException) |
| HTML / görüntü / ONE kaydetme formatları | API uyumluluğu için bildirildi; hata ver UnsupportedSaveFormatException |
Mevcut Kılavuzlar
- Özellikler Genel Bakışı: kanıtlarla tam özellik listesi
- Başlarken: önkoşullar, kurulum ve ilk adımlar
- Kurulum: pip install ve isteğe bağlı bağımlılıklar