Kako izvesti OneNote datoteku u PDF u Pythonu
Aspose.Note FOSS for Python omogućuje programatski PDF izvoz Microsoft OneNote .one sekcijskih datoteka bez potrebe za Microsoft Officeom ili bilo kojim pretvaračem dokumenata na razini operativnog sustava. Izvoz se obrađuje metodom Document.Save() koja se oslanja na opcionalni ReportLab PDF renderer.
Prednosti
- Server-friendly: radi na bilo kojem OS-u, uključujući headless Linux poslužitelje i CI/CD kontejnere
- Stream-capable: spremi izravno u
io.BytesIOmeđuspremnik, nije potrebna privremena datoteka - Free and open-source: MIT licenca
Preduvjeti
PDF izvoz zahtijeva opcionalnu ReportLab ovisnost. Instalirajte ga putem dodatka [pdf]:
pip install "aspose-note[pdf]"Ako već imate aspose-note instaliran bez dodatka:
pip install --upgrade "aspose-note[pdf]"Provjerite je li ReportLab dostupan:
python -c "import reportlab; print(reportlab.Version)"Vodič korak po korak
Korak 1: Instalirajte aspose-note s PDF podrškom
pip install "aspose-note[pdf]"Potvrdite instalaciju:
from aspose.note import Document, SaveFormat
print("Ready for PDF export.")Korak 2: Učitaj OneNote datoteku
from aspose.note import Document
doc = Document("MyNotes.one")Korak 3: Izvezi cijeli dokument u PDF
Najjednostavniji izvoz, koji pokriva sve stranice s zadanim postavkama:
from aspose.note import Document, SaveFormat
doc = Document("MyNotes.one")
doc.Save("output.pdf", SaveFormat.Pdf)
print("PDF saved to output.pdf")Korak 4: Upotrijebite PdfSaveOptions
PdfSaveOptions omogućuje konfiguriranje postavki izvoza PDF-a:
from aspose.note import Document
from aspose.note.saving import PdfSaveOptions
doc = Document("MyNotes.one")
opts = PdfSaveOptions()
doc.Save("output.pdf", opts)Dostupne PdfSaveOptions
| Option | Type | Default | Description |
|---|---|---|---|
PageIndex | int | 0 | Polje postoji; nije proslijeđeno PDF izvoznika u v26.3.1: nema učinka |
PageCount | int | None | None | Polje postoji; nije proslijeđeno PDF izvoznika u v26.3.1: nema učinka |
Korak 5: Izvoz u memorijski tok
Document.Save() prihvaća binarni tok izravno: nije potrebna privremena datoteka:
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")Korak 6: Serijski izvoz više datoteka
Obradite sve .one datoteke u direktoriju:
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}")Uobičajeni problemi i rješenja
1. ImportError: Nema modula pod nazivom ‘reportlab’
Uzrok: Dodatak [pdf] nije instaliran.
Ispravak:
pip install "aspose-note[pdf]"2. UnsupportedSaveFormatException
Uzrok: Korišten je format koji nije SaveFormat.Pdf. Implementiran je samo SaveFormat.Pdf.
Ispravak: Uvijek koristite SaveFormat.Pdf za izvoz. Ostali formati su deklarirani radi API kompatibilnosti, ali izazivaju UnsupportedSaveFormatException.
3. IncorrectPasswordException
Uzrok: Datoteka .one je šifrirana. Šifrirani dokumenti nisu podržani.
Fix: Koristite nešifriranu .one datoteku. Komercijalni proizvod Aspose.Note podržava šifriranje.
4. FileNotFoundError
Uzrok: Putanja ulazne datoteke .one je netočna.
Ispravak: Koristite pathlib.Path.exists() za provjeru prije učitavanja:
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 izlaz je prazan ili bez sadržaja
Uzrok: Datoteka .one sadrži stranice, ali nema tekstualnog sadržaja (samo slike ili tablice bez teksta). PDF renderer generira stranice na temelju onoga što ReportLab može prikazati iz DOM-a.
Ispravak: Provjerite sadržaj stranice prije izvoza:
from aspose.note import Document, RichText
doc = Document("MyNotes.one")
text_count = len(doc.GetChildNodes(RichText))
print(f"RichText nodes found: {text_count}")Često postavljana pitanja
Koji formati spremanja su podržani?
Samo SaveFormat.Pdf je trenutno implementiran. Enum SaveFormat ima točno jednog člana: SaveFormat.Pdf.
Mogu li izvesti u tok umjesto u datoteku?
Da. Document.Save() prihvaća bilo koji zapisivi binarni tok kao svoj prvi 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()Čuva li izvoz redoslijed stranica?
Da. Stranice se izvoze istim redoslijedom kojim se pojavljuju u DOM-u (redoslijed koji se dobije iteriranjem Document).
Je li izvoz u PDF dostupan na Linuxu?
Da. ReportLab i Aspose.Note FOSS za Python su oba OS‑neovisni.
Mogu li izvesti podskup stranica?
PdfSaveOptions.PageIndex i PageCount polja postoje, ali se ne prosljeđuju PDF izvozniku u v26.3.1 i nemaju učinka: cijeli dokument se uvijek izvozi.
Povezani resursi: