Kuinka viedä OneNote‑tiedosto PDF‑muotoon Pythonilla
Aspose.Note FOSS for Python mahdollistaa ohjelmallisen PDF-viennin Microsoft OneNote .one -osatiedostoista ilman, että vaaditaan Microsoft Officea tai mitään käyttöjärjestelmän tasolla toimivaa asiakirjamuunninta. Vienti hoidetaan Document.Save()-menetelmällä, jota tukee valinnainen ReportLab PDF-renderöijä.
Hyödyt
- Serveriystävällinen: toimii kaikilla käyttöjärjestelmillä, mukaan lukien headless Linux -palvelimet ja CI/CD -kontit
- Suoratoistokelpoinen: tallenna suoraan
io.BytesIO-puskuriin, väliaikaista tiedostoa ei tarvita - Ilmainen ja avoimen lähdekoodin: MIT-lisenssi
Edellytykset
PDF-vienti vaatii valinnaisen ReportLab-riippuvuuden. Asenna se [pdf] -lisäosan kautta:
pip install "aspose-note[pdf]"Jos sinulla on jo aspose-note asennettuna ilman lisäosaa:
pip install --upgrade "aspose-note[pdf]"Varmista, että ReportLab on saatavilla:
python -c "import reportlab; print(reportlab.Version)"Vaiheittainen opas
Vaihe 1: Asenna aspose-note PDF‑tuen kanssa
pip install "aspose-note[pdf]"Vahvista asennus:
from aspose.note import Document, SaveFormat
print("Ready for PDF export.")Vaihe 2: Lataa OneNote‑tiedosto
from aspose.note import Document
doc = Document("MyNotes.one")Vaihe 3: Vie koko asiakirja PDF-muotoon
Yksinkertaisin vienti, joka kattaa kaikki sivut oletusasetuksilla:
from aspose.note import Document, SaveFormat
doc = Document("MyNotes.one")
doc.Save("output.pdf", SaveFormat.Pdf)
print("PDF saved to output.pdf")Vaihe 4: Käytä PdfSaveOptions
PdfSaveOptions antaa sinun määrittää PDF‑vientiasetukset:
from aspose.note import Document
from aspose.note.saving import PdfSaveOptions
doc = Document("MyNotes.one")
opts = PdfSaveOptions()
doc.Save("output.pdf", opts)Saatavilla olevat PdfSaveOptions
| Vaihtoehto | Tyyppi | Oletus | Kuvaus |
|---|---|---|---|
PageIndex | int | 0 | Kenttä on olemassa; ei lähetetä PDF-vientiin versiossa 26.3.1: ei vaikuta |
PageCount | int | None | None | Kenttä on olemassa; ei lähetetä PDF-vientiin versiossa 26.3.1: ei vaikuta |
Vaihe 5: Vie muistivirtaan
Document.Save() hyväksyy binäärivirran suoraan: väliaikaista tiedostoa ei tarvita:
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")Vaihe 6: Erävienti useille tiedostoille
Käsittele kaikki .one-tiedostot hakemistossa:
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}")Yleisiä ongelmia ja korjauksia
1. ImportError: Ei moduulia nimeltä ‘reportlab’
Syy: [pdf]-lisäosaa ei ollut asennettu.
Korjaus:
pip install "aspose-note[pdf]"2. UnsupportedSaveFormatException
Syy: Käytettiin muuta formaattia kuin SaveFormat.Pdf. Vain SaveFormat.Pdf on toteutettu.
Korjaus: Käytä aina SaveFormat.Pdf vientiin. Muita formaatteja on määritelty API-yhteensopivuuden vuoksi, mutta ne aiheuttavat UnsupportedSaveFormatException.
3. IncorrectPasswordException
Syy: Tiedosto .one on salattu. Salattuja asiakirjoja ei tueta.
Korjaus: Käytä salaamatonta .one‑tiedostoa. Kaupallinen Aspose.Note‑tuote tukee salausta.
4. FileNotFoundError
Syy: Syötteen .one tiedostopolku on virheellinen.
Korjaus: Käytä pathlib.Path.exists() vahvistamiseen ennen lataamista:
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. Tulostettu PDF on tyhjä tai tyhjä
Syy: Tiedosto .one sisältää sivuja, mutta ei tekstisisältöä (vain kuvia tai taulukoita ilman tekstiä). PDF-renderöijä tuottaa sivut sen perusteella, mitä ReportLab voi renderöidä DOM:sta.
Korjaus: Vahvista sivun sisältö ennen vientiä:
from aspose.note import Document, RichText
doc = Document("MyNotes.one")
text_count = len(doc.GetChildNodes(RichText))
print(f"RichText nodes found: {text_count}")Usein kysytyt kysymykset
Mitkä tallennusmuodot ovat tuettuja?
Vain SaveFormat.Pdf on tällä hetkellä toteutettu. SaveFormat-enumilla on täsmälleen yksi jäsen: SaveFormat.Pdf.
Voinko viedä streamiin tiedoston sijaan?
Kyllä. Document.Save() hyväksyy minkä tahansa kirjoitettavan binaarisen virran ensimmäisenä argumenttinaan:
import io
from aspose.note import Document, PdfSaveOptions, SaveFormat
doc = Document("MyNotes.one")
buf = io.BytesIO()
doc.Save(buf, PdfSaveOptions())
pdf_bytes = buf.getvalue()Säilyttääkö vienti sivujärjestyksen?
Kyllä. Sivut viedään samaan järjestykseen kuin ne esiintyvät DOMissa (järjestys, joka saadaan iteroimalla Document).
Onko PDF‑vienti saatavilla Linuxissa?
Kyllä. ReportLab ja Aspose.Note FOSS for Python ovat molemmat käyttöjärjestelmäriippumattomia.
Voinko viedä sivujen osajoukon?
PdfSaveOptions.PageIndex ja PageCount kentät ovat olemassa, mutta niitä ei lähetetä PDF‑vientiin versiossa v26.3.1, eikä niillä ole vaikutusta: koko asiakirja viedään aina.
Liittyvät resurssit: