Ö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-note

PDF 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.FileFormat OneNote 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.LoadHistory bayrak, 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; sunar DisplayName, CreationTime, FileFormat
  • Page: doğrudan çocuğu Document; sunar Title, Author, CreationTime, LastModifiedTime, Level
  • Title: sunar TitleText, TitleDate, TitleTime (tüm RichText düğümler)
  • Outline: konumsal kapsayıcı, içinde HorizontalOffset, VerticalOffset, MaxWidth, MaxHeight, MinWidth, ReservedWidth, IndentPosition
  • OutlineElement: yaprak kapsayıcı; sunar NumberList

Navigasyon yöntemleri açık CompositeNode:

Yöntem / ÖzellikAçıklama
FirstChild, LastChildDoğ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 nodeDoğ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 dizesi
  • TextRuns: list[TextRun]: biçimlendirilmiş segmentlerin listesi
  • Tags: list[NoteTag]: bu bloğa eklenmiş OneNote etiketleri
  • Append(text, style=None): bellekte bir metin akışı ekle
  • Replace(old_value, new_value): bellekte dize değiştirme

Her TextRun taşır:

ÖzellikTürAçıklama
TextstrSegment metni
StyleTextStyleBiçimlendirme meta verileri

TextStyle özellikler:

ÖzellikTür
IsBold, IsItalic, IsUnderline, IsStrikethroughbool
IsSuperscript, IsSubscriptbool
FontName`str
FontSize`float
FontColor, Highlight`int
Language`int
IsHyperlinkbool
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:

ÖzellikTürAçıklama
FileName`strNone`
BytesbytesHam resim verisi
Width, Height`floatNone`
AlternativeTextTitle`strNone`
AlternativeTextDescription`strNone`
HyperlinkUrl`strNone`
Tagslist[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:

ÖzellikTürAçıklama
FileName`strNone`
BytesbytesHam dosya verisi
Tagslist[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ıfAnahtar Özellikler
TableColumns: list[TableColumn] (her TableColumn sahip .Width ve .LockedWidth), IsBordersVisible: bool, Tags: list[NoteTag]
TableRowHü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:

ÖzellikTürAçıklama
Icon`intNone`
Label`strNone`
FontColor`intNone`
Highlight`intNone`
CreationTime`datetimeNone`
CompletedTime`datetimeNone`

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:

ÖzellikTürAçıklama
Format`strNone`
Restart`intNone`
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çenekTürAçıklama
PageIndexintAlan mevcut; v26.3.1 sürümünde PDF dışa aktarıcısına iletilmedi (etkisi yok)
PageCount`intNone`
ImageCompression`AnyNone`
JpegQuality`intNone`
PageSettings`AnyNone`
PageSplittingAlgorithm`AnyNone`
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ğerDurum
SaveFormat.PdfUygulandı (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ğerAçıklama
FileFormat.OneNote2010OneNote 2010 formatı
FileFormat.OneNoteOnlineOneNote Online formatı
FileFormat.OneNote2007OneNote 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ırlamaAyrıntı
Yalnızca okumaGeri yazma .one format uygulanmadı
Şifreleme yokŞifrelenmiş belgeler hata verir IncorrectPasswordException
PDF yalnızca dışa aktarım içinDiğer SaveFormat değerler hata verir UnsupportedSaveFormatException
PDF için ReportLab gerekliKur pip install "aspose-note[pdf]" ayrı ayrı
GetPageHistory tek öğeli liste döndürürTam 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ı olabilir None. Her zaman şununla koruyun if x is not None veya if 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 node yalnızca doğrudan çocuklara ihtiyacınız olduğunda.
  • Windows’ta kodlamayı yönetin: Windows’ta, sys.stdout eski bir kod sayfası kullanabilir. Ekle sys.stdout.reconfigure(encoding="utf-8", errors="replace") Unicode metin yazdırırken başlangıçta.
  • Kur [pdf] ekstra: İçe aktarmayın SaveFormat.Pdf önce kurmadan işlevselliği pip install "aspose-note[pdf]". ReportLab olmadan, PDF’ye kaydetme çalışma zamanında bir içe aktarma hatası oluşturur.
 Türkçe