Özellikler Genel Bakışı — Aspose.Note FOSS for Python
Aspose.Note FOSS for Python (package aspose-note, version 26.3.1) Microsoft OneNote bölüm dosyalarını okuma için bir Python API’si sağlar .one bölüm dosyalarını ve PDF’ye dışa aktarmayı sağlar. Aşağıda listelenen tüm özellikler depo kaynak kodu, README ve örnek betiklerle doğrulanmıştır.
Kurulum ve Ayarlama
PyPI’dan kurun:
pip install aspose-notePDF dışa aktarma desteği için (ReportLab gerektirir):
pip install "aspose-note[pdf]"Gereksinimler: Python 3.10 veya daha yeni bir sürüm. Microsoft Office kurulumu gerekmez.
Özellikler ve Yetkinlikler
.one Dosya Yükleme
Microsoft OneNote bölüm dosyalarını bir dosya yolundan veya herhangi bir ikili akıştan (dosya tutamağı, io.BytesIO, HTTP yanıt gövdesi, bulut depolama akışı).
Document.FileFormatOneNote dosya formatı sürümüne (OneNote2010, OneNoteOnline veya OneNote2007) yönelik en iyi çaba gösteren bir gösterge sağlar- Akış tabanlı yükleme, bellek içi veya ağ iş akışları için disk G/Ç’yi ortadan kaldırır
LoadOptions.LoadHistorybayrak, sayfa geçmişinin DOM içinde dahil edilip edilmeyeceğini kontrol eder
from aspose.note import Document
##From a file path
doc = Document("notebook.one")
##From a binary stream
with open("notebook.one", "rb") as f:
doc = Document(f)Belge DOM Gezinimi
Tam OneNote belgesi, tiplenmiş Python nesnelerinden oluşan bir ağaç olarak sunulur. Her düğüm şunlardan miras alır Node veya CompositeNode:
Document: kök; sunarDisplayName,CreationTime,FileFormatPage: doğrudan çocuğuDocument; sunarTitle,Author,CreationTime,LastModifiedTime,LevelTitle: sunarTitleText,TitleDate,TitleTime(tümRichTextdüğümler)Outline: konumsal kapsayıcı, içindeHorizontalOffset,VerticalOffset,MaxWidth,MaxHeight,MinWidth,ReservedWidth,IndentPositionOutlineElement: yaprak kapsayıcı; sunarNumberList
Navigasyon yöntemleri açık CompositeNode:
| Yöntem / Özellik | Açıklama |
|---|---|
FirstChild, LastChild | Doğrudan alt öğe erişimi |
GetChildNodes(Type) | Özyinelemeli, tip‑filtreli arama |
AppendChildLast(node) | Çocuğu sona ekle |
AppendChildFirst(node) | Çocuğu başa ekle |
InsertChild(index, node) | Pozisyona ekle |
RemoveChild(node) | Bir çocuğu kaldır |
for child in node | Doğrudan çocukları yinele |
from aspose.note import Document, Page, Outline, OutlineElement, RichText
doc = Document("notebook.one")
for page in doc.GetChildNodes(Page):
title_text = page.Title.TitleText.Text if page.Title and page.Title.TitleText else ""
print(f"Page: {title_text}")
for outline in page.GetChildNodes(Outline):
for oe in outline.GetChildNodes(OutlineElement):
for rt in oe.GetChildNodes(RichText):
print(f" {rt.Text}")Zengin Metin İçeriği Çıkarma
RichText düğümler şunları sunar:
Text: str: tam düz metin dizesiTextRuns: list[TextRun]: biçimlendirilmiş segmentlerin listesiTags: list[NoteTag]: bu bloğa eklenmiş OneNote etiketleriAppend(text, style=None): bellekte bir metin akışı ekleReplace(old_value, new_value): bellekte dize değiştirme
Her TextRun taşır:
| Özellik | Tür | Açıklama |
|---|---|---|
Text | str | Segment metni |
Style | TextStyle | Biçimlendirme meta verileri |
TextStyle özellikler:
| Özellik | Tür |
|---|---|
IsBold, IsItalic, IsUnderline, IsStrikethrough | bool |
IsSuperscript, IsSubscript | bool |
FontName | `str |
FontSize | `float |
FontColor, Highlight | `int |
Language | `int |
IsHyperlink | bool |
HyperlinkAddress | `str |
from aspose.note import Document, RichText
doc = Document("notebook.one")
for rt in doc.GetChildNodes(RichText):
for run in rt.TextRuns:
if run.Style.IsHyperlink:
print(f"Hyperlink: {run.Text} -> {run.Style.HyperlinkAddress}")
if run.Style.IsBold:
print(f"Bold text: {run.Text}")Görsel Çıkarma
Image düğümler, gömülü her resim için ham baytları ve meta verileri ortaya çıkar:
| Özellik | Tür | Açıklama |
|---|---|---|
FileName | `str | None` |
Bytes | bytes | Ham resim verisi |
Width, Height | `float | None` |
AlternativeTextTitle | `str | None` |
AlternativeTextDescription | `str | None` |
HyperlinkUrl | `str | None` |
Tags | list[NoteTag] | Ekli OneNote etiketleri |
from aspose.note import Document, Image
doc = Document("notebook.one")
for i, img in enumerate(doc.GetChildNodes(Image), start=1):
filename = img.FileName or f"image_{i}.bin"
with open(filename, "wb") as f:
f.write(img.Bytes)
print(f"Saved: {filename} ({img.Width} x {img.Height} pts)")Ekli Dosya Çıkarma
AttachedFile düğümler, gömülü dosya eklerini ortaya çıkar:
| Özellik | Tür | Açıklama |
|---|---|---|
FileName | `str | None` |
Bytes | bytes | Ham dosya verisi |
Tags | list[NoteTag] | Ekli OneNote etiketleri |
from aspose.note import Document, AttachedFile
doc = Document("notebook.one")
for i, af in enumerate(doc.GetChildNodes(AttachedFile), start=1):
filename = af.FileName or f"attachment_{i}.bin"
with open(filename, "wb") as f:
f.write(af.Bytes)Tablo Ayrıştırma
Table, TableRow, ve TableCell tam tablo yapısını ortaya çıkar:
| Sınıf | Anahtar Özellikler |
|---|---|
Table | Columns: list[TableColumn] (her TableColumn sahip .Width ve .LockedWidth), IsBordersVisible: bool, Tags: list[NoteTag] |
TableRow | Hücreleri şu şekilde yinele GetChildNodes(TableCell) |
TableCell | İçerir RichText, Image, ve diğer içerik düğümleri |
from aspose.note import Document, Table, TableRow, TableCell, RichText
doc = Document("notebook.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)
values = [
" ".join(rt.Text for rt in cell.GetChildNodes(RichText)).strip()
for cell in cells
]
print(f"Row {r}:", values)OneNote Etiket İncelemesi
NoteTag üzerinde görünür RichText, Image, AttachedFile, ve Table düğümler kendi .Tags özelliği. OutlineElement bir .Tags özelliği yok. NoteTag özellikler:
| Özellik | Tür | Açıklama |
|---|---|---|
Icon | `int | None` |
Label | `str | None` |
FontColor | `int | None` |
Highlight | `int | None` |
CreationTime | `datetime | None` |
CompletedTime | `datetime | None` |
Fabrika yöntemi: NoteTag.CreateYellowStar() standart sarı yıldız etiket düğümü oluşturur.
from aspose.note import Document, RichText
doc = Document("notebook.one")
for rt in doc.GetChildNodes(RichText):
for tag in rt.Tags:
print(f"Tag: {tag.Label} (icon={tag.Icon}, completed={tag.CompletedTime})")Numaralı Liste Desteği
OutlineElement.NumberList açığa çıkar:
| Özellik | Tür | Açıklama |
|---|---|---|
Format | `str | None` |
Restart | `int | None` |
from aspose.note import Document, OutlineElement
doc = Document("notebook.one")
for oe in doc.GetChildNodes(OutlineElement):
nl = oe.NumberList
if nl:
print(f"format={nl.Format!r}")DocumentVisitor Gezinmesi
DocumentVisitor yapılandırılmış tam belge dolaşımı için bir ziyaretçi deseni sağlar. Herhangi bir VisitXxxStart / VisitXxxEnd yöntemi geçersiz kılarak belirli düğüm türlerini yakalar:
VisitDocumentStart(doc)/VisitDocumentEnd(doc)VisitPageStart(page)/VisitPageEnd(page)VisitTitleStart(title)/VisitTitleEnd(title)VisitOutlineStart(outline)/VisitOutlineEnd(outline)VisitOutlineElementStart(oe)/VisitOutlineElementEnd(oe)VisitRichTextStart(rt)/VisitRichTextEnd(rt)VisitImageStart(img)/VisitImageEnd(img)
from aspose.note import Document, DocumentVisitor, Page, RichText, Image
class MySummaryVisitor(DocumentVisitor):
def __init__(self):
self.pages, self.texts, self.images = 0, 0, 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("notebook.one")
v = MySummaryVisitor()
doc.Accept(v)
print(f"Pages={v.pages} RichText={v.texts} Images={v.images}")PDF Dışa Aktarım
Yüklenmiş bir belgeyi PDF olarak kaydet Document.Save(). Opsiyonel ReportLab arka ucu aracılığıyla desteklenir.
from aspose.note import Document, SaveFormat
doc = Document("notebook.one")
doc.Save("output.pdf", SaveFormat.Pdf)PdfSaveOptions
| Seçenek | Tür | Açıklama |
|---|---|---|
PageIndex | int | Alan mevcut; v26.3.1 sürümünde PDF dışa aktarıcısına iletilmedi (etkisi yok) |
PageCount | `int | None` |
ImageCompression | `Any | None` |
JpegQuality | `int | None` |
PageSettings | `Any | None` |
PageSplittingAlgorithm | `Any | None` |
import io
from aspose.note import Document, SaveFormat
from aspose.note.saving import PdfSaveOptions
doc = Document("notebook.one")
##Save to file
doc.Save("output.pdf", SaveFormat.Pdf)
##Save to in-memory stream
buf = io.BytesIO()
doc.Save(buf, PdfSaveOptions())
pdf_bytes = buf.getvalue()Biçim ve Enum Referansı
SaveFormat
| Değer | Durum |
|---|---|
SaveFormat.Pdf | Uygulandı (ReportLab gerektirir) |
FileFormat
Document.FileFormat OneNote dosya formatı sürümünün en iyi çaba ile bir göstergesini sağlar. Enum üç değer bildirir:
| Değer | Açıklama |
|---|---|
FileFormat.OneNote2010 | OneNote 2010 formatı |
FileFormat.OneNoteOnline | OneNote Online formatı |
FileFormat.OneNote2007 | OneNote 2007 formatı |
NodeType
NodeType.Document, NodeType.Page, NodeType.Outline, NodeType.OutlineElement, NodeType.RichText, NodeType.Image, NodeType.Table, NodeType.AttachedFile
HorizontalAlignment
HorizontalAlignment.Left, HorizontalAlignment.Center, HorizontalAlignment.Right
Mevcut Sınırlamalar
| Sınırlama | Ayrıntı |
|---|---|
| Yalnızca okuma | Geri yazma .one format uygulanmadı |
| Şifreleme yok | Şifrelenmiş belgeler hata verir IncorrectPasswordException |
| PDF yalnızca dışa aktarım için | Diğer SaveFormat değerler hata verir UnsupportedSaveFormatException |
| PDF için ReportLab gerekli | Kur pip install "aspose-note[pdf]" ayrı ayrı |
GetPageHistory tek öğeli liste döndürür | Tam sayfa geçmişi dolaşımı bir taslaktır; döndürür [page] |
DetectLayoutChanges() | Uyumluluk taslağı; işlem yok |
İpuçları ve En İyi Uygulamalar
- None için kontrol et:
Page.Title,Title.TitleText,OutlineElement.NumberList, ve çoğu meta veri alanı olabilirNone. Her zaman şununla koruyunif x is not Noneveyaif xözelliklere erişmeden önce. - Kullan
GetChildNodes(Type)özyinelemeli arama için kullanın, ağacı manuel olarak yinelemek yerine. Tüm alt ağacı arar. - Doğrudan çocukları yineleyin ile
for child in nodeyalnızca doğrudan çocuklara ihtiyacınız olduğunda. - Windows’ta kodlamayı yönetin: Windows’ta,
sys.stdouteski bir kod sayfası kullanabilir. Eklesys.stdout.reconfigure(encoding="utf-8", errors="replace")Unicode metin yazdırırken başlangıçta. - Kur
[pdf]ekstra: İçe aktarmayınSaveFormat.Pdfönce kurmadan işlevselliğipip install "aspose-note[pdf]". ReportLab olmadan, PDF’ye kaydetme çalışma zamanında bir içe aktarma hatası oluşturur.