Cum să exportați un fișier OneNote în PDF în Python
Aspose.Note FOSS pentru Python permite exportul programatic în PDF al fișierelor de secțiune Microsoft OneNote .one fără a necesita Microsoft Office sau vreun convertor de documente la nivel de sistem de operare. Exportul este gestionat de metoda Document.Save() susținută de rendererul PDF opțional ReportLab.
Beneficii
- Prietenos cu serverul: rulează pe orice sistem de operare, inclusiv pe servere Linux fără interfață grafică și containere CI/CD
- Capabil de streaming: salvează direct într-un buffer
io.BytesIO, fără a necesita fișier temporar - Gratuit și open‑source: licență MIT
Precondiții
Exportul PDF necesită dependența opțională ReportLab. Instalați‑o prin extra [pdf]:
pip install "aspose-note[pdf]"Dacă aveți deja aspose-note instalat fără extra:
pip install --upgrade "aspose-note[pdf]"Verificați dacă ReportLab este disponibil:
python -c "import reportlab; print(reportlab.Version)"Ghid pas cu pas
Pasul 1: Instalați aspose-note cu suport PDF
pip install "aspose-note[pdf]"Confirmă instalarea:
from aspose.note import Document, SaveFormat
print("Ready for PDF export.")Pasul 2: Încarcă fișierul OneNote
from aspose.note import Document
doc = Document("MyNotes.one")Pasul 3: Exportă întregul document în PDF
Cel mai simplu export, acoperind toate paginile cu setările implicite:
from aspose.note import Document, SaveFormat
doc = Document("MyNotes.one")
doc.Save("output.pdf", SaveFormat.Pdf)
print("PDF saved to output.pdf")Pasul 4: Utilizați PdfSaveOptions
PdfSaveOptions vă permite să configuraţi setările de export PDF:
from aspose.note import Document
from aspose.note.saving import PdfSaveOptions
doc = Document("MyNotes.one")
opts = PdfSaveOptions()
doc.Save("output.pdf", opts)Disponibil PdfSaveOptions
| Option | Type | Default | Description |
|---|---|---|---|
PageIndex | int | 0 | Câmpul există; nu este transmis exportatorului PDF în v26.3.1: nu are efect |
PageCount | int | None | None | Câmpul există; nu este transmis exportatorului PDF în v26.3.1: nu are efect |
Pasul 5: Exportă într-un flux în memorie
Document.Save() acceptă un flux binar direct: nu este necesar niciun fișier temporar:
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")Pasul 6: Export în lot a mai multor fișiere
Procesează toate fișierele .one dintr-un director:
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}")Probleme comune și soluții
1. ImportError: Nu există niciun modul numit ‘reportlab’
Cauză: Suplimentul [pdf] nu a fost instalat.
Remediere:
pip install "aspose-note[pdf]"2. UnsupportedSaveFormatException
Cauză: A fost utilizat un format diferit de SaveFormat.Pdf. Doar SaveFormat.Pdf este implementat.
Remediere: Utilizați întotdeauna SaveFormat.Pdf pentru export. Alte formate sunt declarate pentru compatibilitatea API, dar declanșează UnsupportedSaveFormatException.
3. IncorrectPasswordException
Cauză: Fișierul .one este criptat. Documentele criptate nu sunt acceptate.
Fix: Utilizați un fișier necriptat .one. Produsul comercial Aspose.Note suportă criptarea.
4. FileNotFoundError
Cauză: Calea fișierului de intrare .one este incorectă.
Remediere: Utilizați pathlib.Path.exists() pentru a valida înainte de încărcare:
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. PDF-ul de ieșire este gol sau vid
Cauză: Fișierul .one conține pagini, dar nu are conținut text (doar imagini sau tabele fără text). Motorul PDF generează pagini pe baza a ceea ce ReportLab poate reda din DOM.
Fix: Verificați conținutul paginii înainte de exportare:
from aspose.note import Document, RichText
doc = Document("MyNotes.one")
text_count = len(doc.GetChildNodes(RichText))
print(f"RichText nodes found: {text_count}")Întrebări frecvente
Ce formate de salvare sunt acceptate?
Doar SaveFormat.Pdf este implementat în prezent. Enumul SaveFormat are exact un membru: SaveFormat.Pdf.
Pot exporta într-un flux în loc de un fișier?
Da. Document.Save() acceptă orice flux binar scriibil ca primul său 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()Exportul păstrează ordinea paginilor?
Da. Paginile sunt exportate în aceeași ordine în care apar în DOM (ordinea returnată prin iterarea Document).
Exportul PDF este disponibil pe Linux?
Da. ReportLab și Aspose.Note FOSS pentru Python sunt ambele independente de sistemul de operare.
Pot exporta un subset de pagini?
Câmpurile PdfSaveOptions.PageIndex și PageCount există, dar nu sunt transmise exportatorului PDF în v26.3.1 și nu au niciun efect: întregul document este întotdeauna exportat.
Resurse conexe: