Πώς να εξάγετε ένα αρχείο OneNote σε PDF στο Python

Πώς να εξάγετε ένα αρχείο OneNote σε PDF στο Python

Aspose.Note FOSS for Python enables programmatic PDF export of Microsoft OneNote .one Τα αρχεία τμήματος χωρίς να απαιτούν το Microsoft Office ή οποιοδήποτε μετατροπέα εγγράφου σε επίπεδο λειτουργικού συστήματος. Document.Save() Η μέθοδος που υποστηρίζεται από την επιλογή ReportLab PDF Ρεντερ.

Οφέλη

  1. Υπηρεσιακά φιλικά: τρέχει σε οποιοδήποτε OS, συμπεριλαμβανομένων των ανοιχτών διακομιστών Linux και των δοχείων CI/CD
  2. Δυνατότητα ροής:• Αποθηκεύστε απευθείας σε ένα io.BytesIO Μπάφερ, δεν απαιτείται προσωρινό αρχείο
  3. Δωρεάν και ανοικτή πηγή:• Αδειοδότηση MIT

Προϋποθέσεις

Η εξαγωγή PDF απαιτεί την ελεγχόμενη εξάρτηση ReportLab. εγκαταστήστε το μέσω της [pdf] ΕΠΙΛΟΓΙΚΗ :

pip install aspose-note

Αν έχετε ήδη aspose-note Εισιτήρια χωρίς την επιπλέον:

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

Βεβαιωθείτε ότι το ReportLab είναι διαθέσιμο:

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

Βήμα προς βήμα οδηγός

Βήμα 1: Εγκατάσταση του aspose-note με υποστήριξη PDF

pip install aspose-note

Επιβεβαιώστε την εγκατάσταση (Το PDF είναι μια μορφή εξαγωγής μόνο - η βιβλιοθήκη παράγει το PDF από τα αρχεία προέλευσης του OneNote, η αντίστροφη κατεύθυνση δεν υποστηρίζεται):

from aspose.note import Document, SaveFormat
print("aspose-note is ready.")

Βήμα 2: Κατεβάστε το αρχείο OneNote

from aspose.note import Document

doc = Document("MyNotes.one")

Βήμα 3: Εξάγετε ολόκληρο το έγγραφο στο PDF

Η απλούστερη εξαγωγή, καλύπτοντας όλες τις σελίδες με προεπιλεγμένες ρυθμίσεις:

from aspose.note import Document, SaveFormat

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

Βήμα 4: Χρησιμοποιήστε τις επιλογές PDFSave

PdfSaveOptions Επιτρέψτε να ρυθμίσετε τις ρυθμίδες εξαγωγής PDF:

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

doc = Document("MyNotes.one")

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

Διαθέσιμες επιλογές PDFSave

ΕπιλογήΤύποςΥπολογισμοίΠεριγραφή
PageIndexint0Δείκτης με βάση το μηδέν της πρώτης σελίδας για εξαγωγή (0 = πρώτη σελίδα)
PageCount`intNone`None

Βήμα 5: Εξαγωγή σε μια ροή μνήμης

Document.Save() Αποδέχεται μια διπλή ροή απευθείας: δεν απαιτείται προσωρινό αρχείο:

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: Εξαγωγή Multiple Files

Πολλαπλές διαδικασίες .one Τα αρχεία σε ένα δελτίο:

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

Κοινά προβλήματα και τακτοποιήσεις

1. ImportError: No module named ‘reportlab’

Αιτία:• Το The [pdf] Δεν εγκαθίστανται επιπλέον.

ΦΙΛΕΞΗ:

pip install aspose-note

2. UnsupportedSaveFormatException

Αιτία:• Μια μορφή διαφορετική από την SaveFormat.Pdf Χρησιμοποιήθηκε μόνο. SaveFormat.Pdf Εφαρμόζεται .

ΦΙΛΕΞΗ:• Πάντα χρησιμοποιείτε SaveFormat.Pdf Για εξαγωγή. άλλες μορφές δηλώνονται για συμβατότητα API αλλά αυξάνουν UnsupportedSaveFormatException.

3. IncorrectPasswordException

Αιτία:• Το The .one Τα αρχεία κρυπτογραφούνται. τα κρύα έγγραφα δεν υποστηρίζονται.

ΦΙΛΕΞΗ:• Χρησιμοποιήστε ένα μη κρυπτογραφημένο .one Το εμπορικό προϊόν Aspose.Note υποστηρίζει κρυπτογράφηση.

4. FileNotFoundError

Αιτία:• Η εισαγωγή .one Ο δρόμος του αρχείου είναι λάθος.

ΦΙΛΕΞΗ:• Χρησιμοποιήστε pathlib.Path.exists() Για να επιβεβαιώσετε πριν από την φόρτιση:

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. Output PDF is blank or empty

Αιτία:• Το The .one Το αρχείο περιέχει σελίδες αλλά δεν έχει κείμενο (μόνο εικόνες ή πίνακες χωρίς κείμενα).Ο εκδοτής PDF παράγει σελίδια με βάση αυτό που μπορεί να εκδώσει το ReportLab από το DOM.

ΦΙΛΕΞΗ:Ελέγξτε το περιεχόμενο της σελίδας πριν την εξαγωγή:

from aspose.note import Document, RichText

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

Συχνές ερωτήσεις

Ποια μορφή αποθήκευσης υποστηρίζεται;?

Μόνο SaveFormat.Pdf Προς το παρόν, εφαρμόζεται η SaveFormat Το Enum έχει ακριβώς ένα μέλος: SaveFormat.Pdf.

Μπορώ να εξάγω σε ένα ρεύμα αντί για ένα αρχείο;?

Ναι . Document.Save() Αποδέχεται οποιαδήποτε γραπτή δυαδική ροή ως το πρώτο του επιχείρημα:

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

Η εξαγωγή διατηρεί την παραγγελία σελίδας;?

Ναι. Οι σελίδες εξάγονται με την ίδια σειρά που εμφανίζονται στο DOM (η παραγγελία επιστρέφει με ιθεροποίηση του Document).

Είναι διαθέσιμο το PDF στο Linux;?

Ναι. ReportLab και Aspose.Note FOSS για Python είναι τόσο ανεξάρτητα από το OS.

Μπορώ να εξάγω ένα υποσυνταγμα σελίδων;?

Ναι, χρησιμοποιήστε το PdfSaveOptions Με PageIndex (από την αρχική σελίδα μηδενικής βάσης) και PageCount (Ο αριθμός των σελίδων που πρέπει να εξάγουν); None = όλα τα υπόλοιπα) για να εξάγει ένα υποσυνέδριο σελίδων. και τα δύο πεδία μεταφέρονται στον εξαγωγέα PDF στο v26.3.2.


Σχετικά με τους πόρους:

 Ελληνικά