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
- Přátelské k serveru: běží na libovolném OS, včetně headless Linux serverů a CI/CD kontejnerů
- Schopné streamování: uložte přímo do
io.BytesIObufferu, není potřeba žádný dočasný soubor - 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žnost | Typ | Výchozí | Popis |
|---|---|---|---|
PageIndex | int | 0 | Pole existuje; nebylo předáno exportéru PDF ve verzi 26.3.1: nemá žádný účinek |
PageCount | `int | None` | 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: