تحويل عروض PowerPoint إلى HTML في C++

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

باستخدام Aspose.Slides for C++، يمكن للتطبيقات والمطورين تحويل عرض 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.
    • تحميل .ppt في فئة Presentation لـ Convert PPT to HTML in C++
    • تحميل .pptx في فئة Presentation لـ Convert PPTX to HTML in C++
    • تحميل .odp في فئة Presentation لـ Convert ODP to HTML in C++
  2. استخدم طريقة Save لحفظ الكائن كملف HTML.

هذا الكود يوضح كيفية تحويل PowerPoint إلى HTML باستخدام C++:

// إنشاء كائن Presentation يمثل ملف عرض تقديمي
auto presentation = System::MakeObject<Presentation>(u"Convert_HTML.pptx");
    
auto htmlOpt = System::MakeObject<HtmlOptions>();
htmlOpt->set_HtmlFormatter(HtmlFormatter::CreateDocumentFormatter(u"", false));

// Saving the presentation to HTML
presentation->Save(u"ConvertWholePresentationToHTML_out.html", SaveFormat::Html, htmlOpt);

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

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

// إنشاء كائن Presentation يمثل ملف عرض تقديمي
auto presentation = System::MakeObject<Presentation>(u"Convert_HTML.pptx");

auto controller = System::MakeObject<ResponsiveHtmlController>();
auto htmlOptions = System::MakeObject<HtmlOptions>();
htmlOptions->set_HtmlFormatter(HtmlFormatter::CreateCustomFormatter(controller));

// حفظ العرض التقديمي إلى HTML
presentation->Save(u"ConvertPresentationToResponsiveHTML_out.html", SaveFormat::Html, htmlOptions);

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

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

auto pres = System::MakeObject<Presentation>(u"Presentation.pptx");

auto opt = System::MakeObject<HtmlOptions>();

auto options = opt->get_NotesCommentsLayouting();
options->set_NotesPosition(NotesPositions::BottomFull);

// Saving notes pages
pres->Save(u"Output.html", SaveFormat::Html, opt);

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

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

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

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

auto pres = System::MakeObject<Presentation>(u"input.pptx");

// exclude default presentation fonts
auto fontNameExcludeList = System::MakeArray<System::String>({ u"Calibri", u"Arial" });

auto embedFontsController = System::MakeObject<EmbedAllFontsHtmlController>(fontNameExcludeList);

auto htmlOptionsEmbed = System::MakeObject<HtmlOptions>();
htmlOptionsEmbed->set_HtmlFormatter(HtmlFormatter::CreateCustomFormatter(embedFontsController));

pres->Save(u"input-PFDinDisplayPro-Regular-installed.html", SaveFormat::Html, htmlOptionsEmbed);

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

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

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

auto pres = System::MakeObject<Presentation>(u"InputDoc.pptx");

auto htmlOpts = System::MakeObject<HtmlOptions>();
htmlOpts->set_PicturesCompression(PicturesCompression::Dpi150);

pres->Save(u"OutputDoc-dpi150.html", SaveFormat::Html, htmlOpts);

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

auto pres = System::MakeObject<Presentation>(u"InputDoc.pptx");

auto htmlOpts = System::MakeObject<HtmlOptions>();
htmlOpts->set_DeletePicturesCroppedAreas(false);

pres->Save(u"Outputdoc-noCrop.html", SaveFormat::Html, htmlOpts);

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

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

هذا الكود C++ يوضح كيفية تحويل شريحة في عرض PowerPoint إلى HTML:

class CustomFormattingController : public IHtmlFormattingController
{
public:
    void WriteDocumentStart(SharedPtr<IHtmlGenerator> generator, SharedPtr<IPresentation> presentation) override{}
    void WriteDocumentEnd(SharedPtr<IHtmlGenerator> generator, SharedPtr<IPresentation> presentation) override{}
    void WriteSlideStart(SharedPtr<IHtmlGenerator> generator, SharedPtr<ISlide> slide) override
    {
        generator->AddHtml(String::Format(SlideHeader, generator->get_SlideIndex() + 1));
    }
    void WriteSlideEnd(SharedPtr<IHtmlGenerator> generator, SharedPtr<ISlide> slide) override
    {
        generator->AddHtml(SlideFooter);
    }
    void WriteShapeStart(SharedPtr<IHtmlGenerator> generator, SharedPtr<IShape> shape) override{}
    void WriteShapeEnd(SharedPtr<IHtmlGenerator> generator, SharedPtr<IShape> shape) override{}

private:
    static const String SlideHeader;
    static const String SlideFooter;
};

