Kaip eksportuoti OneNote failą į PDF naudojant Python
Aspose.Note FOSS for Python leidžia programiškai eksportuoti PDF iš Microsoft OneNote .one sekcijų failų be Microsoft Office ar bet kokio operacinės sistemos lygio dokumentų konvertoriaus. Eksportą tvarko Document.Save() metodas, remiamas pasirinktu ReportLab PDF renderiu.
Privalumai
- Serverio draugiškas: veikia bet kurioje OS, įskaitant beekraninius Linux serverius ir CI/CD konteinerius
- Srauto palaikantis: išsaugokite tiesiogiai į
io.BytesIObuferį, nereikia laikino failo - Nemokama ir atviro kodo: MIT licencija
Būtinosios sąlygos
PDF eksportui reikalinga neprivaloma ReportLab priklausomybė. Įdiekite ją per [pdf] papildinį:
pip install "aspose-note[pdf]"Jei jau turite aspose-note įdiegtą be papildomų:
pip install --upgrade "aspose-note[pdf]"Patikrinkite, ar ReportLab yra prieinamas:
python -c "import reportlab; print(reportlab.Version)"Žingsnis po žingsnio vadovas
Žingsnis 1: Įdiekite aspose-note su PDF palaikymu
pip install "aspose-note[pdf]"Patvirtinkite įdiegimą:
from aspose.note import Document, SaveFormat
print("Ready for PDF export.")Žingsnis 2: Įkelti OneNote failą
from aspose.note import Document
doc = Document("MyNotes.one")Žingsnis 3: Eksportuoti visą dokumentą į PDF
Paprastiausias eksportas, apimantis visus puslapius su numatytaisiais nustatymais:
from aspose.note import Document, SaveFormat
doc = Document("MyNotes.one")
doc.Save("output.pdf", SaveFormat.Pdf)
print("PDF saved to output.pdf")Žingsnis 4: Naudokite PdfSaveOptions
PdfSaveOptions leidžia konfigūruoti PDF eksporto nustatymus:
from aspose.note import Document
from aspose.note.saving import PdfSaveOptions
doc = Document("MyNotes.one")
opts = PdfSaveOptions()
doc.Save("output.pdf", opts)Prieinami PdfSaveOptions
| Option | Type | Default | Description |
|---|---|---|---|
PageIndex | int | 0 | Laukas egzistuoja; neperduodamas PDF eksporteriui v26.3.1: neturi jokios įtakos |
PageCount | int | None | None | Laukas egzistuoja; neperduodamas PDF eksporteriui v26.3.1: neturi jokios įtakos |
Žingsnis 5: Eksportuoti į atminties srautą
Document.Save() priima binarinį srautą tiesiogiai: nereikia laikino failo:
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")Žingsnis 6: Masinis kelių failų eksportavimas
Apdoroti visus .one failus kataloge:
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}")Dažnos problemos ir sprendimai
1. ImportError: Nėra modulio pavadinimu ‘reportlab’
Priežastis: [pdf] papildinys nebuvo įdiegtas.
Pataisa:
pip install "aspose-note[pdf]"2. UnsupportedSaveFormatException
Priežastis: Naudotas formatas, kuris nėra SaveFormat.Pdf. Įgyvendintas tik SaveFormat.Pdf.
Fix: Visada naudokite SaveFormat.Pdf eksporto tikslais. Kiti formatai yra deklaruoti API suderinamumui, tačiau sukelia UnsupportedSaveFormatException.
3. IncorrectPasswordException
Priežastis: Failas .one yra užšifruotas. Užšifruoti dokumentai nepalaikomi.
Fix: Naudokite nešifruotą .one failą. Komercinis Aspose.Note produktas palaiko šifravimą.
4. FileNotFoundError
Priežastis: Įvesties .one failo kelias yra neteisingas.
Pataisa: Naudokite pathlib.Path.exists(), kad patikrintumėte prieš įkeliant:
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. Išvesties PDF yra tuščias arba tuščias
Priežastis: Failas .one turi puslapių, bet nėra teksto turinio (tik paveikslėliai arba lentelės be teksto). PDF atvaizdavimo variklis sukuria puslapius remdamasis tuo, ką ReportLab gali atvaizduoti iš DOM.
Fix: Patikrinkite puslapio turinį prieš eksportuojant:
from aspose.note import Document, RichText
doc = Document("MyNotes.one")
text_count = len(doc.GetChildNodes(RichText))
print(f"RichText nodes found: {text_count}")Dažnai užduodami klausimai
Kokie išsaugojimo formatai palaikomi?
Tik SaveFormat.Pdf šiuo metu įgyvendintas. SaveFormat enum turi lygiai vieną narį: SaveFormat.Pdf.
Ar galiu eksportuoti į srautą vietoj failo?
Taip. Document.Save() priima bet kokį įrašomą dvejetainį srautą kaip pirmąjį 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()Ar eksportas išlaiko puslapių tvarką?
Taip. Puslapiai eksportuojami ta pačia tvarka, kuria jie pasirodo DOM (tvarka, grąžinama iteruojant Document).
Ar PDF eksportas prieinamas Linux?
Taip. ReportLab ir Aspose.Note FOSS for Python yra abu nepriklausomi nuo OS.
Ar galiu eksportuoti puslapių poaibį?
PdfSaveOptions.PageIndex ir PageCount laukai egzistuoja, bet nėra perduodami PDF eksporteriui v26.3.1 ir neturi jokio poveikio: visas dokumentas visada eksportuojamas.
Susiję ištekliai: