Cara Mengekspor File OneNote ke PDF dengan Python

Cara Mengekspor File OneNote ke PDF dengan Python

Aspose.Note FOSS for Python memungkinkan ekspor PDF programatik dari file bagian Microsoft OneNote .one tanpa memerlukan Microsoft Office atau konverter dokumen tingkat sistem operasi apa pun. Ekspor ditangani oleh metode Document.Save() yang didukung oleh renderer PDF opsional ReportLab.

Manfaat

  1. Server-friendly: berjalan pada semua OS, termasuk server Linux tanpa tampilan dan kontainer CI/CD
  2. Stream-capable: menyimpan langsung ke buffer io.BytesIO, tidak memerlukan file sementara
  3. Free and open-source: lisensi MIT

Prasyarat

Ekspor PDF memerlukan dependensi opsional ReportLab. Instal melalui ekstra [pdf]:

pip install "aspose-note[pdf]"

Jika Anda sudah memiliki aspose-note terpasang tanpa tambahan:

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

Verifikasi bahwa ReportLab tersedia:

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

Panduan Langkah-demi-Langkah

Langkah 1: Instal aspose-note dengan Dukungan PDF

pip install "aspose-note[pdf]"

Konfirmasi instalasi:

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

Langkah 2: Muat File OneNote

from aspose.note import Document

doc = Document("MyNotes.one")

Langkah 3: Ekspor Seluruh Dokumen ke PDF

Ekspor paling sederhana, mencakup semua halaman dengan pengaturan default:

from aspose.note import Document, SaveFormat

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

Langkah 4: Gunakan PdfSaveOptions

PdfSaveOptions memungkinkan Anda mengonfigurasi pengaturan ekspor PDF:

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

doc = Document("MyNotes.one")

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

Opsi PdfSave yang Tersedia

OptionTypeDefaultDescription
PageIndexint0Bidang ada; tidak diteruskan ke pengekspor PDF di v26.3.1: tidak berpengaruh
PageCountint | NoneNoneBidang ada; tidak diteruskan ke pengekspor PDF di v26.3.1: tidak berpengaruh

Langkah 5: Ekspor ke Stream dalam Memori

Document.Save() menerima aliran biner secara langsung: tidak perlu file sementara:

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")

Langkah 6: Ekspor Massal Beberapa File

Proses semua file .one dalam sebuah direktori:

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}")

Masalah Umum dan Solusi

1. ImportError: Tidak ada modul bernama ‘reportlab’

Penyebab: Ekstra [pdf] tidak diinstal.

Perbaikan:

pip install "aspose-note[pdf]"

2. UnsupportedSaveFormatException

Penyebab: Format selain SaveFormat.Pdf telah digunakan. Hanya SaveFormat.Pdf yang diimplementasikan.

Perbaikan: Selalu gunakan SaveFormat.Pdf untuk ekspor. Format lain dideklarasikan untuk kompatibilitas API tetapi memicu UnsupportedSaveFormatException.

3. IncorrectPasswordException

Penyebab: File .one dienkripsi. Dokumen yang dienkripsi tidak didukung.

Perbaikan: Gunakan file .one yang tidak terenkripsi. Produk komersial Aspose.Note mendukung enkripsi.

4. FileNotFoundError

Penyebab: Jalur file .one input tidak benar.

Perbaikan: Gunakan pathlib.Path.exists() untuk memvalidasi sebelum memuat:

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. Output PDF kosong atau tidak berisi apa‑apa

Penyebab: File .one berisi halaman tetapi tidak ada konten teks (hanya gambar atau tabel tanpa teks). Renderer PDF menghasilkan halaman berdasarkan apa yang dapat dirender ReportLab dari DOM.

Perbaikan: Verifikasi konten halaman sebelum mengekspor:

from aspose.note import Document, RichText

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

Pertanyaan yang Sering Diajukan

Format penyimpanan apa yang didukung?

Hanya SaveFormat.Pdf yang saat ini diimplementasikan. Enum SaveFormat memiliki tepat satu anggota: SaveFormat.Pdf.

Bisakah saya mengekspor ke stream alih-alih ke file?

Ya. Document.Save() menerima setiap aliran biner yang dapat ditulis sebagai argumen pertamanya:

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

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

Apakah ekspor mempertahankan urutan halaman?

Ya. Halaman diekspor dalam urutan yang sama seperti yang muncul di DOM (urutan yang dikembalikan dengan mengiterasi Document).

Apakah ekspor PDF tersedia di Linux?

Ya. ReportLab dan Aspose.Note FOSS for Python keduanya bersifat OS-independen.

Apakah saya dapat mengekspor sebagian halaman?

Bidang PdfSaveOptions.PageIndex dan PageCount ada tetapi tidak diteruskan ke pengekspor PDF pada v26.3.1 dan tidak berpengaruh: seluruh dokumen selalu diekspor.


Sumber Daya Terkait:

 Bahasa Indonesia