استيراد عروض تقديمية من PDF أو HTML في Python عبر Java
مقدمة
يمكن لـ Aspose.Slides للـ Python عبر Java تحويل صفحات PDF أو محتوى HTML إلى شرائح PowerPoint بدون الحاجة إلى Microsoft PowerPoint. توفر الفئة SlideCollection الطريقة addFromPdf وaddFromHtml لإضافة المحتوى المستورد إلى عرض تقديمي.
للحصول على مزيد من التحكم في وضعية HTML، يمكن لـ SlideCollection.insertFromHtml إدراج الشرائح المُولدة عند فهرس في المجموعة أو البدء بملء المساحة المتاحة على شريحة موجودة. يتم تقسيم HTML الطويل تلقائيًا عبر شرائح إضافية، ويمكن توفير المصدر كسلسلة نصية أو تدفق، كما يمكن تحميل الأصول الخارجية عبر ExternalResourceResolver باستخدام URI أساسي. تُعرّف المصفوفة المُرجعة من Slide الشرائح المتأثرة والجديدة.
استيراد من PDF
لتحويل مستند PDF إلى عرض تقديمي PowerPoint، استورد محتواه إلى مجموعة الشرائح واحفظ النتيجة كملف PPTX.

- أنشئ كائنًا جديدًا من الفئة Presentation.
- استدعِ addFromPdf مع مسار ملف PDF.
- استدعِ save مع SaveFormat.Pptx لكتابة العرض التقديمي إلى ملف PPTX.
المثال التالي بلغة Python يستورد مستند PDF ويحفظ الشرائح المُولدة كعرض PowerPoint:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat
presentation = Presentation()
try:
presentation.getSlides().addFromPdf("document.pdf")
presentation.save("presentation.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
تظل الشريحة الفارغة الافتراضية موجودة في العرض لأن عملية الاستيراد تُضيف شرائح. لإبقاء الصفحات المستوردة فقط، قم بمسح مجموعة الشرائح باستخدام SlideCollection.clear قبل الاستيراد.
طريقة addFromPdf تُعيد الشرائح التي تُضيفها، وهذا مفيد عندما تحتاج إلى معالجة الشرائح المستوردة فقط.
Tip
جرّب تطبيق الويب المجاني PDF to PowerPoint لتشاهد سير عمل التحويل عمليًا.استيراد من HTML
يمكن لـ Aspose.Slides أيضًا إنشاء شرائح من مستند HTML. يمكن توفير المصدر كنص HTML أو تدفق. الخطوات التالية تستخدم تدفق ملف:
- أنشئ كائنًا جديدًا من الفئة Presentation.
- افتح ملف HTML للقراءة ومرّر التدفق إلى addFromHtml.
- استدعِ save مع SaveFormat.Pptx لكتابة النتيجة إلى ملف PPTX.
المثال التالي بلغة Python يستورد مستند HTML ويحفظ الشرائح المُولدة كعرض PowerPoint:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat
from java.io import FileInputStream
presentation = Presentation()
try:
html_stream = FileInputStream("page.html")
try:
presentation.getSlides().addFromHtml(html_stream)
finally:
html_stream.close()
presentation.save("presentation.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
إدراج محتوى HTML
استخدم SlideCollection.insertFromHtml عندما يجب وضع الشرائح التي تم توليدها من HTML في موضع محدد بدلاً من إضافتها في النهاية. الفهرس يبدأ من الصفر ويحدد الموضع الذي يبدأ فيه الاستيراد.
المعامل useSlideWithIndexAsStart يتحكم في كيفية استخدام المستورد لهذا الموضع:
- عندما يكون
False، ينشئ المستورد شرائح جديدة عند الفهرس المحدد ويُزاح الشرائح التي تليه. - عندما يكون
True، يبدأ المستورد بوضع المحتوى في المساحة المتاحة على الشريحة الموجودة عند ذلك الفهرس. إذا لم يتسع HTML، يقوم Aspose.Slides بتقسيمه تلقائيًا ويُدرج شرائح إضافية مباشرة بعد الشريحة الابتدائية.
طريقة SlideCollection.insertFromHtml تُعيد مصفوفة من كائنات Slide. عندما يبدأ الإدراج على شرائح جديدة، كل عنصر مُرجع يُنشأ حديثًا. عندما تُستخدم شريحة موجودة كنقطة بدء، تشمل المصفوفة تلك الشريحة المتأثرة متبوعة بأي شرائح تجاوز جديدة. يمكنك فحص هذه المصفوفة بدلاً من حساب النطاق المتأثر من عدد شرائح العرض.
إدراج HTML كشرائح جديدة
المثال التالي يُزوّد HTML كسلسلة نصية ويُدرج الشرائح المُولدة عند فهرس المجموعة 1. تمرير False يترك الشرائح الحالية دون تغيير باستثناء إزاحتها لإتاحة المساحة.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat
presentation = Presentation()
try:
layout_slide = presentation.getLayoutSlides().get_Item(0)
presentation.getSlides().addEmptySlide(layout_slide)
presentation.getSlides().addEmptySlide(layout_slide)
insert_index = 1
html = "<html><body><h1>Quarterly update</h1><p>This content is inserted before the slide that was at index 1.</p></body></html>"
inserted_slides = presentation.getSlides().insertFromHtml(insert_index, html, False)
for slide in inserted_slides:
print("Inserted slide index:", presentation.getSlides().indexOf(slide))
presentation.save("presentation-with-inserted-html.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
البدء على شريحة موجودة
المثال التالي يُزوّد HTML عبر تدفق. يحتفظ بشكل عنوان على الشريحة النموذجية الموجودة، يبدأ الاستيراد أسفل المنطقة المشغولة، ويسمح للجسم الطويل بالمتابعة إلى شرائح جديدة.
يتضمن HTML أيضًا عنوان صورة نسبي. يحصل ExternalResourceResolver على المورد، بينما يُخبر الـ URI الأساسي المستورد كيفية حل images/logo.png. في هذا المثال، يُتوقع وجود الملف في html-assets/images/logo.png.
from pathlib import Path
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import ExternalResourceResolver, Presentation, SaveFormat, ShapeType
from java.io import ByteArrayInputStream
presentation = Presentation()
try:
template_slide = presentation.getSlides().get_Item(0)
header = template_slide.getShapes().addAutoShape(ShapeType.Rectangle, 20, 20, 680, 60)
header.getTextFrame().setText("Product roadmap")
html_parts = ["<html><body><img src='images/logo.png' width='120' height='60'><h2>Roadmap details</h2>"]
for item_index in range(1, 61):
html_parts.append(f"<p style='font-size:24pt'>Roadmap item {item_index}: detailed implementation notes.</p>")
html_parts.append("</body></html>")
html = "".join(html_parts)
html_data = html.encode("utf-8")
resolver = ExternalResourceResolver()
base_directory = Path("html-assets").resolve()
base_uri = base_directory.as_uri() + "/"
html_stream = ByteArrayInputStream(html_data)
try:
affected_slides = presentation.getSlides().insertFromHtml(0, html_stream, resolver, base_uri, True)
for slide in affected_slides:
print("Affected slide index:", presentation.getSlides().indexOf(slide))
finally:
html_stream.close()
presentation.save("presentation-with-html-overflow.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Warning
يمكن لمحلل الموارد الخارجية غير المقيد قراءة موارد محلية أو شبكية مشار إليها من قبل HTML. بالنسبة للمدخلات غير الموثوقة، قُم بالتحقق وتنظيف عناوين URL للموارد وفقًا لقائمة السماح التي تُحدِّد المخططات، الأدلة، والمضيفين المسموح بها قبل استيراد HTML.الأسئلة الشائعة
هل يمكن لـ Aspose.Slides اكتشاف الجداول عند استيراد PDF؟
نعم. أنشئ كائنًا من الفئة PdfImportOptions، استدعِ setDetectTables مع True، ومرّر الخيارات إلى addFromPdf. تعتمد جودة التعرف على الجداول على بنية وتعقيد PDF المصدر.