Hogyan exportáljunk egy OneNote fájlt PDF‑be Pythonban
Aspose.Note FOSS for Python lehetővé teszi a Microsoft OneNote .one szekciófájlok programozott PDF exportálását anélkül, hogy a Microsoft Office vagy bármilyen operációs rendszer szintű dokumentumkonverter szükséges lenne. Az exportot a Document.Save() metódus kezeli, amely az opcionális ReportLab PDF renderert használja.
Előnyök
- Server-friendly: bármely operációs rendszeren fut, beleértve a fej nélküli Linux szervereket és CI/CD konténereket
- Stream-capable: közvetlenül egy
io.BytesIOpufferbe ment, nincs szükség ideiglenes fájlra - Free and open-source: MIT licenc
Előfeltételek
A PDF exportáláshoz szükség van az opcionális ReportLab függőségre. Telepítse azt a [pdf] extra segítségével:
pip install "aspose-note[pdf]"Ha már telepítve van a aspose-note a kiegészítő nélkül:
pip install --upgrade "aspose-note[pdf]"Ellenőrizze, hogy a ReportLab elérhető-e:
python -c "import reportlab; print(reportlab.Version)"Lépésről‑lépésre útmutató
1. lépés: Telepítse az aspose-note‑ot PDF támogatással
pip install "aspose-note[pdf]"Erősítse meg a telepítést:
from aspose.note import Document, SaveFormat
print("Ready for PDF export.")2. lépés: OneNote fájl betöltése
from aspose.note import Document
doc = Document("MyNotes.one")3. lépés: A teljes dokumentum exportálása PDF-be
A legegyszerűbb exportálás, amely az összes oldalt lefedi az alapértelmezett beállításokkal:
from aspose.note import Document, SaveFormat
doc = Document("MyNotes.one")
doc.Save("output.pdf", SaveFormat.Pdf)
print("PDF saved to output.pdf")4. lépés: PdfSaveOptions használata
PdfSaveOptions lehetővé teszi a PDF export beállításainak konfigurálását:
from aspose.note import Document
from aspose.note.saving import PdfSaveOptions
doc = Document("MyNotes.one")
opts = PdfSaveOptions()
doc.Save("output.pdf", opts)Elérhető PdfSaveOptions
| Option | Type | Default | Description |
|---|---|---|---|
PageIndex | int | 0 | A mező létezik; nem továbbítva a PDF exportálóhoz a v26.3.1‑ben: nincs hatása |
PageCount | int | None | None | A mező létezik; nem továbbítva a PDF exportálóhoz a v26.3.1‑ben: nincs hatása |
5. lépés: Exportálás memóriában lévő adatfolyamra
Document.Save() közvetlenül elfogad egy bináris adatfolyamot: nincs szükség ideiglenes fájlra:
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")6. lépés: Tömeges exportálás több fájlra
Feldolgozza az összes .one fájlt egy könyvtárban:
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}")Gyakori problémák és javítások
1. ImportError: Nincs ‘reportlab’ nevű modul
Ok: A [pdf] extra nem volt telepítve.
Javítás:
pip install "aspose-note[pdf]"2. UnsupportedSaveFormatException
Ok: A SaveFormat.Pdf-től eltérő formátumot használtak. Csak a SaveFormat.Pdf van megvalósítva.
Javítás: Mindig használja SaveFormat.Pdf exportáláshoz. A többi formátum az API kompatibilitás miatt van deklarálva, de UnsupportedSaveFormatException-t vált ki.
3. IncorrectPasswordException
Ok: A .one fájl titkosított. A titkosított dokumentumok nem támogatottak.
Fix: Használjon egy titkosítatlan .one fájlt. A kereskedelmi Aspose.Note termék támogatja a titkosítást.
4. FileNotFoundError
Ok: A bemeneti .one fájl útvonala helytelen.
Javítás: Használja a pathlib.Path.exists()-t a betöltés előtt az érvényesítéshez:
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. A kimeneti PDF üres vagy üres
Ok: A .one fájl oldalakat tartalmaz, de nincs szöveges tartalom (csak képek vagy táblázatok szöveg nélkül). A PDF renderelő a DOM-ból a ReportLab által renderelhető alapján hoz létre oldalakat.
Javítás: Ellenőrizze az oldal tartalmát exportálás előtt:
from aspose.note import Document, RichText
doc = Document("MyNotes.one")
text_count = len(doc.GetChildNodes(RichText))
print(f"RichText nodes found: {text_count}")Gyakran Ismételt Kérdések
Mely mentési formátumok támogatottak?
Jelenleg csak a SaveFormat.Pdf van megvalósítva. A SaveFormat enum pontosan egy taggal rendelkezik: SaveFormat.Pdf.
Exportálhatok egy adatfolyamra a fájl helyett?
Igen. Document.Save() bármely írható bináris adatfolyamot elfogad első argumentumként:
import io
from aspose.note import Document, PdfSaveOptions, SaveFormat
doc = Document("MyNotes.one")
buf = io.BytesIO()
doc.Save(buf, PdfSaveOptions())
pdf_bytes = buf.getvalue()Megőrzi az export a lapok sorrendjét?
Igen. Az oldalak ugyanabban a sorrendben exportálódnak, ahogy megjelennek a DOM-ban (az iterálás során visszaadott sorrendben a Document).
Elérhető a PDF export Linuxon?
Igen. A ReportLab és az Aspose.Note FOSS for Python egyaránt OS-független.
Exportálhatok egy oldalak részhalmazát?
PdfSaveOptions.PageIndex és PageCount mezők léteznek, de nem kerülnek továbbításra a PDF exportálóhoz a v26.3.1 verzióban, és nincs hatásuk: a teljes dokumentum mindig exportálva van.
Kapcsolódó források: