Ako exportovať súbor OneNote do PDF v Python

Ako exportovať súbor OneNote do PDF v Python

Aspose.Note FOSS for Python enables programmatic PDF export of Microsoft OneNote .one section files bez potreby Microsoft Office alebo akéhokoľvek konvertora dokumentov na úrovni operačného systému. Export je spracovávaný Document.Save() metóda podporovaná voliteľným ReportLab PDF renderer.

Výhody

  1. priateľské pre server: beží na akomkoľvek OS, vrátane headless Linux serverov a CI/CD kontajnerov
  2. Schopný streamu: uložte priamo do io.BytesIO bufferu, nie je potrebný žiadny dočasný súbor
  3. Bezplatný a open-source: licencia MIT

Požiadavky

PDF export vyžaduje voliteľnú závislosť ReportLab. Nainštalujte ju prostredníctvom [pdf] extra:

pip install "aspose-note[pdf]"

Ak už máte aspose-note nainštalované bez extra:

pip install --upgrade "aspose-note[pdf]"

Overte, že je ReportLab k dispozícii:

python -c "import reportlab; print(reportlab.Version)"

Postupný návod

Krok 1: Nainštalujte aspose-note s podporou PDF

pip install "aspose-note[pdf]"

Potvrďte inštaláciu:

from aspose.note import Document, SaveFormat
print("Ready for PDF export.")

Krok 2: Načítajte súbor OneNote

from aspose.note import Document

doc = Document("MyNotes.one")

Krok 3: Exportujte celý dokument do PDF

Najjednoduchší export, zahŕňajúci všetky stránky s predvoleným nastavením:

from aspose.note import Document, SaveFormat

doc = Document("MyNotes.one")
doc.Save("output.pdf", SaveFormat.Pdf)
print("PDF saved to output.pdf")

Krok 4: Použite PdfSaveOptions

PdfSaveOptions umožňuje vám konfigurovať nastavenia exportu PDF:

from aspose.note import Document
from aspose.note.saving import PdfSaveOptions

doc = Document("MyNotes.one")

opts = PdfSaveOptions()
doc.Save("output.pdf", opts)

Dostupné PdfSaveOptions

MožnosťTypPredvolenéPopis
PageIndexint0Pole existuje; nebolo odoslané do PDF exportéra vo verzii v26.3.1: nemá žiadny účinok
PageCount`intNone`None

Krok 5: Export do prúdu v pamäti

Document.Save() prijíma binárny prúd priamo: nie je potrebný dočasný súbor:

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")

Krok 6: Dávkový export viacerých súborov

Spracovať všetko .one súbory v adresári:

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}")

Bežné problémy a riešenia

1. ImportError: No module named ‘reportlab’

Príčina: The [pdf] extra nebolo nainštalované.

Opraviť:

pip install "aspose-note[pdf]"

2. UnsupportedSaveFormatException

Príčina: Formát iný ako SaveFormat.Pdf bolo použité. Iba SaveFormat.Pdf je implementované.

Opraviť: Vždy používajte SaveFormat.Pdf pre export. Ostatné formáty sú deklarované pre kompatibilitu API, ale vyvolávajú UnsupportedSaveFormatException.

3. IncorrectPasswordException

Príčina:The .one súbor je šifrovaný. Šifrované dokumenty nie sú podporované.

Opraviť: Použite nešifrovaný .one súbor. Komerčný produkt Aspose.Note podporuje šifrovanie.

4. FileNotFoundError

Príčina: Vstupný .one cesta k súboru je nesprávna.

Opraviť: Použite pathlib.Path.exists() na overenie pred načítaním:

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

Príčina: .one súbor obsahuje stránky, ale žiadny textový obsah (iba obrázky alebo tabuľky bez textu). PDF renderér vytvára stránky na základe toho, čo ReportLab dokáže vykresliť z DOM.

Opraviť: Overte obsah stránok pred exportom:

from aspose.note import Document, RichText

doc = Document("MyNotes.one")
text_count = len(doc.GetChildNodes(RichText))
print(f"RichText nodes found: {text_count}")

Často kladené otázky

Aké formáty ukladania sú podporované?

Iba SaveFormat.Pdf Je momentálne implementované. Tá SaveFormat enum má presne jedného člena: SaveFormat.Pdf.

Môžem exportovať do streamu namiesto súboru?

Áno. Document.Save() akceptuje akýkoľvek zapisovateľný binárny prúd ako svoj prvý 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()

Zachová export poradie stránok?

Áno. Stránky sa exportujú v rovnakom poradí, v akom sa objavujú v DOM (poradie vrátené iteráciou Document).

Je export PDF dostupný na Linuxe?

Áno. ReportLab a Aspose.Note FOSS pre Python sú obe nezávislé od OS.

Môžem exportovať podmnožinu stránok?

PdfSaveOptions.PageIndex a PageCount polia existujú, ale nie sú odoslané do PDF exportéra vo verzii v26.3.1 a nemajú žiadny účinok: celý dokument je vždy exportovaný.


Súvisiace zdroje:

 Slovenčina