PythonでOneNoteファイルをPDFにエクスポートする方法

PythonでOneNoteファイルをPDFにエクスポートする方法

Aspose.Note FOSS for Python は、Microsoft Office や OS レベルのドキュメントコンバータを必要とせずに、Microsoft OneNote .one セクション ファイルのプログラムによる PDF エクスポートを可能にします。エクスポートは、オプションの ReportLab PDF レンダラをバックエンドとする Document.Save() メソッドで処理されます。

利点

  1. サーバーフレンドリー: 任意のOS上で動作し、ヘッドレスLinuxサーバーやCI/CDコンテナを含む
  2. ストリーム対応: io.BytesIO バッファに直接保存し、一時ファイルは不要
  3. 無料かつオープンソース: MITライセンス

前提条件

PDF エクスポートにはオプションの ReportLab 依存関係が必要です。[pdf] extra を使用してインストールしてください:

pip install "aspose-note[pdf]"

すでに aspose-note を追加機能なしでインストールしている場合は:

pip install --upgrade "aspose-note[pdf]"

ReportLab が利用可能か確認してください:

python -c "import reportlab; print(reportlab.Version)"

ステップバイステップ ガイド

ステップ 1: PDF サポート付き aspose-note をインストール

pip install "aspose-note[pdf]"

インストールを確認してください:

from aspose.note import Document, SaveFormat
print("Ready for PDF export.")

ステップ 2: OneNote ファイルをロードする

from aspose.note import Document

doc = Document("MyNotes.one")

ステップ 3: ドキュメント全体を PDF にエクスポート

デフォルト設定で全ページをカバーする最もシンプルなエクスポート:

from aspose.note import Document, SaveFormat

doc = Document("MyNotes.one")
doc.Save("output.pdf", SaveFormat.Pdf)
print("PDF saved to output.pdf")

ステップ 4: PdfSaveOptions を使用する

PdfSaveOptions PDFエクスポート設定を構成できます:

from aspose.note import Document
from aspose.note.saving import PdfSaveOptions

doc = Document("MyNotes.one")

opts = PdfSaveOptions()
doc.Save("output.pdf", opts)

利用可能な PdfSaveOptions

OptionTypeDefaultDescription
PageIndexint0フィールドが存在します; v26.3.1 の PDF エクスポーターに転送されません: 効果はありません
PageCountint | NoneNoneフィールドが存在します; v26.3.1 の PDF エクスポーターに転送されません: 効果はありません

ステップ5:メモリ内ストリームへエクスポート

Document.Save() はバイナリ ストリームを直接受け入れます: 一時ファイルは不要です:

import io
from aspose.note import Document, SaveFormat
from aspose.note.saving import PdfSaveOptions

doc = Document("MyNotes.one")

buf = io.BytesIO()
doc.Save(buf, PdfSaveOptions())
pdf_bytes = buf.getvalue()
print(f"PDF size: {len(pdf_bytes)} bytes")

ステップ 6: 複数ファイルのバッチエクスポート

ディレクトリ内のすべての .one ファイルを処理する:

from pathlib import Path
from aspose.note import Document, SaveFormat

input_dir = Path("./onenote_files")
output_dir = Path("./pdf_output")
output_dir.mkdir(exist_ok=True)

for one_file in input_dir.glob("*.one"):
    doc = Document(str(one_file))
    out_path = output_dir / one_file.with_suffix(".pdf").name
    doc.Save(str(out_path), SaveFormat.Pdf)
    print(f"Exported: {one_file.name} -> {out_path.name}")

一般的な問題と対処法

1. ImportError: ‘reportlab’ という名前のモジュールが見つかりません

原因: [pdf] エクストラがインストールされていませんでした。

修正:

pip install "aspose-note[pdf]"

2. UnsupportedSaveFormatException

原因: SaveFormat.Pdf 以外の形式が使用されました。実装されているのは SaveFormat.Pdf のみです。

Fix: エクスポートには常にSaveFormat.Pdfを使用してください。他の形式はAPI互換性のために宣言されていますが、UnsupportedSaveFormatExceptionが発生します。

3. IncorrectPasswordException

原因: .one ファイルは暗号化されています。暗号化されたドキュメントはサポートされていません。

Fix: 暗号化されていない.oneファイルを使用してください。商用のAspose.Note製品は暗号化をサポートしています。

4. FileNotFoundError

原因: 入力 .one ファイルパスが正しくありません。

修正: 読み込み前に検証するためにpathlib.Path.exists()を使用してください:

from pathlib import Path
from aspose.note import Document, SaveFormat

path = Path("MyNotes.one")
assert path.exists(), f"File not found: {path.resolve()}"
doc = Document(str(path))
doc.Save("output.pdf", SaveFormat.Pdf)

5. 出力された PDF が空白または空です

原因: .one ファイルにはページがありますが、テキストコンテンツがありません(画像やテキストのない表のみ)。PDF レンダラーは DOM から ReportLab がレンダリングできるものに基づいてページを生成します。

修正: エクスポート前にページ内容を確認してください。

from aspose.note import Document, RichText

doc = Document("MyNotes.one")
text_count = len(doc.GetChildNodes(RichText))
print(f"RichText nodes found: {text_count}")

よくある質問

サポートされている保存形式はどれですか?

現在、SaveFormat.Pdf のみが実装されています。SaveFormat 列挙型には正確に 1 つのメンバーがあります: SaveFormat.Pdf

ファイルではなくストリームにエクスポートできますか?

はい。 Document.Save() は最初の引数として任意の書き込み可能なバイナリストリームを受け入れます:

import io
from aspose.note import Document, PdfSaveOptions, SaveFormat

doc = Document("MyNotes.one")
buf = io.BytesIO()
doc.Save(buf, PdfSaveOptions())
pdf_bytes = buf.getvalue()

エクスポートはページ順序を保持しますか?

はい。ページは DOM に表示される順序と同じ順序でエクスポートされます(Document を反復処理して返される順序)。

LinuxでPDFエクスポートは利用可能ですか?

はい。ReportLab と Aspose.Note FOSS for Python はどちらも OS に依存しません。

ページのサブセットをエクスポートできますか?

PdfSaveOptions.PageIndexPageCount フィールドは存在しますが、v26.3.1 では PDF エクスポーターに転送されず、効果がありません:ドキュメント全体が常にエクスポートされます。


関連リソース:

 日本語