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
                    └── AttachedFile

Her 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:

ÖzellikTürAçıklama
Title`TitleNone`
Author`strNone`
CreationTime`datetimeNone`
LastModifiedTime`datetimeNone`
Level`intNone`

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

AlanDurum
Okuma .one dosyalarTamamen destekleniyor
PDF dışa aktarım (ReportLab aracılığıyla)Destekleniyor
Şuraya geri yazma .oneUygulanmadı
Şifreli belgelerDesteklenmiyor (hata verir IncorrectPasswordException)
HTML / görüntü / ONE kaydetme formatlarıAPI uyumluluğu için bildirildi; hata ver UnsupportedSaveFormatException

Mevcut Kılavuzlar


Ayrıca Bakınız

 Türkçe