const String CustomFormattingController::SlideHeader = u"<div class=\"slide\" name=\"slide\" id=\"slide{0}\">";
const String CustomFormattingController::SlideFooter = u"</div>";
void Run()
{
    String dataDir = GetDataPath();
    
    auto presentation = System::MakeObject<Presentation>(dataDir + u"Individual-Slide.pptx");

    auto formatter = HtmlFormatter::CreateCustomFormatter(MakeObject<CustomFormattingController>();
    auto htmlOptions = System::MakeObject<HtmlOptions>();
    htmlOptions->set_HtmlFormatter(formatter);

    // حفظ الملف              
    for (int32_t i = 0; i < presentation->get_Slides()->get_Count(); i++)
    {
        presentation->Save(dataDir + u"Individual Slide" + (i + 1) + u"_out.html", 
            MakeArray<int32_t>({ i + 1 }), SaveFormat::Html, htmlOptions);
    }
}

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

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

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

class CustomHeaderAndFontsController : public EmbedAllFontsHtmlController
{
public:
    CustomHeaderAndFontsController(String cssFileName)
        : m_cssFileName(cssFileName)
    {
    }

    void WriteDocumentStart(SharedPtr<IHtmlGenerator> generator, SharedPtr<IPresentation> presentation) override
    {
        generator->AddHtml(System::String::Format(Header, m_cssFileName));
        WriteAllFonts(generator, presentation);
    }

    void WriteAllFonts(SharedPtr<IHtmlGenerator> generator, SharedPtr<IPresentation> presentation) override
    {
        generator->AddHtml(u"<!-- Embedded fonts -->");
        EmbedAllFontsHtmlController::WriteAllFonts(generator, presentation);
    }

private:
    static const String Header;
    String m_cssFileName;
};

const String CustomHeaderAndFontsController::Header = String(u"<!DOCTYPE html>\n") + 
u"<html>\n" + u"<head>\n" + 
u"<meta http-equiv=\"Content-Type\" content=\"text/html;charset=UTF-8\">\n" + 
u"<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\">\n" + 
u"<link rel=\"stylesheet\" type=\"text/css\" href=\"{0}\">\n" + u"</head>";
void Run()
{
    // مسار دليل المستندات.
    System::String dataDir = GetDataPath();

    auto pres = System::MakeObject<Presentation>(u"pres.pptx");

    auto htmlController = System::MakeObject<CustomHeaderAndFontsController>(u"styles.css");
    auto options = System::MakeObject<HtmlOptions>();
    options->set_HtmlFormatter(HtmlFormatter::CreateCustomFormatter(htmlController));
    pres->Save(u"pres.html", SaveFormat::Html, options);
}

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

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

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

class LinkAllFontsHtmlController : public EmbedAllFontsHtmlController
{
public:
    LinkAllFontsHtmlController(ArrayPtr<String> fontNameExcludeList, String basePath)
        :   EmbedAllFontsHtmlController(fontNameExcludeList)
    {
        m_basePath = basePath;
    }

    void WriteFont(SharedPtr<IHtmlGenerator> generator, SharedPtr<IFontData> originalFont, SharedPtr<IFontData> substitutedFont,
        String fontStyle, String fontWeight, ArrayPtr<uint8_t> fontData)
    {
        String fontName = substitutedFont == nullptr ? originalFont->get_FontName() : substitutedFont->get_FontName();
        String path = String::Format(u"{0}.woff", fontName); // قد تكون هناك حاجة إلى تنقية بعض المسار
        IO::File::WriteAllBytes(IO::Path::Combine(m_basePath, path), fontData);

        generator->AddHtml(u"<style>");
        generator->AddHtml(u"@font-face { ");
        generator->AddHtml(String::Format(u"font-family: '{0}'; ", fontName));
        generator->AddHtml(String::Format(u"src: url('{0}')", path));

        generator->AddHtml(u" }");
        generator->AddHtml(u"</style>");
    }

private:
    String m_basePath;
};
void Run()
{
    auto pres = System::MakeObject<Presentation>(u"pres.pptx");

    // استبعاد خطوط العرض التقديمي الافتراضية
    auto fontNameExcludeList = System::MakeArray<String>({ u"Calibri", u"Arial" });
    
    auto linkcont = System::MakeObject<LinkAllFontsHtmlController>(fontNameExcludeList, u"C://Windows//Fonts//");

    System::SharedPtr<HtmlOptions> htmlOptionsEmbed = System::MakeObject<HtmlOptions>();
    htmlOptionsEmbed->set_HtmlFormatter(HtmlFormatter::CreateCustomFormatter(linkcont));
    
    pres->Save(u"pres.html", SaveFormat::Html, htmlOptionsEmbed);
}

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

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

auto presentation = System::MakeObject<Presentation>(u"SomePresentation.pptx");
auto saveOptions = System::MakeObject<HtmlOptions>();
saveOptions->set_SvgResponsiveLayout(true);
presentation->Save(u"SomePresentation-out.html", SaveFormat::Html, saveOptions);

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

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

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

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

 // يقوم بتحميل عرض تقديمي
auto pres = System::MakeObject<Presentation>();

const System::String path = u"C:/out/";
const System::String fileName = u"ExportMediaFiles_out.html";
const System::String baseUri = u"http://www.example.com/";

auto fileStream = System::MakeObject<IO::FileStream>(u"my_video.avi", IO::FileMode::Open, IO::FileAccess::Read);

auto video = pres->get_Videos()->AddVideo(fileStream, Aspose::Slides::LoadingStreamBehavior::ReadStreamAndRelease);

auto slide = pres->get_Slides()->idx_get(0);
slide->get_Shapes()->AddVideoFrame(10.0f, 10.0f, 100.0f, 100.0f, video);

auto controller = System::MakeObject<VideoPlayerHtmlController>(path, fileName, baseUri);

// يضبط خيارات HTML
auto htmlOptions = System::MakeObject<HtmlOptions>(controller);
auto svgOptions = System::MakeObject<SVGOptions>(controller);

htmlOptions->set_HtmlFormatter(HtmlFormatter::CreateCustomFormatter(controller));
htmlOptions->set_SlideImageFormat(SlideImageFormat::Svg(svgOptions));

// Saves the file
pres->Save(IO::Path::Combine(path, fileName), SaveFormat::Html, htmlOptions);

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

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

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

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

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

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

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