Hur man exporterar en OneNote-fil till PDF i Python

Hur man exporterar en OneNote-fil till PDF i Python

Aspose.Note FOSS for Python enables programmatic PDF export of Microsoft OneNote .one avsnittfiler utan att kräva Microsoft Office eller någon operativsystem-nivå dokumentkonverterare. export hanteras av Document.Save() Metod som stöds av det valfria ReportLab PDF renderer för.

Fördelar

  1. Servervänligt: körs på alla OS, inklusive headless Linux-server och CI/CD-behållare
  2. Streamkapacitet:• Spara direkt till en io.BytesIO buffer, inga tillfälliga filer behövs
  3. Gratis och öppen källkod:MIT licens

Förutsättningar

PDF-export kräver det valfria ReportLab beroendet. installera den via [pdf] Extra är:

pip install aspose-note

Om du redan har aspose-note installeras utan extra:

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

Kontrollera att ReportLab är tillgänglig:

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

Steg för steg guide

Steg 1: Installera aspose-not med PDF-support

pip install aspose-note

Bekräfta installationen (PDF är ett exporterat format – biblioteket producerar PDF-utgång från källfiler i OneNote, den omvända riktningen stöds inte):

from aspose.note import Document, SaveFormat
print("aspose-note is ready.")

Steg 2: Ladda upp OneNote-filen

from aspose.note import Document

doc = Document("MyNotes.one")

Steg 3: Exportera hela dokumentet till PDF

Den enklaste exporten, som täcker alla sidor med standardinställningar:

from aspose.note import Document, SaveFormat

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

Steg 4: Använd PdfSaveOptions

PdfSaveOptions Låt dig konfigurera PDF-exportinställningar:

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

doc = Document("MyNotes.one")

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

Tillgängliga PdfSaveOptions

AlternativetTyp avförfalskadBeskrivning
PageIndexint0Nollbaserad index för den första sidan att exportera (0 = första sida)
PageCount`intNone`None

Steg 5: Exportera till en in-minnesström

Document.Save() accepterar en binär ström direkt: ingen tillfällig fil behövs:

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: Batch Export Multiple Files

Multiplikationsprocesser .one Filer i en katalog:

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}")

Vanliga problem och fixar

1. ImportError: No module named ‘reportlab’

orsaker:• Den [pdf] Extra installerades inte.

Fixar:

pip install aspose-note

2. UnsupportedSaveFormatException

orsaker:Ett annat format än SaveFormat.Pdf användes. endast SaveFormat.Pdf är genomförd.

Fixar:• Alltid använda SaveFormat.Pdf för export. Andra format deklareras för API-kompatibilitet men höjer UnsupportedSaveFormatException.

3. IncorrectPasswordException

orsaker:• Den .one filen krypteras. kryptade dokument stöds inte.

Fixar:Använd en icke krypterad .one Den kommersiella Aspose.Note-produkten stöder kryptering.

4. FileNotFoundError

orsaker:• Inträde .one Filvägen är felaktig.

Fixar:• Användning pathlib.Path.exists() att validera innan laddning:

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 is blank or empty

orsaker:• Den .one filen innehåller sidor men ingen textinnehåll (endast bilder eller tabeller utan text). PDF- renderaren producerar sidor baserat på vad ReportLab kan göra från DOM.

Fixar:Kontrollera innehållet på sidan innan du exporterar:

from aspose.note import Document, RichText

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

Ofta ställda frågor

Vilka spara format stöds?

Endast SaveFormat.Pdf Det är för närvarande genomfört. den SaveFormat Enum har exakt en medlem: SaveFormat.Pdf.

Kan jag exportera till en ström istället för en fil?

Ja ja . Document.Save() accepterar någon skribar binärström som dess första argument:

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()

Håller exporten sidorder?

Ja. sidor exporteras i samma ordning de visas i DOM (den order som returneras genom att iterera den Document).

Är PDF-exporten tillgänglig på Linux?

Ja. ReportLab och Aspose.Note FOSS för Python är båda OS- oberoende.

Kan jag exportera en subset av sidor?

Ja, använd PdfSaveOptions med PageIndex (Nullbaserad startsida) och PageCount (Till antal sidor som ska exporteras); None = alla återstående) för att exportera en undergrupp av sidor. Båda fälten skickas till PDF-exportören i v26.3.2.


Relaterade resurser :

 Svenska