Πώς να εξάγετε ένα αρχείο OneNote σε PDF στο Python
Aspose.Note FOSS for Python enables programmatic PDF export of Microsoft OneNote .one Τα αρχεία τμήματος χωρίς να απαιτούν το Microsoft Office ή οποιοδήποτε μετατροπέα εγγράφου σε επίπεδο λειτουργικού συστήματος. Document.Save() Η μέθοδος που υποστηρίζεται από την επιλογή ReportLab PDF Ρεντερ.
Οφέλη
- Υπηρεσιακά φιλικά: τρέχει σε οποιοδήποτε OS, συμπεριλαμβανομένων των ανοιχτών διακομιστών Linux και των δοχείων CI/CD
- Δυνατότητα ροής:• Αποθηκεύστε απευθείας σε ένα
io.BytesIOΜπάφερ, δεν απαιτείται προσωρινό αρχείο - Δωρεάν και ανοικτή πηγή:• Αδειοδότηση 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
| Επιλογή | Τύπος | Υπολογισμοί | Περιγραφή |
|---|---|---|---|
PageIndex | int | 0 | Δείκτης με βάση το μηδέν της πρώτης σελίδας για εξαγωγή (0 = πρώτη σελίδα) |
PageCount | `int | None` | 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-note2. 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.
Σχετικά με τους πόρους: