PythonでOneNoteファイルをPDFにエクスポートする方法
Aspose.Note FOSS for Python は、Microsoft Office や OS レベルのドキュメントコンバータを必要とせずに、Microsoft OneNote .one セクション ファイルのプログラムによる PDF エクスポートを可能にします。エクスポートは、オプションの ReportLab PDF レンダラをバックエンドとする Document.Save() メソッドで処理されます。
利点
- サーバーフレンドリー: 任意のOS上で動作し、ヘッドレスLinuxサーバーやCI/CDコンテナを含む
- ストリーム対応:
io.BytesIOバッファに直接保存し、一時ファイルは不要 - 無料かつオープンソース: 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
| Option | Type | Default | Description |
|---|---|---|---|
PageIndex | int | 0 | フィールドが存在します; v26.3.1 の PDF エクスポーターに転送されません: 効果はありません |
PageCount | int | None | None | フィールドが存在します; 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.PageIndex と PageCount フィールドは存在しますが、v26.3.1 では PDF エクスポーターに転送されず、効果がありません:ドキュメント全体が常にエクスポートされます。
関連リソース: