Hvordan eksportere en OneNote-fil til PDF i Python

Hvordan eksportere en OneNote-fil til PDF i Python

Aspose.Note FOSS for Python gjør det mulig med programmatisk PDF-eksport av Microsoft OneNote .one seksjonsfiler uten å kreve Microsoft Office eller noen operativsystemnivå-dokumentkonverterer. Eksport håndteres av Document.Save()‑metoden støttet av den valgfrie ReportLab PDF‑renderer.

Fordeler

  1. Server-vennlig: kjører på alle OS, inkludert headless Linux-servere og CI/CD-containere
  2. Strøm-klar: lagre direkte til en io.BytesIO-buffer, ingen midlertidig fil nødvendig
  3. Gratis og åpen kildekode: MIT-lisens

Forutsetninger

PDF-eksport krever den valgfrie ReportLab‑avhengigheten. Installer den via [pdf] extra:

pip install "aspose-note[pdf]"

Hvis du allerede har aspose-note installert uten ekstra:

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

Bekreft at ReportLab er tilgjengelig:

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

Trinn-for-trinn guide

Trinn 1: Installer aspose-note med PDF-støtte

pip install "aspose-note[pdf]"

Bekreft installasjonen:

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

Trinn 2: Last inn OneNote-filen

from aspose.note import Document

doc = Document("MyNotes.one")

Steg 3: Eksporter hele dokumentet til PDF

Den enkleste eksporten, som dekker alle sider med standardinnstillinger:

from aspose.note import Document, SaveFormat

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

Trinn 4: Bruk PdfSaveOptions

PdfSaveOptions lar deg konfigurere PDF‑eksportinnstillinger:

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

doc = Document("MyNotes.one")

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

Tilgjengelige PdfSaveOptions

AlternativTypeStandardBeskrivelse
PageIndexint0Feltet finnes; ikke videresendt til PDF-eksportøren i v26.3.1: har ingen effekt
PageCountint | NoneNoneFeltet finnes; ikke videresendt til PDF-eksportøren i v26.3.1: har ingen effekt

Steg 5: Eksporter til en minne‑strøm

Document.Save() godtar 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")

Steg 6: Masseeksport av flere filer

Behandle alle .one-filene 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}")

Vanlige problemer og løsninger

1. ImportError: Ingen modul med navn ‘reportlab’

Årsak: [pdf]-tillegget var ikke installert.

Fiks:

pip install "aspose-note[pdf]"

2. UnsupportedSaveFormatException

Årsak: Et format annet enn SaveFormat.Pdf ble brukt. Kun SaveFormat.Pdf er implementert.

Fiks: Bruk alltid SaveFormat.Pdf for eksport. Andre formater er deklarert for API‑kompatibilitet, men gir UnsupportedSaveFormatException.

3. IncorrectPasswordException

Årsak: Filen .one er kryptert. Krypterte dokumenter støttes ikke.

Fiks: Bruk en ukryptert .one-fil. Det kommersielle Aspose.Note-produktet støtter kryptering.

4. FileNotFoundError

Årsak: Filstien for input .one er feil.

Fiks: Bruk pathlib.Path.exists() for å validere før lasting:

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. Utdata‑PDF er blank eller tom

Årsak: Filen .one inneholder sider, men ingen tekstinnhold (kun bilder eller tabeller uten tekst). PDF‑renderer lager sider basert på hva ReportLab kan gjengi fra DOM‑en.

Fix: Verifiser sideinnholdet før eksportering:

from aspose.note import Document, RichText

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

Ofte stilte spørsmål

Hvilke lagringsformater støttes?

Kun SaveFormat.Pdf er for øyeblikket implementert. SaveFormat-enumet har nøyaktig ett medlem: SaveFormat.Pdf.

Kan jeg eksportere til en stream i stedet for en fil?

Ja. Document.Save() godtar enhver skrivbar binær strøm som sitt 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 siderekkefølgen?

Ja. Sider eksporteres i samme rekkefølge som de vises i DOM (rekkefølgen som returneres ved iterering av Document).

Er PDF‑eksport tilgjengelig på Linux?

Ja. ReportLab og Aspose.Note FOSS for Python er begge OS‑uavhengige.

Kan jeg eksportere et delsett av sider?

PdfSaveOptions.PageIndex og PageCount feltene finnes, men blir ikke videresendt til PDF‑eksportøren i v26.3.1 og har ingen effekt: hele dokumentet blir alltid eksportert.


Relaterte ressurser:

 Norsk