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
- Servervriendelijk: werkt op elk OS, inclusief headless Linux-servers en CI/CD-containers
- Stream-compatibel: sla direct op in een
io.BytesIObuffer, geen tijdelijk bestand nodig - 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
| Option | Type | Default | Description |
|---|---|---|---|
PageIndex | int | 0 | Veld bestaat; niet doorgestuurd naar PDF-exporteur in v26.3.1: heeft geen effect |
PageCount | int | None | None | Veld 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: