تحويل عروض PowerPoint إلى HTML باستخدام PHP

نظرة عامة

تشرح هذه المقالة كيفية تحويل عرض PowerPoint إلى تنسيق HTML باستخدام PHP. تغطي المواضيع التالية.

  • تحويل PowerPoint إلى HTML
  • تحويل PPT إلى HTML
  • تحويل PPTX إلى HTML
  • تحويل ODP إلى HTML
  • تحويل شريحة PowerPoint إلى HTML

PowerPoint إلى HTML في PHP

للحصول على مثال كود Java لتحويل PowerPoint إلى HTML، يرجى مراجعة القسم أدناه أي تحويل PowerPoint إلى HTML. يمكن للكود تحميل عدد من الصيغ مثل PPT و PPTX و ODP في كائن Presentation وحفظه بتنسيق HTML.

حول تحويل PowerPoint إلى HTML

باستخدام Aspose.Slides for PHP via Java، يمكن للتطبيقات والمطورين تحويل عرض PowerPoint إلى HTML: PPTX إلى HTML أو PPT إلى HTML.

Aspose.Slides يوفر العديد من الخيارات (معظمها من فئة HtmlOptions) التي تحدد عملية تحويل PowerPoint إلى HTML:

  • تحويل عرض PowerPoint كامل إلى HTML.
  • تحويل شريحة محددة في عرض PowerPoint إلى HTML.
  • تحويل وسائط العرض (صور، فيديوهات، إلخ) إلى HTML.
  • تحويل عرض PowerPoint إلى HTML متجاوب.
  • تحويل عرض PowerPoint إلى HTML مع تضمين أو استبعاد ملاحظات المتحدث.
  • تحويل عرض PowerPoint إلى HTML مع تضمين أو استبعاد التعليقات.
  • تحويل عرض PowerPoint إلى HTML مع الخطوط الأصلية أو المضمنة.
  • تحويل عرض PowerPoint إلى HTML باستخدام نمط CSS الجديد.

تحويل PowerPoint إلى HTML

باستخدام Aspose.Slides، يمكنك تحويل عرض PowerPoint كامل إلى HTML بهذه الطريقة:

  1. أنشئ مثيلًا من فئة Presentation.
  2. استخدم طريقة Save لحفظ الكائن كملف HTML.

هذا الكود يوضح لك كيفية تحويل PowerPoint إلى HTML :

// إنشاء كائن Presentation الذي يمثل ملف عرض تقديمي
  $pres = new Presentation("Convert_HTML.pptx");
  try {
    $htmlOpt = new HtmlOptions();
    $htmlOpt->getNotesCommentsLayouting()->setNotesPosition(NotesPositions::BottomFull);
    $htmlOpt->setHtmlFormatter(java("com.aspose.slides.HtmlFormatter")->createDocumentFormatter("", false));
    # حفظ العرض التقديمي إلى HTML
    $pres->save("ConvertWholePresentationToHTML_out.html", SaveFormat::Html, $htmlOpt);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

تحويل PowerPoint إلى HTML متجاوب

توفر Aspose.Slides فئة ResponsiveHtmlController التي تسمح لك بإنشاء ملفات HTML متجاوبة. هذا الكود يوضح لك كيفية تحويل عرض PowerPoint إلى HTML متجاوب :

// إنشاء كائن Presentation الذي يمثل ملف عرض تقديمي
  $pres = new Presentation("Convert_HTML.pptx");
  try {
    $controller = new ResponsiveHtmlController();
    $htmlOptions = new HtmlOptions();
    $htmlOptions->setHtmlFormatter(java("com.aspose.slides.HtmlFormatter")->createCustomFormatter($controller));
    # حفظ العرض التقديمي إلى HTML
    $pres->save("ConvertPresentationToResponsiveHTML_out.html", SaveFormat::Html, $htmlOptions);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

تحويل PowerPoint إلى HTML مع الملاحظات

هذا الكود يوضح لك كيفية تحويل PowerPoint إلى HTML مع الملاحظات :

  $pres = new Presentation("Presentation.pptx");
  try {
    $opt = new HtmlOptions();
    $options = $opt->getNotesCommentsLayouting();
    $options->setNotesPosition(NotesPositions::BottomFull);
    # حفظ صفحات الملاحظات
    $pres->save("Output.html", SaveFormat::Html, $opt);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

تحويل PowerPoint إلى HTML مع الخطوط الأصلية

توفر Aspose.Slides فئة EmbedAllFontsHtmlController التي تسمح لك بدمج جميع الخطوط في العرض أثناء تحويله إلى HTML.

لمنع دمج بعض الخطوط، يمكنك تمرير مصفوفة من أسماء الخطوط إلى المُنشئ الترميزي في فئة EmbedAllFontsHtmlController. الخطوط الشائعة مثل Calibri أو Arial، عند استخدامها في عرض، لا تحتاج إلى دمجها لأن معظم الأنظمة تحتوي على هذه الخطوط مسبقًا. عندما يتم دمج هذه الخطوط، يصبح مستند HTML الناتج كبيرًا بشكل غير ضروري.

فئة EmbedAllFontsHtmlController تدعم الوراثة وتوفر الطريقة WriteFont التي يُقصد أن يُعاد تعريفها.

  $pres = new Presentation("input.pptx");
  try {
    # استبعاد خطوط العرض الافتراضية
    $fontNameExcludeList = array("Calibri", "Arial" );
    $embedFontsController = new EmbedAllFontsHtmlController($fontNameExcludeList);
    $htmlOptionsEmbed = new HtmlOptions();
    $htmlOptionsEmbed->setHtmlFormatter(java("com.aspose.slides.HtmlFormatter")->createCustomFormatter($embedFontsController));
    $pres->save("input-PFDinDisplayPro-Regular-installed.html", SaveFormat::Html, $htmlOptionsEmbed);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

تحويل PowerPoint إلى HTML مع صور عالية الجودة

افتراضيًا، عند تحويل PowerPoint إلى HTML، تنتج Aspose.Slides ملفات HTML صغيرة مع صور بدقة 72 DPI ومساحات مقصوصة محذوفة. للحصول على ملفات HTML بصور ذات جودة أعلى، يجب تعيين خاصية PicturesCompression (من فئة HtmlOptions) إلى 96 (أي PicturesCompression.Dpi96) أو قيم أعلى values.

هذا الكود PHP يوضح لك كيفية تحويل عرض PowerPoint إلى HTML مع الحصول على صور عالية الجودة بدقة 150 DPI (أي PicturesCompression.Dpi150):

  $pres = new Presentation("InputDoc.pptx");
  try {
    $htmlOpts = new HtmlOptions();
    $htmlOpts->setPicturesCompression(PicturesCompression::Dpi150);
    $pres->save("OutputDoc-dpi150.html", SaveFormat::Html, $htmlOpts);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

هذا الكود يوضح لك كيفية إخراج HTML مع صور ذات جودة كاملة:

  $pres = new Presentation("InputDoc.pptx");
  try {
    $htmlOpts = new HtmlOptions();
    $htmlOpts->setDeletePicturesCroppedAreas(false);
    $pres->save("Outputdoc-noCrop.html", SaveFormat::Html, $htmlOpts);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

تحويل شريحة إلى HTML

لتحويل شريحة محددة في PowerPoint إلى HTML، يجب إنشاء مثيل من نفس فئة Presentation (المستعملة لتحويل العروض الكاملة إلى HTML) ثم استخدام طريقة Save لحفظ الملف كـ HTML. يمكن استخدام فئة HtmlOptions لتحديد خيارات تحويل إضافية:

use aspose\slides\Presentation;
use aspose\slides\HtmlOptions;
use aspose\slides\NotesPositions;
use aspose\slides\SaveFormat;


class CustomFormattingController
{
    function writeDocumentStart($generator, $presentation) { }

    function writeDocumentEnd($generator, $presentation) { }

    function writeSlideStart($generator, $slide)
	{
        $generator->addHtml(sprintf(self::SlideHeader, $generator->getSlideIndex() + 1));
    }

    function writeSlideEnd($generator, $slide)
	{
        $generator->addHtml(self::SlideFooter);
    }

    function writeShapeStart($generator, $shape) { }

    function writeShapeEnd($generator, $shape) { }

    const SlideHeader = "<div class=\"slide\" name=\"slide\" id=\"slide%d\">";
    const SlideFooter = "</div>";
}
  $pres = new Presentation("Individual-Slide.pptx");
  try {
    $htmlOptions = new HtmlOptions();
    $htmlOptions->getNotesCommentsLayouting()->setNotesPosition(NotesPositions::BottomFull);
	$formattingController= java_closure(new CustomFormattingController(), null, java("com.aspose.slides.IHtmlFormattingController"));
    $htmlOptions->setHtmlFormatter(java("com.aspose.slides.HtmlFormatter")->createCustomFormatter($formattingController));
    # حفظ الملف
    for($i = 0; $i < java_values($pres->getSlides()->size()) ; $i++) {
      $pres->save("Individual Slide" . ($i + 1) . "_out.html", array($i + 1 ), SaveFormat::Html, $htmlOptions);
    }
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

حفظ CSS والصور عند التصدير إلى HTML

باستخدام ملفات نمط CSS الجديدة، يمكنك بسهولة تغيير نمط ملف HTML الناتج عن عملية تحويل PowerPoint إلى HTML.

الكود PHP في هذا المثال يوضح لك كيفية استخدام الطرق القابلة لإعادة التعريف لإنشاء مستند HTML مخصص مع ارتباط إلى ملف CSS:

use aspose\slides\Presentation;
use aspose\slides\HtmlOptions;
use aspose\slides\NotesPositions;
use aspose\slides\SaveFormat;
use aspose\slides\EmbedAllFontsHtmlController;

class CustomHeaderAndFontsController extends EmbedAllFontsHtmlController {
    const m_basePath = 0;

    # قالب رأس مخصص
    const Header = "<!DOCTYPE html>\n" .
            "<html>\n" .
            "<head>\n" .
            "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n" .
            "<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\">\n" .
            "<link rel=\"stylesheet\" type=\"text/css\" href=\"%s\">\n" .
            "</head>";

    public $m_cssFileName;

    public function __construct($cssFileName)
    {
        parent::__construct();
		$this->m_cssFileName = $cssFileName;
	}

    public function writeDocumentStart($generator, $presentation)
    {
        $generator->addHtml(sprintf(self::Header, $m_cssFileName));
        $this->writeAllFonts($generator, $presentation);
    }

    public function writeAllFonts($generator, $presentation)
    {
        $generator->addHtml("<!-- Embedded fonts -->");
        parent::writeAllFonts($generator, $presentation);
    }
}

  $pres = new Presentation("pres.pptx");
  try {
    $options = new HtmlOptions();
    $options->setHtmlFormatter(java("com.aspose.slides.HtmlFormatter")->createCustomFormatter(new CustomHeaderAndFontsController("styles.css")));
    $pres->save("pres.html", SaveFormat::Html, $options);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

ربط جميع الخطوط عند تحويل العرض إلى HTML

إذا كنت لا تريد دمج الخطوط (لتجنب زيادة حجم HTML الناتج)، يمكنك ربط جميع الخطوط من خلال تنفيذ نسخة LinkAllFontsHtmlController الخاصة بك.

هذا الكود PHP يوضح لك كيفية تحويل PowerPoint إلى HTML مع ربط جميع الخطوط واستبعاد “Calibri” و “Arial” (لأنهما موجودان بالفعل في النظام):

use aspose\slides\Presentation;
use aspose\slides\HtmlOptions;
use aspose\slides\NotesPositions;
use aspose\slides\SaveFormat;
use aspose\slides\EmbedAllFontsHtmlController;

class LinkAllFontsHtmlController extends EmbedAllFontsHtmlController
{
    private $m_basePath;

    public function __construct($fontNameExcludeList, $basePath)
    {
        parent::__construct($fontNameExcludeList);
        $this->m_basePath = $basePath;
    }

    function writeFont
    (
            $generator,
            $originalFont,
            $substitutedFont,
            $fontStyle,
            $fontWeight,
            $fontData)
    {
        try {
            $fontName = java_is_null($substitutedFont) ? $originalFont->getFontName() : $substitutedFont->getFontName();
            $path = $fontName . ".woff"; // قد يلزم تنقية المسار
            $fstr = new Java("java.io.FileOutputStream", $this->m_basePath . $path);
            $Array = new java_class("java.lang.reflect.Array");
            try {
                $fstr->write($fontData, 0, $Array->getLength($fontData));
            } finally {
                $fstr->close();
            }

            $generator->addHtml("<style>");
            $generator->addHtml("@font-face { ");
            $generator->addHtml("font-family: '" . $fontName . "'; ");
            $generator->addHtml("src: url('" . $path . "')");

            $generator->addHtml(" }");
            $generator->addHtml("</style>");
        } catch (JavaException $ex) {
        }
    }
}
    $pres = new Presentation("pres.pptx");
  try {
    # استبعاد خطوط العرض الافتراضية
    $fontNameExcludeList = array("Calibri", "Arial");
    $linkcont = new LinkAllFontsHtmlController($fontNameExcludeList, "C:/Windows/Fonts/");
    $htmlOptionsEmbed = new HtmlOptions();
    $htmlOptionsEmbed->setHtmlFormatter(java("com.aspose.slides.HtmlFormatter")->createCustomFormatter($linkcont));
    $pres->save("pres.html", SaveFormat::Html, $htmlOptionsEmbed);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

تحويل PowerPoint إلى HTML متجاوب

هذا الكود PHP يوضح لك كيفية تحويل عرض PowerPoint إلى HTML متجاوب:

  $pres = new Presentation("SomePresentation.pptx");
  try {
    $saveOptions = new HtmlOptions();
    $saveOptions->setSvgResponsiveLayout(true);
    $pres->save("SomePresentation-out.html", SaveFormat::Html, $saveOptions);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

تصدير ملفات الوسائط إلى HTML

باستخدام Aspose.Slides for PHP via Java، يمكنك تصدير ملفات الوسائط بهذه الطريقة:

  1. أنشئ مثيلًا من فئة Presentation.
  2. احصل على مرجع إلى الشريحة.
  3. أضف فيديوًا إلى الشريحة.
  4. اكتب العرض كملف HTML.

هذا الكود PHP يوضح لك كيفية إضافة فيديو إلى العرض ثم حفظه كـ HTML:

// تحميل عرض تقديمي
  $pres = new Presentation();
  try {
    $path = "./out/";
    $fileName = "ExportMediaFiles_out.html";
    $baseUri = "http://www.example.com/";
    $file = new Java("java.io.File", "my_video.avi");
    $Array = new JavaClass("java.lang.reflect.Array");
    $Byte = new JavaClass("java.lang.Byte");
    $videoData = $Array->newInstance($Byte, $Array->getLength($file));
    try {
        $dis = new Java("java.io.DataInputStream", new Java("java.io.FileInputStream", $file));
        $dis->readFully($videoData);
    } finally {
        if (!java_is_null($dis)) $dis->close();
    }
    $video = $pres->getVideos()->addVideo($videoData);
    $pres->getSlides()->get_Item(0)->getShapes()->addVideoFrame(10, 10, 100, 100, $video);
    $controller = new VideoPlayerHtmlController($path, $fileName, $baseUri);
    # تعيين خيارات HTML
    $htmlOptions = new HtmlOptions($controller);
    $svgOptions = new SVGOptions($controller);
    $htmlOptions->setHtmlFormatter(java("com.aspose.slides.HtmlFormatter")->createCustomFormatter($controller));
    $htmlOptions->setSlideImageFormat(SlideImageFormat::svg($svgOptions));
    # حفظ الملف
    $pres->save($fileName, SaveFormat::Html, $htmlOptions);
  } catch (JavaException $e) {
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

الأسئلة المتكررة

ما هو أداء Aspose.Slides عند تحويل عروض متعددة إلى HTML؟

يعتمد الأداء على حجم وتعقيد العروض. Aspose.Slides فعال للغاية وقابل للتوسع للعمليات الدفعية. للحصول على أفضل أداء عند تحويل عدد كبير من العروض، يُنصح باستخدام الخيوط المتعددة أو المعالجة المتوازية كلما كان ذلك ممكنًا.

هل يدعم Aspose.Slides تصدير الروابط التشعبية إلى HTML؟

نعم، يدعم Aspose.Slides تمامًا تصدير الروابط التشعبية المدمجة إلى HTML. عند تحويل العروض إلى تنسيق HTML، تُحافظ الروابط التشعبية تلقائيًا وتظل قابلة للنقر.

هل هناك أي حد لعدد الشرائح عند تحويل العروض إلى HTML؟

لا يوجد حد لعدد الشرائح عند استخدام Aspose.Slides. يمكنك تحويل عروض بأي حجم. ومع ذلك، بالنسبة للعروض التي تحتوي على عدد كبير جدًا من الشرائح، قد يعتمد الأداء على الموارد المتاحة في الخادم أو النظام الخاص بك.