Kā eksportēt OneNote failu uz PDF, izmantojot Python

Kā eksportēt OneNote failu uz PDF, izmantojot Python

Aspose.Note FOSS for Python ļauj programmatiski eksportēt PDF no Microsoft OneNote .one sadaļas failiem, neprasot Microsoft Office vai kādu operētājsistēmas līmeņa dokumentu pārveidotāju. Eksports tiek apstrādāts ar Document.Save() metodi, kas balstīta uz izvēles ReportLab PDF renderētāju.

Ieguvumi

  1. Server-friendly: darbojas jebkurā OS, ieskaitot galveņu Linux serverus un CI/CD konteinerus
  2. Stream-capable: saglabā tieši uz io.BytesIO bufera, nav vajadzīgs pagaidu fails
  3. Free and open-source: MIT licence

Priekšnosacījumi

PDF eksportam ir nepieciešama izvēles ReportLab atkarība. Instalējiet to, izmantojot [pdf] paplašinājumu:

pip install "aspose-note[pdf]"

Ja jums jau ir instalēts aspose-note bez papildu:

pip install --upgrade "aspose-note[pdf]"

Pārbaudiet, vai ReportLab ir pieejams:

python -c "import reportlab; print(reportlab.Version)"

Rokasgrāmata soli pa solim

Solis 1: Instalējiet aspose-note ar PDF atbalstu

pip install "aspose-note[pdf]"

Apstipriniet instalēšanu:

from aspose.note import Document, SaveFormat
print("Ready for PDF export.")

2. solis: ielādēt OneNote failu

from aspose.note import Document

doc = Document("MyNotes.one")

3. solis: Eksportēt visu dokumentu uz PDF

Visvienkāršākais eksports, aptverot visas lapas ar noklusējuma iestatījumiem:

from aspose.note import Document, SaveFormat

doc = Document("MyNotes.one")
doc.Save("output.pdf", SaveFormat.Pdf)
print("PDF saved to output.pdf")

4. solis: Izmantot PdfSaveOptions

PdfSaveOptions ļauj jums konfigurēt PDF eksportēšanas iestatījumus:

from aspose.note import Document
from aspose.note.saving import PdfSaveOptions

doc = Document("MyNotes.one")

opts = PdfSaveOptions()
doc.Save("output.pdf", opts)

Pieejamie PdfSaveOptions

OpcijaTipsNoklusējumsApraksts
PageIndexint0Lauks pastāv; nav pārsūtīts PDF eksportētājam versijā 26.3.1: nav ietekmes
PageCountint | NoneNoneLauks pastāv; nav pārsūtīts PDF eksportētājam versijā 26.3.1: nav ietekmes

5. solis: Eksportēt uz atmiņā esošu straumi

Document.Save() pieņem bināro plūsmu tieši: nav vajadzīgs pagaidu fails:

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")

6. solis: Daudzfailu grupveida eksportēšana

Apstrādāt visus .one failus direktorijā:

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}")

Biežas problēmas un risinājumi

1. ImportError: Nav moduļa ar nosaukumu ‘reportlab’

Iemesls: [pdf] paplašinājums netika instalēts.

Labojums:

pip install "aspose-note[pdf]"

2. UnsupportedSaveFormatException

Iemesls: Tika izmantots formāts, kas nav SaveFormat.Pdf. Ir īstenots tikai SaveFormat.Pdf.

Labojums: Vienmēr izmantojiet SaveFormat.Pdf eksportam. Citi formāti ir deklarēti API saderībai, bet izsauc UnsupportedSaveFormatException.

3. IncorrectPasswordException

Iemesls: Fails .one ir šifrēts. Šifrēti dokumenti netiek atbalstīti.

Fix: Izmantojiet nešifrētu .one failu. Komerciālais Aspose.Note produkts atbalsta šifrēšanu.

4. FileNotFoundError

Iemesls: Ievades .one faila ceļš ir nepareizs.

Labojums: Izmantojiet pathlib.Path.exists(), lai pārbaudītu pirms ielādes:

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. Izvades PDF ir tukšs vai tukšs

Iemesls: .one fails satur lapas, bet nav teksta satura (tikai attēlus vai tabulas bez teksta). PDF renderētājs izveido lapas, pamatojoties uz to, ko ReportLab var attēlot no DOM.

Labojums: Pārbaudiet lapas saturu pirms eksportēšanas:

from aspose.note import Document, RichText

doc = Document("MyNotes.one")
text_count = len(doc.GetChildNodes(RichText))
print(f"RichText nodes found: {text_count}")

Biežāk uzdotie jautājumi

Kuri saglabāšanas formāti tiek atbalstīti?

Pašlaik ir īstenots tikai SaveFormat.Pdf. SaveFormat enumam ir tieši viens loceklis: SaveFormat.Pdf.

Vai varu eksportēt uz straumi, nevis uz failu?

Jā. Document.Save() pieņem jebkuru rakstāmu bināro straumi kā savu pirmo argumentu:

import io
from aspose.note import Document, PdfSaveOptions, SaveFormat

doc = Document("MyNotes.one")
buf = io.BytesIO()
doc.Save(buf, PdfSaveOptions())
pdf_bytes = buf.getvalue()

Vai eksports saglabā lapu kārtību?

Jā. Lapas tiek eksportētas tajā pašā secībā, kādā tās parādās DOM (secība, kas tiek atgriezta, iterējot Document).

Vai PDF eksportēšana ir pieejama Linux?

Jā. ReportLab un Aspose.Note FOSS for Python ir abi OS neatkarīgi.

Vai varu eksportēt lapu apakškopu?

PdfSaveOptions.PageIndex un PageCount lauki pastāv, bet tie netiek pārsūtīti PDF eksportētājam versijā v26.3.1 un tiem nav ietekmes: viss dokuments vienmēr tiek eksportēts.


Saistītie resursi:

 Latviešu