כיצד לייצא קובץ OneNote ל-PDF בפייתון
Aspose.Note FOSS for Python מאפשר ייצוא PDF תכנותי של קבצי מקטע של Microsoft OneNote .one ללא צורך ב‑Microsoft Office או בממיר מסמכים ברמת מערכת ההפעלה. הייצוא מתבצע באמצעות השיטה Document.Save() הנתמכת על ידי מנוע ה‑PDF האופציונלי ReportLab.
יתרונות
- Server-friendly: פועל על כל מערכת הפעלה, כולל שרתי לינוקס ללא ממשק גרפי ומכולות CI/CD
- Stream-capable: שמור ישירות למאגר
io.BytesIO, אין צורך בקובץ זמני - Free and open-source: רישיון MIT
דרישות קדם
ייצוא PDF דורש את התלות האופציונלית ReportLab. התקן זאת באמצעות התוספת [pdf]:
pip install "aspose-note[pdf]"אם כבר יש לך 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]"אשר את ההתקנה:
from aspose.note import Document, SaveFormat
print("Ready for PDF export.")שלב 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: השתמש ב‑PdfSaveOptions
PdfSaveOptions מאפשר לך להגדיר הגדרות ייצוא PDF:
from aspose.note import Document
from aspose.note.saving import PdfSaveOptions
doc = Document("MyNotes.one")
opts = PdfSaveOptions()
doc.Save("output.pdf", opts)אפשרויות PdfSaveOptions זמינות
| Option | Type | Default | Description |
|---|---|---|---|
PageIndex | int | 0 | השדה קיים; לא מועבר למייצא PDF בגרסה 26.3.1: אין השפעה |
PageCount | int | None | None | השדה קיים; לא מועבר למייצא PDF בגרסה 26.3.1: אין השפעה |
שלב 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: ייצוא קבוצתי של קבצים מרובים
עבד את כל קבצי .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: אין מודול בשם ‘reportlab’
סיבה: הרחבה [pdf] לא הותקנה.
תיקון:
pip install "aspose-note[pdf]"2. UnsupportedSaveFormatException
סיבה: שימש פורמט שאינו SaveFormat.Pdf. רק SaveFormat.Pdf מיושם.
תיקון: תמיד השתמשו בSaveFormat.Pdf לייצוא. פורמטים אחרים מצוינים לתאימות API אך גורמים לUnsupportedSaveFormatException.
3. IncorrectPasswordException
סיבה: הקובץ .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. קובץ PDF הפלט ריק או ריק
סיבה: הקובץ .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 מיושם כרגע. ה‑enum SaveFormat כולל בדיוק חבר אחד: SaveFormat.Pdf.
האם אני יכול לייצא לזרם במקום קובץ?
כן. Document.Save() מקבל כל זרם בינארי שניתן לכתיבה כארגומנט הראשון שלו:
import io
from aspose.note import Document, PdfSaveOptions, SaveFormat
doc = Document("MyNotes.one")
buf = io.BytesIO()
doc.Save(buf, PdfSaveOptions())
pdf_bytes = buf.getvalue()האם הייצוא משמר את סדר העמודים?
כן. הדפים מיוצאים באותו סדר שבו הם מופיעים ב‑DOM (הסדר שמוחזר על‑ידי איטרציה של Document).
האם ייצוא PDF זמין בלינוקס?
כן. ReportLab ו‑Aspose.Note FOSS for Python הם שניהם בלתי תלויים במערכת הפעלה.
האם אני יכול לייצא תת‑קבוצה של דפים?
PdfSaveOptions.PageIndex וPageCount קיימים אך אינם מועברים למייצא ה‑PDF ב‑v26.3.1 ואין להם השפעה: המסמך כולו תמיד מיוצא.
משאבים קשורים: