Wie man eine OneNote-Datei in Python in PDF exportiert
Aspose.Note FOSS for Python ermöglicht den programmgesteuerten PDF‑Export von Microsoft OneNote .one Abschnittsdateien, ohne dass Microsoft Office oder ein betriebssystembasierter Dokumentenkonverter erforderlich ist. Der Export wird von der Document.Save() Methode durchgeführt, die vom optionalen ReportLab PDF‑Renderer unterstützt wird.
Vorteile
- Serverfreundlich: läuft auf jedem Betriebssystem, einschließlich headless Linux-Servern und CI/CD-Containern
- Stream-fähig: speichert direkt in einen
io.BytesIO‑Puffer, keine temporäre Datei erforderlich - Kostenlos und Open-Source: MIT-Lizenz
Voraussetzungen
Der PDF‑Export erfordert die optionale ReportLab‑Abhängigkeit. Installieren Sie sie über das [pdf]‑Extra:
pip install "aspose-note[pdf]"Wenn Sie aspose-note bereits ohne das Extra installiert haben:
pip install --upgrade "aspose-note[pdf]"Überprüfen Sie, ob ReportLab verfügbar ist:
python -c "import reportlab; print(reportlab.Version)"Schritt-für-Schritt-Anleitung
Schritt 1: Installieren Sie aspose-note mit PDF‑Unterstützung
pip install "aspose-note[pdf]"Bestätigen Sie die Installation:
from aspose.note import Document, SaveFormat
print("Ready for PDF export.")Schritt 2: Laden Sie die OneNote‑Datei
from aspose.note import Document
doc = Document("MyNotes.one")Schritt 3: Exportieren Sie das gesamte Dokument als PDF
Der einfachste Export, der alle Seiten mit Standardeinstellungen abdeckt:
from aspose.note import Document, SaveFormat
doc = Document("MyNotes.one")
doc.Save("output.pdf", SaveFormat.Pdf)
print("PDF saved to output.pdf")Schritt 4: PdfSaveOptions verwenden
PdfSaveOptions ermöglicht Ihnen die Konfiguration von PDF-Exporteinstellungen:
from aspose.note import Document
from aspose.note.saving import PdfSaveOptions
doc = Document("MyNotes.one")
opts = PdfSaveOptions()
doc.Save("output.pdf", opts)Verfügbare PdfSaveOptions
| Option | Typ | Standard | Beschreibung |
|---|---|---|---|
PageIndex | int | 0 | Feld existiert; nicht an PDF-Exporter in v26.3.1 weitergeleitet: hat keine Wirkung |
PageCount | int | None | None | Feld existiert; nicht an PDF-Exporter in v26.3.1 weitergeleitet: hat keine Wirkung |
Schritt 5: Export in einen In-Memory-Stream
Document.Save() akzeptiert einen Binärstrom direkt: keine temporäre Datei erforderlich:
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")Schritt 6: Batch‑Export mehrerer Dateien
Verarbeite alle .one-Dateien in einem Verzeichnis:
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}")Häufige Probleme und Lösungen
1. ImportError: Kein Modul mit dem Namen ‘reportlab’
Ursache: Das [pdf]-Extra wurde nicht installiert.
Korrektur:
pip install "aspose-note[pdf]"2. UnsupportedSaveFormatException
Ursache: Ein anderes Format als SaveFormat.Pdf wurde verwendet. Nur SaveFormat.Pdf ist implementiert.
Fix: Verwenden Sie immer SaveFormat.Pdf für den Export. Andere Formate werden zur API‑Kompatibilität deklariert, lösen jedoch UnsupportedSaveFormatException aus.
3. IncorrectPasswordException
Ursache: Die .one-Datei ist verschlüsselt. Verschlüsselte Dokumente werden nicht unterstützt.
Fix: Verwenden Sie eine unverschlüsselte .one-Datei. Das kommerzielle Aspose.Note-Produkt unterstützt Verschlüsselung.
4. FileNotFoundError
Ursache: Der Eingabe .one Dateipfad ist inkorrekt.
Korrektur: Verwenden Sie pathlib.Path.exists(), um vor dem Laden zu validieren:
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. Ausgabe‑PDF ist leer oder enthält keinen Inhalt
Ursache: Die .one-Datei enthält Seiten, aber keinen Textinhalt (nur Bilder oder Tabellen ohne Text). Der PDF-Renderer erzeugt Seiten basierend darauf, was ReportLab aus dem DOM rendern kann.
Fix: Seiteninhalt vor dem Export überprüfen:
from aspose.note import Document, RichText
doc = Document("MyNotes.one")
text_count = len(doc.GetChildNodes(RichText))
print(f"RichText nodes found: {text_count}")Häufig gestellte Fragen
Welche Speicherformate werden unterstützt?
Nur SaveFormat.Pdf ist derzeit implementiert. Das SaveFormat‑Enum hat genau ein Mitglied: SaveFormat.Pdf.
Kann ich anstelle einer Datei in einen Stream exportieren?
Ja. Document.Save() akzeptiert jeden beschreibbaren Binärstrom als erstes 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()Behält der Export die Seitenreihenfolge bei?
Ja. Seiten werden in derselben Reihenfolge exportiert, in der sie im DOM erscheinen (die Reihenfolge, die durch das Durchlaufen des Document zurückgegeben wird).
Ist PDF-Export unter Linux verfügbar?
Ja. ReportLab und Aspose.Note FOSS for Python sind beide OS-unabhängig.
Kann ich eine Teilmenge von Seiten exportieren?
PdfSaveOptions.PageIndex und PageCount Felder existieren, werden aber nicht an den PDF‑Exporter in v26.3.1 weitergeleitet und haben keine Wirkung: Das gesamte Dokument wird immer exportiert.
Verwandte Ressourcen: