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
- Server-vennlig: kjører på alle OS, inkludert headless Linux-servere og CI/CD-containere
- Strøm-klar: lagre direkte til en
io.BytesIO-buffer, ingen midlertidig fil nødvendig - 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
| Alternativ | Type | Standard | Beskrivelse |
|---|---|---|---|
PageIndex | int | 0 | Feltet finnes; ikke videresendt til PDF-eksportøren i v26.3.1: har ingen effekt |
PageCount | int | None | None | Feltet 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: