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
- priateľské pre server: beží na akomkoľvek OS, vrátane headless Linux serverov a CI/CD kontajnerov
- Schopný streamu: uložte priamo do
io.BytesIObufferu, nie je potrebný žiadny dočasný súbor - 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ť | Typ | Predvolené | Popis |
|---|---|---|---|
PageIndex | int | 0 | Pole existuje; nebolo odoslané do PDF exportéra vo verzii v26.3.1: nemá žiadny účinok |
PageCount | `int | None` | 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: