Hogyan exportáljunk egy OneNote fájlt PDF‑be Pythonban

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

  1. Server-friendly: bármely operációs rendszeren fut, beleértve a fej nélküli Linux szervereket és CI/CD konténereket
  2. Stream-capable: közvetlenül egy io.BytesIO pufferbe ment, nincs szükség ideiglenes fájlra
  3. 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

OptionTypeDefaultDescription
PageIndexint0A mező létezik; nem továbbítva a PDF exportálóhoz a v26.3.1‑ben: nincs hatása
PageCountint | NoneNoneA 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:

 Magyar