はじめに
Aspose.Note FOSS for Python (aspose-note on PyPI) は、Microsoft OneNote .one ファイルを読み取り、純粋な Python で PDF にエクスポートするための、無料の MIT ライセンスライブラリです。バージョン 26.3.2 には、ページ、アウトライン、リッチテキストノード、画像、添付ファイルを網羅した完全なドキュメントオブジェクトモデルが同梱されており、Microsoft Office のインストールや Windows への依存は不要です。
主な機能
ドキュメントの読み込みと形式検出
Document はオブジェクトモデルのルートです。ファイルパスを渡すことで、サポートされている任意の OneNote 形式を読み込めます。FileFormat プロパティは検出された形式を報告します。
from aspose.note import Document, FileFormat
doc = Document("notebook.one")
print(f"Format : {doc.FileFormat}")
print(f"Pages : {len(list(doc))}")
ページとタイトルの走査
ページは Page ノードで、Document の直下にあります。各 Page は Author、CreationTime、Title といったメタデータを公開します。Title ノードはさらに、TitleText、TitleDate、TitleTime を RichText の子として提供します。
from aspose.note import Document, Page
doc = Document("notebook.one")
for page in doc.GetChildNodes(Page):
print(f"Author : {page.Author}")
print(f"Created : {page.CreationTime}")
if page.Title and page.Title.TitleText:
print(f"Title : {page.Title.TitleText}")
リッチテキストコンテンツの読み取り
RichText ノードは実際のテキストコンテンツを保持するリーフノードです。標準の for ループで RichText オブジェクトを反復処理します — 各項目は文字列セグメントです。Append() を使用してスタイル付きの新しいテキストを追加します。
from aspose.note import Document, Page, Outline, RichText
doc = Document("notebook.one")
for page in doc.GetChildNodes(Page):
for rt in page.GetChildNodes(RichText):
text = "".join(rt)
if text.strip():
print(text[:120])
アウトラインレイアウトプロパティ
Outline ノードはレイアウト座標を公開します: HorizontalOffset、VerticalOffset、MaxWidth、MaxHeight、および MinWidth。これらはレイアウトを意識したページの抽出や再構成に役立ちます。
from aspose.note import Document, Outline
doc = Document("notebook.one")
for outline in doc.GetChildNodes(Outline):
print(f"HOffset={outline.HorizontalOffset} VOffset={outline.VerticalOffset} MaxW={outline.MaxWidth}")
ドキュメントツリー構築
CompositeNode.AppendChildLast() を使用して、最初から Document を構築します。各ノードタイプは有効な親に追加できます: Page → Document、Outline → Page、RichText ノード → Outline。
from aspose.note import Document, Page, Outline, RichText, ParagraphStyle, Title, SaveFormat
doc = Document()
page = Page()
title_text = RichText()
title_text.Append("My New Page", ParagraphStyle())
title = Title()
title.TitleText = title_text
page.Title = title
outline = Outline()
page.AppendChildLast(outline)
doc.AppendChildLast(page)
doc.Save("new_notebook.pdf", SaveFormat.Pdf)
PDF へのエクスポート
Document.Save() は SaveFormat.Pdf を受け取り、PDF をファイルパスまたは BytesIO バッファに書き込むことができます。エクスポートは外部レンダラを使用せず、プロセス内で完全に実行されます。
import io
from aspose.note import Document, SaveFormat
doc = Document("notebook.one")
# File output
doc.Save("export.pdf", SaveFormat.Pdf)
# In-memory buffer
buf = io.BytesIO()
doc.Save(buf, SaveFormat.Pdf)
print(f"PDF bytes: {len(buf.getvalue())}")
クイックスタート
pip install aspose-note-fossfrom aspose.note import Document, Page, RichText, SaveFormat
doc = Document("notebook.one")
# Print all text
for page in doc.GetChildNodes(Page):
for rt in page.GetChildNodes(RichText):
print("".join(rt))
# Export to PDF
doc.Save("output.pdf", SaveFormat.Pdf)
サポートされているフォーマット
| フォーマット | 拡張子 | 読み取り | 書き込み |
|---|---|---|---|
| OneNote 2010 | .one | ✓ | — |
| OneNote 2007 | .one | ✓ | — |
| OneNote オンライン | .one | ✓ | — |
.pdf | — | ✓ |
オープンソースとライセンス
Aspose.Note FOSS for Python は MIT ライセンスの下でリリースされています。PyPI から aspose-note としてインストールしてください。商用利用、再配布、改変はすべて許可されています。