Jak exportovat soubor OneNote do PDF v Python

Jak exportovat soubor OneNote do PDF v Python

Aspose.Note FOSS for Python enables programmatic PDF export of Microsoft OneNote .one sekční soubory bez nutnosti Microsoft Office nebo jakéhokoli konvertoru dokumentů na úrovni operačního systému. Export je zajišťován Document.Save() metodou podporovanou volitelným ReportLab PDF vykreslovačem.

Výhody

  1. Přátelské k serveru: běží na libovolném OS, včetně headless Linux serverů a CI/CD kontejnerů
  2. Schopné streamování: uložte přímo do io.BytesIO bufferu, není potřeba žádný dočasný soubor
  3. Bezplatné a open-source: licence MIT

Požadavky

Export PDF vyžaduje volitelnou závislost ReportLab. Nainstalujte ji pomocí [pdf] extra:

pip install "aspose-note[pdf]"

Pokud již máte aspose-note nainstalováno bez extra:

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

Ověřte, že je ReportLab k dispozici:

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

Průvodce krok za krokem

Krok 1: Nainstalujte aspose-note s podporou PDF

pip install "aspose-note[pdf]"

Potvrďte instalaci:

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

Krok 2: Načtěte soubor OneNote

from aspose.note import Document

doc = Document("MyNotes.one")

Krok 3: Exportujte celý dokument do PDF

Nejjednodušší export, zahrnující všechny stránky s výchozí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žijte PdfSaveOptions

PdfSaveOptions umožňuje vám konfigurovat nastavení 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žnostTypVýchozíPopis
PageIndexint0Pole existuje; nebylo předáno exportéru PDF ve verzi 26.3.1: nemá žádný účinek
PageCount`intNone`None

Krok 5: Export do paměťového proudu

Document.Save() přijímá binární proud přímo: není potřeba žádný dočasný soubor:

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 více souborů

Zpracovat vše .one soubory v adresáři:

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

Časté problémy a opravy

1. ImportError: No module named ‘reportlab’

Příčina: The [pdf] extra nebylo nainstalováno.

Opravit:

pip install "aspose-note[pdf]"

2. UnsupportedSaveFormatException

Příčina: Formát jiný než SaveFormat.Pdf byl použit. Pouze SaveFormat.Pdf je implementováno.

Opravit: Vždy použijte SaveFormat.Pdf pro export. Další formáty jsou deklarovány pro kompatibilitu API, ale vyvolávají UnsupportedSaveFormatException.

3. IncorrectPasswordException

Příčina:Soubor .one je zašifrován. Šifrované dokumenty nejsou podporovány.

Opravit: Použijte nešifrovaný .one soubor. Komerční produkt Aspose.Note podporuje šifrování.

4. FileNotFoundError

Příčina: Vstupní .one cesta k souboru je nesprávná.

Opravit: Použijte pathlib.Path.exists() k ověření před načtení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

Příčina: Soubor .one obsahuje stránky, ale žádný textový obsah (pouze obrázky nebo tabulky bez textu). PDF vykreslovač vytváří stránky na základě toho, co ReportLab dokáže vykreslit z DOM.

Opravit: Ověřte obsah stránky před exportem:

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

Jaké formáty ukládání jsou podporovány?

Pouze SaveFormat.Pdf je v současné době implementováno. Tento SaveFormat enum má přesně jednoho člena: SaveFormat.Pdf.

Mohu exportovat do proudu místo souboru?

Ano. Document.Save() přijímá libovolný zapisovatelný binární proud jako svůj první 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ává export pořadí stránek?

Ano. Stránky jsou exportovány ve stejném pořadí, v jakém se objevují v DOM (pořadí vrácené iterací Document).

Je export PDF dostupný na Linuxu?

Ano. ReportLab a Aspose.Note FOSS pro Python jsou oba nezávislé na OS.

Mohu exportovat podmnožinu stránek?

PdfSaveOptions.PageIndex a PageCount pole existují, ale nejsou předána PDF exportéru ve verzi v26.3.1 a nemají žádný vliv: celý dokument je vždy exportován.


Související zdroje:

 Čeština