Hoe een OneNote‑bestand te exporteren naar PDF in Python

Hoe een OneNote‑bestand te exporteren naar PDF in Python

Aspose.Note FOSS for Python maakt programmatische PDF‑export van Microsoft OneNote .one sectiebestanden mogelijk zonder dat Microsoft Office of een documentconverter op besturingssysteemniveau vereist is. Export wordt afgehandeld door de Document.Save()‑methode, ondersteund door de optionele ReportLab PDF‑renderer.

Voordelen

  1. Servervriendelijk: werkt op elk OS, inclusief headless Linux-servers en CI/CD-containers
  2. Stream-compatibel: sla direct op in een io.BytesIO buffer, geen tijdelijk bestand nodig
  3. Gratis en open source: MIT-licentie

Voorvereisten

PDF-export vereist de optionele ReportLab‑afhankelijkheid. Installeer deze via de [pdf] extra:

pip install "aspose-note[pdf]"

Als je aspose-note al geïnstalleerd hebt zonder de extra:

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

Controleer of ReportLab beschikbaar is:

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

Stapsgewijze handleiding

Stap 1: Installeer aspose-note met PDF-ondersteuning

pip install "aspose-note[pdf]"

Bevestig de installatie:

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

Stap 2: Laad het OneNote‑bestand

from aspose.note import Document

doc = Document("MyNotes.one")

Stap 3: Exporteer het volledige document naar PDF

De eenvoudigste export, die alle pagina’s omvat met standaardinstellingen:

from aspose.note import Document, SaveFormat

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

Stap 4: Gebruik PdfSaveOptions

PdfSaveOptions laat je PDF‑exportinstellingen configureren:

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

doc = Document("MyNotes.one")

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

Beschikbare PdfSaveOptions

OptionTypeDefaultDescription
PageIndexint0Veld bestaat; niet doorgestuurd naar PDF-exporteur in v26.3.1: heeft geen effect
PageCountint | NoneNoneVeld bestaat; niet doorgestuurd naar PDF-exporteur in v26.3.1: heeft geen effect

Stap 5: Exporteren naar een In-Memory Stream

Document.Save() accepteert een binaire stream direct: geen tijdelijk bestand nodig:

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

Stap 6: Batch export meerdere bestanden

Verwerk alle .one‑bestanden in een map:

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

Veelvoorkomende problemen en oplossingen

1. ImportError: Geen module met de naam ‘reportlab’

Oorzaak: De [pdf] extra is niet geïnstalleerd.

Oplossing:

pip install "aspose-note[pdf]"

2. UnsupportedSaveFormatException

Oorzaak: Er werd een ander formaat dan SaveFormat.Pdf gebruikt. Alleen SaveFormat.Pdf is geïmplementeerd.

Oplossing: Gebruik altijd SaveFormat.Pdf voor export. Andere formaten zijn gedeclareerd voor API‑compatibiliteit, maar veroorzaken UnsupportedSaveFormatException.

3. IncorrectPasswordException

Oorzaak: Het .one-bestand is versleuteld. Versleutelde documenten worden niet ondersteund.

Fix: Gebruik een niet‑versleuteld .one‑bestand. Het commerciële Aspose.Note‑product ondersteunt versleuteling.

4. FileNotFoundError

Oorzaak: Het invoer .one bestandspad is onjuist.

Oplossing: Gebruik pathlib.Path.exists() om te valideren vóór het laden:

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 is blanco of leeg

Oorzaak: Het .one-bestand bevat pagina’s maar geen tekstinhoud (alleen afbeeldingen of tabellen zonder tekst). De PDF-renderer produceert pagina’s op basis van wat ReportLab kan renderen vanuit de DOM.

Fix: Verifieer de paginainhoud vóór het exporteren:

from aspose.note import Document, RichText

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

Veelgestelde vragen

Welke opslagformaten worden ondersteund?

Alleen SaveFormat.Pdf is momenteel geïmplementeerd. De SaveFormat‑enum heeft precies één lid: SaveFormat.Pdf.

Kan ik exporteren naar een stream in plaats van een bestand?

Ja. Document.Save() accepteert elke schrijfbare binaire stream als eerste argument:

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

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

Behoudt export de paginavolgorde?

Ja. Pagina’s worden geëxporteerd in dezelfde volgorde als ze in de DOM verschijnen (de volgorde die wordt geretourneerd door het itereren van de Document).

Is PDF-export beschikbaar op Linux?

Ja. ReportLab en Aspose.Note FOSS for Python zijn beide OS-onafhankelijk.

Kan ik een subset van pagina’s exporteren?

PdfSaveOptions.PageIndex en PageCount velden bestaan, maar worden niet doorgegeven aan de PDF-exporteur in v26.3.1 en hebben geen effect: het volledige document wordt altijd geëxporteerd.


Gerelateerde bronnen:

 Nederlands