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
- Server-friendly: darbojas jebkurā OS, ieskaitot galveņu Linux serverus un CI/CD konteinerus
- Stream-capable: saglabā tieši uz
io.BytesIObufera, nav vajadzīgs pagaidu fails - 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
| Opcija | Tips | Noklusējums | Apraksts |
|---|---|---|---|
PageIndex | int | 0 | Lauks pastāv; nav pārsūtīts PDF eksportētājam versijā 26.3.1: nav ietekmes |
PageCount | int | None | None | Lauks 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: