كيفية تصدير ملف OneNote إلى PDF في Python
Aspose.Note FOSS for Python enables programmatic PDF export of Microsoft OneNote .one ملفات القسم دون الحاجة إلى Microsoft Office أو أي محول وثيقة على مستوى نظام التشغيل. Document.Save() طريقة مدعومة من قبل الخيارية ReportLab PDF رينجر.
الفوائد
- خدمة صديقة: يعمل على أي نظام التشغيل ، بما في ذلك خوادم Linux بدون رأس ومحتويات CI / CD
- قوة القوة:* يُحفظ مباشرة إلى
io.BytesIOبوفير، لا ملف مؤقت مطلوب - مجانا ومفتوحا المصدر:- مرخصة MIT
المعايير
PDF export يتطلب الاشتراك الاختياري ReportLab. [pdf] إضافية :
pip install aspose-noteإذا كان لديك بالفعل aspose-note يتم تثبيتها دون إضافية:
pip install --upgrade "aspose-note[pdf]"تأكد من أن تقريرLab متاح:
python -c "import reportlab; print(reportlab.Version)"خطوة بخطوة دليل
الخطوة 1: تثبيت ملاحظة التخزين مع دعم 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: استخدام 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
| الخيار | نوع | الافتراضية | وصف |
|---|---|---|---|
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: تصدير الملفات المتعددة
عملية متعددة .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’
سبب: من [pdf] لم يتم تثبيت المزيد.
تصحيح:
pip install aspose-note2. 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. Output PDF is blank or empty
سبب: من .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 يمتلك إينوم عضوًا واحدًّا: 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 for Python مستقلة عن نظام التشغيل.
هل يمكنني تصدير مجموعة فرعية من الصفحات؟?
نعم - استخدام PdfSaveOptions مع PageIndex (صفحة بدء صفر) و PageCount (عدد الصفحات التي سيتم تصديرها); None = كل ما تبقى) لتصدير مجموعة فرعية من الصفحات.يتم إرسال كلا الحقلين إلى مستورد PDF في v26.3.2.
الموارد ذات الصلة :