دليل المطور
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 | `Title | None` |
Author | `str | None` |
CreationTime | `datetime | None` |
LastModifiedTime | `datetime | None` |
Level | `int | None` |
استخراج النص
استخراج كل النص العادي
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 |
الأدلة المتاحة
- نظرة عامة على الميزات: قائمة كاملة بالميزات مع الأدلة
- البدء: المتطلبات المسبقة، التثبيت، والخطوات الأولى
- التثبيت: pip install والاعتمادات الاختيارية