Sådan eksporterer du en OneNote-fil til PDF i Python
Aspose.Note FOSS for Python gør det muligt at programmere PDF-eksport af Microsoft OneNote .one sektion‑filer uden at kræve Microsoft Office eller nogen operativsystem‑niveau dokumentkonverter. Eksport håndteres af Document.Save()‑metoden, som er understøttet af den valgfrie ReportLab PDF‑renderer.
Fordele
- Servervenlig: kører på ethvert OS, inklusive headless Linux‑servere og CI/CD‑containere
- Strøm‑kompatibel: gem direkte til en
io.BytesIObuffer, ingen midlertidig fil nødvendig - Gratis og open-source: MIT‑licens
Forudsætninger
PDF-eksport kræver den valgfrie ReportLab-afhængighed. Installer den via [pdf] extra:
pip install "aspose-note[pdf]"Hvis du allerede har aspose-note installeret uden ekstraen:
pip install --upgrade "aspose-note[pdf]"Bekræft, at ReportLab er tilgængelig:
python -c "import reportlab; print(reportlab.Version)"Trin-for-trin guide
Trin 1: Installer aspose-note med PDF-understøttelse
pip install "aspose-note[pdf]"Bekræft installationen:
from aspose.note import Document, SaveFormat
print("Ready for PDF export.")Trin 2: Indlæs OneNote-filen
from aspose.note import Document
doc = Document("MyNotes.one")Trin 3: Eksporter hele dokumentet til PDF
Den enkleste eksport, der dækker alle sider med standardindstillinger:
from aspose.note import Document, SaveFormat
doc = Document("MyNotes.one")
doc.Save("output.pdf", SaveFormat.Pdf)
print("PDF saved to output.pdf")Trin 4: Brug PdfSaveOptions
PdfSaveOptions lader dig konfigurere PDF-eksportindstillinger:
from aspose.note import Document
from aspose.note.saving import PdfSaveOptions
doc = Document("MyNotes.one")
opts = PdfSaveOptions()
doc.Save("output.pdf", opts)Tilgængelige PdfSaveOptions
| Option | Type | Default | Description |
|---|---|---|---|
PageIndex | int | 0 | Feltet findes; ikke videresendt til PDF-eksportøren i v26.3.1: har ingen effekt |
PageCount | int | None | None | Feltet findes; ikke videresendt til PDF-eksportøren i v26.3.1: har ingen effekt |
Trin 5: Eksporter til en In-Memory Stream
Document.Save() accepterer en binær strøm direkte: ingen midlertidig fil nødvendig:
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")Trin 6: Batch‑eksport af flere filer
Behandl alle .one filer i en mappe:
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}")Almindelige problemer og løsninger
1. ImportError: Ingen modul med navnet ‘reportlab’
Årsag: Ekstraen [pdf] var ikke installeret.
Rettelse:
pip install "aspose-note[pdf]"2. UnsupportedSaveFormatException
Årsag: Et format andet end SaveFormat.Pdf blev brugt. Kun SaveFormat.Pdf er implementeret.
Fix: Brug altid SaveFormat.Pdf til eksport. Andre formater er erklæret for API‑kompatibilitet, men udløser UnsupportedSaveFormatException.
3. IncorrectPasswordException
Årsag: .one-filen er krypteret. Krypterede dokumenter understøttes ikke.
Fix: Brug en ukrypteret .one fil. Det kommercielle Aspose.Note-produkt understøtter kryptering.
4. FileNotFoundError
Årsag: Den indtastede .one filsti er forkert.
Rettelse: Brug pathlib.Path.exists() til at validere før indlæsning:
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 er blank eller tom
Årsag: Filen .one indeholder sider, men ingen tekstindhold (kun billeder eller tabeller uden tekst). PDF-rendereren producerer sider baseret på, hvad ReportLab kan gengive fra DOM’en.
Fix: Verificer sideindholdet før eksport:
from aspose.note import Document, RichText
doc = Document("MyNotes.one")
text_count = len(doc.GetChildNodes(RichText))
print(f"RichText nodes found: {text_count}")Ofte stillede spørgsmål
Hvilke gemmeformater understøttes?
Kun SaveFormat.Pdf er i øjeblikket implementeret. SaveFormat-enum’en har præcis ét medlem: SaveFormat.Pdf.
Kan jeg eksportere til en stream i stedet for en fil?
Ja. Document.Save() accepterer enhver skrivbar binær strøm som sit første 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()Bevarer eksport sideordren?
Ja. Sider eksporteres i den samme rækkefølge, som de vises i DOM’en (den rækkefølge, der returneres ved at iterere Document).
Er PDF-eksport tilgængelig på Linux?
Ja. ReportLab og Aspose.Note FOSS for Python er begge OS‑uafhængige.
Kan jeg eksportere en delmængde af sider?
PdfSaveOptions.PageIndex og PageCount felter findes, men videresendes ikke til PDF-eksportøren i v26.3.1 og har ingen effekt: hele dokumentet eksporteres altid.
Relaterede ressourcer: