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
- Servervänligt: körs på alla OS, inklusive headless Linux-server och CI/CD-behållare
- Streamkapacitet:• Spara direkt till en
io.BytesIObuffer, inga tillfälliga filer behövs - 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-noteOm 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-noteBekrä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
| Alternativet | Typ av | förfalskad | Beskrivning |
|---|---|---|---|
PageIndex | int | 0 | Nollbaserad index för den första sidan att exportera (0 = första sida) |
PageCount | `int | None` | 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-note2. 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 :