Jak exportovat soubor OneNote do PDF v jazyce Python
Aspose.Note FOSS for Python enables programmatic PDF export of Microsoft OneNote .one Export je zpracován pomocí aplikace Microsoft Office. Document.Save() Metodou podporovanou volitelným ReportLab PDF renderer.
Výhody
- Služební přátelský: běží na jakémkoli operačním systému, včetně bezhlavých Linuxových serverů a kontejnerů CI/CD
- S kapacitou proudění: přímo na:
io.BytesIOBuffer, není třeba dočasného souboru. - Volný a open-source:Licence MIT:
Předpoklady
Export PDF vyžaduje volitelnou závislost ReportLab. Nainstalujte ji prostřednictvím aplikace [pdf] dodatečné:
pip install aspose-notePokud už jste to udělali, aspose-note nainstalované bez dodatečného:
pip install --upgrade "aspose-note[pdf]"Ověřte, zda je ReportLab k dispozici:
python -c "import reportlab; print(reportlab.Version)"Krok za krokem
Krok 1: Nainstalujte aspose-note s podporou PDF
pip install aspose-notePotvrďte instalaci (PDF je formát pouze pro export knihovna vytváří výstup PDF ze zdrojových souborů OneNote; obrácený směr není podporován):
from aspose.note import Document, SaveFormat
print("aspose-note is ready.")Krok 2: Nahrát soubor OneNote
from aspose.note import Document
doc = Document("MyNotes.one")Krok 3: Exportovat celý dokument do PDF
Nejjednodušší export, který pokrývá všechny stránky s výchozími 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 nastavit PDF exportní nastavení:
from aspose.note import Document
from aspose.note.saving import PdfSaveOptions
doc = Document("MyNotes.one")
opts = PdfSaveOptions()
doc.Save("output.pdf", opts)Dostupné možnosti PdfSaveOptions
| Možnost: | Typ: | Předvoleně | Popis: |
|---|---|---|---|
PageIndex | int | 0 | Index první stránky, která má být exportována (0 = první stránka) na základě nuly |
PageCount | `int | None` | None |
Krok 5: Export do souboru v paměti
Document.Save() přijímá binární soubor přímo: není potřeba dočasný soubory.:
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: Složka exportování více souborů
Procesy vícečetné .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}")Obvyklé problémy a řešení
1. ImportError: No module named ‘reportlab’
Příčina::Účetní dvůr: [pdf] Extra nebyla nainstalována.
Opravy:
pip install aspose-note2. UnsupportedSaveFormatException
Příčina:: jiný formát než: SaveFormat.Pdf Používá se pouze v případě, že: SaveFormat.Pdf je prováděna.
Opravy:Vždy používat: SaveFormat.Pdf Pro vývoz. Jiné formáty jsou deklarovány pro kompatibilitu s API, ale zvyšují počet souborů. UnsupportedSaveFormatException.
3. IncorrectPasswordException
Příčina::Účetní dvůr: .one Zde je kódovaný soubor. Zašifrované dokumenty nejsou podporovány.
Opravy:Použijte nešifrovaný kód . .one Komerční produkt Aspose.Note podporuje šifrování.
4. FileNotFoundError
Příčina::Přístup: .one Směrnice souboru je nesprávná.
Opravy:Použití: pathlib.Path.exists() před nakládkou ověřit:
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::Účetní dvůr: .one soubor obsahuje stránky, ale žádný textový obsah (pouze obrázky nebo tabulky bez textu). PDF renderer vytváří stránky na základě toho, co ReportLab může vykreslit z DOM.
Opravy: Před exportem ověřte obsah stránky:
from aspose.note import Document, RichText
doc = Document("MyNotes.one")
text_count = len(doc.GetChildNodes(RichText))
print(f"RichText nodes found: {text_count}")Časté otázky
Které formáty ukládání jsou podporovány?
Pouze: SaveFormat.Pdf je v současné době prováděna. SaveFormat enum má přesně jednoho člena: SaveFormat.Pdf.
Můžu exportovat do souboru, ne na stream?
- Ano, jsem.
Document.Save()přijímá jako první argument jakýkoli zapsatelný binární tok:
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()Zachovává export pořadí stránek?
Ano. Stránky se exportují ve stejném pořadí, v jakém jsou zobrazeny v DOM (pořadím vráceným iterováním funkce “Domain” nebo “Retour”) a pak je možné vybrat z nich následující: Document).
Je na Linuxu k dispozici export PDF?
Ano. ReportLab a Aspose.Note FOSS pro Python jsou oba nezávislé na operačním systému.
Můžu exportovat podmnožinu stránek?
Ano, použijte. PdfSaveOptions s: PageIndex (startová stránka na bázi nuly) a PageCount (počet stran, které mají být vyvezeny; None Obě pole jsou předány PDF exportér v verzi 26.3.2.
Související zdroje: