كيفية قراءة بيانات تعريف الصفحة من OneNote باستخدام Python
ملفات OneNote .one تخزن بيانات تعريفية يمكنك قراءتها دون تحليل شجرة DOM الكاملة للمستند. على مستوى المستند، Document.FileFormat يخبرك بأي نسخة من OneNote يستخدمها الملف. على مستوى الصفحة، كل Page يحمل المؤلف، طابع زمن الإنشاء، طابع زمن آخر تعديل، ومستوى التسلسل الهرمي. Aspose.Note FOSS for Python يتيح الوصول إلى هذه عبر فئتي Document و Page.
المتطلبات المسبقة
pip install aspose-noteالبيانات الوصفية على مستوى المستند
كائن Document يعرض خاصية بيانات وصفية واحدة:
| الخاصية | النوع | الوصف |
|---|---|---|
doc.FileFormat | FileFormat | متغيّر OneNote: FileFormat.OneNote2010، FileFormat.OneNoteOnline، أو FileFormat.Unknown. |
from aspose.note import Document
doc = Document("MyNotes.one")
print(f"File format: {doc.FileFormat}")البيانات الوصفية على مستوى الصفحة
كل كائن Page يحمل:
| الخاصية | النوع | الوصف |
|---|---|---|
page.Author | str | None | اسم العرض للمستخدم الذي أنشأ الصفحة أو يملكها. |
page.CreationTime | datetime | None | وقت إنشاء الصفحة. تُعيد كائن Python datetime بتوقيت UTC. |
page.LastModifiedTime | datetime | None | وقت آخر تعديل للصفحة. |
page.Level | int | None | مستوى إزاحة الصفحة الفرعية. 0 = صفحة المستوى الأعلى، 1 = صفحة فرعية من المستوى الأول، 2 = المستوى الثاني، إلخ. |
الخطوة 1: قراءة البيانات الوصفية لكل صفحة
from aspose.note import Document, Page
doc = Document("ProjectNotes.one")
for i, page in enumerate(doc, start=1):
title = ""
if page.Title and page.Title.TitleText:
title = page.Title.TitleText.Text.strip()
level = page.Level or 0
indent = " " * level
author = page.Author or "(unknown)"
created = page.CreationTime.strftime("%Y-%m-%d") if page.CreationTime else "(none)"
modified = page.LastModifiedTime.strftime("%Y-%m-%d %H:%M") if page.LastModifiedTime else "(none)"
print(f"{indent}[{i}] {title or '(untitled)'}")
print(f"{indent} Author: {author}")
print(f"{indent} Created: {created}")
print(f"{indent} Modified: {modified}")
print(f"{indent} Level: {level}")مثال كامل: تقرير البيانات الوصفية
from aspose.note import Document
def print_metadata_report(one_path: str) -> None:
doc = Document(one_path)
print()
for i, page in enumerate(doc, start=1):
title = ""
if page.Title and page.Title.TitleText:
title = page.Title.TitleText.Text.strip()
level = page.Level or 0
prefix = " " * level + f"[{i}]"
parts = [prefix, f'"{title or "(untitled)"}"']
if page.Author:
parts.append(f"by {page.Author}")
if page.CreationTime:
parts.append(f"created {page.CreationTime.strftime('%Y-%m-%d')}")
if page.LastModifiedTime:
parts.append(f"modified {page.LastModifiedTime.strftime('%Y-%m-%d')}")
print(" ".join(parts))
print_metadata_report("ProjectNotes.one")اكتشاف الصفحات الفرعية
في OneNote، يتم إزاحة الصفحات الفرعية بصريًا تحت الصفحة الأصلية. خاصية page.Level تعكس هذا التداخل:
from aspose.note import Document
doc = Document("MyNotes.one")
for page in doc:
level = page.Level or 0
title = ""
if page.Title and page.Title.TitleText:
title = page.Title.TitleText.Text.strip()
indent = " " * level
marker = "├─" if level > 0 else "•"
print(f"{indent}{marker} {title or '(untitled)'}")قيم المستويات:
0: صفحة المستوى الأعلى1: صفحة فرعية من المستوى الأول (إزاحة واحدة)2: صفحة فرعية من المستوى الثاني (إزاحتان)
ملاحظات
- جميع الطوابع الزمنية (
CreationTime,LastModifiedTime) هي كائناتdatetimeبتوقيت UTC عندما تكون موجودة. page.LevelتُعيدNoneللصفحات التي لم يتم تخزين المستوى فيها بتنسيق ثنائي. عالجNoneكـ0باستخدامpage.Level or 0.