Kuinka viedä OneNote‑tiedosto PDF‑muotoon Pythonilla

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

  1. Serveriystävällinen: toimii kaikilla käyttöjärjestelmillä, mukaan lukien headless Linux -palvelimet ja CI/CD -kontit
  2. Suoratoistokelpoinen: tallenna suoraan io.BytesIO-puskuriin, väliaikaista tiedostoa ei tarvita
  3. 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

VaihtoehtoTyyppiOletusKuvaus
PageIndexint0Kenttä on olemassa; ei lähetetä PDF-vientiin versiossa 26.3.1: ei vaikuta
PageCountint | NoneNoneKenttä 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:

 Suomi