כיצד לייצא קובץ OneNote ל-PDF בפייתון

כיצד לייצא קובץ OneNote ל-PDF בפייתון

Aspose.Note FOSS for Python מאפשר ייצוא PDF תכנותי של קבצי מקטע של Microsoft OneNote .one ללא צורך ב‑Microsoft Office או בממיר מסמכים ברמת מערכת ההפעלה. הייצוא מתבצע באמצעות השיטה Document.Save() הנתמכת על ידי מנוע ה‑PDF האופציונלי ReportLab.

יתרונות

  1. Server-friendly: פועל על כל מערכת הפעלה, כולל שרתי לינוקס ללא ממשק גרפי ומכולות CI/CD
  2. Stream-capable: שמור ישירות למאגר io.BytesIO, אין צורך בקובץ זמני
  3. 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 זמינות

OptionTypeDefaultDescription
PageIndexint0השדה קיים; לא מועבר למייצא PDF בגרסה 26.3.1: אין השפעה
PageCountint | NoneNoneהשדה קיים; לא מועבר למייצא 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 ואין להם השפעה: המסמך כולו תמיד מיוצא.


משאבים קשורים:

 עברית