Wie man eine OneNote-Datei in Python in PDF exportiert

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

  1. Serverfreundlich: läuft auf jedem Betriebssystem, einschließlich headless Linux-Servern und CI/CD-Containern
  2. Stream-fähig: speichert direkt in einen io.BytesIO‑Puffer, keine temporäre Datei erforderlich
  3. 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

OptionTypStandardBeschreibung
PageIndexint0Feld existiert; nicht an PDF-Exporter in v26.3.1 weitergeleitet: hat keine Wirkung
PageCountint | NoneNoneFeld 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:

 Deutsch