Kaip eksportuoti OneNote failą į PDF naudojant Python

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

  1. Serverio draugiškas: veikia bet kurioje OS, įskaitant beekraninius Linux serverius ir CI/CD konteinerius
  2. Srauto palaikantis: išsaugokite tiesiogiai į io.BytesIO buferį, nereikia laikino failo
  3. 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

OptionTypeDefaultDescription
PageIndexint0Laukas egzistuoja; neperduodamas PDF eksporteriui v26.3.1: neturi jokios įtakos
PageCountint | NoneNoneLaukas 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:

 Lietuvių