دليل المطور

Aspose.Note FOSS for Python is a free, open-source library for reading Microsoft OneNote .one ملفات القسم دون أي اعتماد على Microsoft Office. إنها توفر واجهة برمجة تطبيقات عامة نظيفة تحت aspose.note الحزمة، مصممة على غرار Aspose.Note لواجهة .NET. المكتبة مناسبة لأتمتة المستندات، وفهرسة المحتوى، وأنابيب استخراج البيانات، وتدفقات العمل الأرشيفية.

دليل المطور هذا يغطي كامل سطح واجهة برمجة التطبيقات العامة المتاحة في الإصدار 26.3.1، مع أمثلة شفرة قابلة للتنفيذ لكل ميزة رئيسية.

تحميل المستند

حمّل .one ملفًا من مسار ملف أو تدفق ثنائي. الـ Document class هي نقطة الدخول لجميع العمليات.

التحميل من مسار ملف

from aspose.note import Document

doc = Document("MyNotes.one")

التحميل من تدفق ثنائي

مفيد عند القراءة من التخزين السحابي، استجابات HTTP، أو المخازن المؤقتة في الذاكرة:

from pathlib import Path
from aspose.note import Document

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

خيارات التحميل

استخدم LoadOptions لتعيين المعلمات الاختيارية عند التحميل:

from aspose.note import Document, LoadOptions

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

ملاحظة: DocumentPassword موجود على LoadOptions للتوافق مع API، لكن المستندات المشفرة غير مدعومة. محاولة تحميل ملف مشفر تُثير IncorrectPasswordException.


بنية المستند (DOM)

نموذج مستند OneNote هو شجرة:

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

كل عقدة تعرض ParentNode و Document خاصية تمشي إلى الجذر. تدعم العقد المركبة تكرار الأطفال،, FirstChild, LastChild, AppendChildLast, InsertChild, RemoveChild, و GetChildNodes(Type).


تكرار الصفحات

الصفحات هي الأطفال المباشرين لـ Document. قم بتكرارها مباشرة أو استخدم 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}]")

بيانات تعريف الصفحة:

خاصيةنوعوصف
Title`TitleNone`
Author`strNone`
CreationTime`datetimeNone`
LastModifiedTime`datetimeNone`
Level`intNone`

استخراج النص

استخراج كل النص العادي

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

فحص مقاطع التنسيق

كل RichText يحتوي على قائمة من TextRun القطاعات. كل تشغيل يحمل ما يخصه 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)}]")

استخراج الروابط التشعبية

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)

استخراج الصور

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

خصائص الصورة: FileName, Bytes, Width, Height, AlternativeTextTitle, AlternativeTextDescription, HyperlinkUrl, Tags.


تحليل الجداول

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)

الملفات المرفقة

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

الوسوم والقوائم المرقمة

فحص عناصر 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}")

فحص القوائم المرقمة

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

استخدم DocumentVisitor لتنفيذ زائر يتجول في شجرة المستند بالكامل:

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

يتطلب تصدير PDF الاعتماد الاختياري ReportLab. قم بتثبيته باستخدام:

pip install "aspose-note[pdf]"

تصدير PDF أساسي

from aspose.note import Document, SaveFormat

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

تصدير PDF مع خيارات

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

ملاحظة: PdfSaveOptions.PageIndex و PageCount الحقول موجودة ولكنها لا تُرسل إلى مُصدّر PDF في الإصدار 26.3.1. يتم دائمًا تصدير المستند بالكامل.


القيود الحالية

منطقةالحالة
قراءة .one ملفاتمدعوم بالكامل
تصدير PDF (عبر ReportLab)مدعوم
الكتابة مرة أخرى إلى .oneغير مُنفذ
مستندات مشفرةغير مدعوم (يُثير IncorrectPasswordException)
تنسيقات حفظ HTML / صورة / ONEمُعلن للتوافق مع API؛ يرفع UnsupportedSaveFormatException

الأدلة المتاحة


انظر أيضًا

 العربية