تكوين استبدال الخطوط في العروض التقديمية باستخدام بايثون عبر جافا

نظرة عامة

يُتيح استبدال الخطوط (Font substitution) لـ Aspose.Slides استخدام خط متاح بدلاً من الخط الذي لا يمكن الوصول إليه عند عرض أو تحويل العرض التقديمي. يؤثر الاستبدال على المخرجات المعروضة؛ ولا يغيّر الخط المعين لمحتوى العرض.

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

الحصول على استبدالات الخطوط

استخدم طريقة FontsManager.getSubstitutions لتحديد الخطوط التي ستُستبدل عند عرض العرض التقديمي. تُعيد الطريقة كائنات FontSubstitutionInfo التي تحدد أسماء الخط الأصلي والخط المستبدل.

المثال التالي بلغة Python يعرض جميع استبدالات الخطوط لعرض تقديمي:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation

presentation = Presentation("Presentation.pptx")
try:
    for substitution in presentation.getFontsManager().getSubstitutions():
        print(f"{substitution.getOriginalFontName()} -> {substitution.getSubstitutedFontName()}")
finally:
    presentation.dispose()

الحصول على استبدالات الخطوط للشرائح المحددة

استخدم التحميل الزائد لطريقة FontsManager.getSubstitutions مع معامل مصفوفة أعداد صحيحة Java لفحص الاستبدالات المطلوبة فقط لعرض شرائح معينة. يكون ذلك مفيدًا عندما تقوم بعرض أو تصدير جزء من العرض التقديمي، أو فحص عرض تقديمي كبير تدريجيًا، أو تحديد الشرائح التي تعتمد على خطوط غير متوفرة، أو إعداد حزمة خطوط دقيقة لخادم أو حاوية، أو تشخيص اختلافات العرض دون معالجة الشرائح غير المرتبطة.

تحتوي مصفوفة slides على فهارس شرائح تبدأ من الواحد: 1 يحدد الشريحة الأولى. بالمقابل، يستخدم قارئ مجموعة Presentation.getSlides فهارس تبدأ بالصفر، لذا تُستَخدم الشريحة نفسها كـ presentation.getSlides().get_Item(0). احرص على مراعاة هذا الاختلاف عند بناء المصفوفة لتجنب أخطاء الإزاحة.

استدعِ التحميل الزائد عبر طريقة Presentation.getFontsManager. تُعيد الطريقة الاستبدالات التي تم تحديدها أثناء عرض الشرائح المحددة فقط. كل نتيجة هي كائن FontSubstitutionInfo يحتوي على أسماء الخط الأصلي والخط المستبدل. تعكس النتيجة بيئة الخط الحالية، وقواعد السقوط الاحتياطي المكوَّنة، وقواعد الاستبدال المخزنة في FontSubstRuleCollection، والخطوط المحمَّلة خارجيًا.

يمكن أن تكون نفس الاستبدال مطلوبة لأكثر من شريحة محددة. قم بإزالة التكرارات عند إنشاء جرد للخطوط أو تقرير الفحص المسبق. المثال التالي يُبلِّغ عن كل استبدال مُعاد ويُنشئ قائمة مرتبة من تعيينات الخطوط الفريدة:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation

presentation = Presentation("Presentation.pptx")
try:
    selected_slides = jpype.JArray(jpype.JInt)([1, 3, 5])
    substitutions = list(presentation.getFontsManager().getSubstitutions(selected_slides))

    print("Substitutions for the selected slides:")
    for substitution in substitutions:
        print(f"{substitution.getOriginalFontName()} -> {substitution.getSubstitutedFontName()}")

    unique_entries = {}
    for substitution in substitutions:
        entry = f"{substitution.getOriginalFontName()} -> {substitution.getSubstitutedFontName()}"
        unique_entries.setdefault(entry.casefold(), entry)

    print("Deduplicated font preflight report:")
    for key in sorted(unique_entries):
        print(unique_entries[key])
finally:
    presentation.dispose()

توفر فئة FontsManager كلتا التحميلات الزائدة. اختر واحدة وفقًا لنطاق عملية العرض:

التحميل الزائد متى تستخدمه
getSubstitutions دون معاملات تحتاج إلى استبدالات للعرض التقديمي بأكمله.
getSubstitutions مع مصفوفة أعداد صحيحة Java تحتاج إلى استبدالات لنطاق محدد، أو فحص تدريجي، أو تصدير جزئي.

تعيين قواعد استبدال الخطوط

لتحديد الخط الذي يجب أن يستخدمه Aspose.Slides عندما يكون الخط المصدر غير متوفر:

  1. حمِّل العرض التقديمي.
  2. أنشئ تعريفات للخط المصدر والخط البديل.
  3. أنشئ كائنًا من نوع FontSubstRule مع شرط WhenInaccessible.
  4. أضف القاعدة إلى FontSubstRuleCollection.
  5. اسند المجموعة باستخدام طريقة FontsManager.setFontSubstRuleList.
  6. عرض أو تحويل العرض التقديمي.

المثال التالي بلغة Python يستبدل Arial بـ SomeRareFont عندما يكون SomeRareFont غير متوفر، ثم يعرض الشريحة الأولى للتحقق من النتيجة. يجب أن يكون الخط البديل متاحًا لـ Aspose.Slides.

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import FontData, FontSubstCondition, FontSubstRule, FontSubstRuleCollection, ImageFormat, Presentation

presentation = Presentation("Fonts.pptx")
try:
    source_font = FontData("SomeRareFont")
    substitute_font = FontData("Arial")
    substitution_rule = FontSubstRule(source_font, substitute_font, FontSubstCondition.WhenInaccessible)

    substitution_rules = FontSubstRuleCollection()
    substitution_rules.add(substitution_rule)
    presentation.getFontsManager().setFontSubstRuleList(substitution_rules)

    image = presentation.getSlides().get_Item(0).getImage(1.0, 1.0)
    try:
        image.save("slide.jpg", ImageFormat.Jpeg)
    finally:
        image.dispose()
finally:
    presentation.dispose()

القيود على خطوط المعادلات الرياضية

قواعد استبدال الخطوط هي جزء من عملية اختيار الخط القياسية المستخدمة أثناء العرض والتحويل. تعمل للكتابة العادية عندما يستطيع Aspose.Slides استبدال خط غير متاح بالخط المتاح المحدد بالقاعدة.

تتطلب المعادلات الرياضية في Office Math متطلبات إضافية. إذا استخدمت معادلة Cambria Math، قد يحتاج Aspose.Slides إلى هذا الخط بالضبط لحساب وعرض تخطيط المعادلة. لا يمكن لقاعدة تستبدل بخط رياضي آخر، مثل STIX Two Math، أن تحل محل Cambria Math لهذا الغرض، وقد يظل العرض يُبلِّغ أن Cambria Math مطلوب.

لعرض أو تحويل مثل هذا العرض التقديمي، اجعل Cambria Math متاحًا لـ Aspose.Slides. ثبت الخط في نظام التشغيل أو حمِّله كـ خط خارجي.

تنطبق هذه القاعدة على تخطيط المعادلات فقط. لا تزال قواعد الاستبدال المذكورة أعلاه سارية على النص العادي في العرض التقديمي.

الأسئلة الشائعة

ما الفرق بين استبدال الخط وإستبدال الخطوط؟
استبدال الخطوط يغيِّر خطًا إلى آخر بشكل متعمد في جميع أنحاء العرض التقديمي. استبدال الخط يختار خطًا للمخرجات المعروضة عندما يتحقق الشرط المُكوَّن، مثل عدم توفر الخط الأصلي.

متى تُطبق قواعد الاستبدال؟
تشارك القواعد في تسلسل اختيار الخط أثناء العرض والتحويل. مع WhenInaccessible تُستَخدم القاعدة فقط عندما لا يتمكن Aspose.Slides من الوصول إلى الخط المصدر.

ماذا يحدث إذا كان الخط مفقودًا ولم تُحدد قاعدة استبدال؟
يختار Aspose.Slides أقرب خط متاح وفقًا لعملية اختيار الخط الخاصة به. تعتمد النتيجة على الخطوط المتوفرة في بيئة التشغيل.

هل يمكنني تحميل خطوط خارجية لتجنب الاستبدال؟
نعم. يمكنك تحميل خطوط خارجية ليستخدمها Aspose.Slides أثناء العرض والتحويل.

هل توزع Aspose الخطوط مع المكتبة؟
لا. أنت المسؤول عن توفير الخطوط والامتثال لتراخيصها.

هل يمكن أن تختلف نتائج الاستبدال بين Windows و Linux و macOS؟
نعم. تختلف الخطوط المثبتة ومواقع البحث عن الخط بحسب نظام التشغيل، لذا قد يتطلب خط متاح على جهاز ما استبدالًا على جهاز آخر.

كيف أجعل اختيار الخط ثابتًا في عمليات التحويل الجماعي؟
استخدم نفس ملفات الخط وإصداراتها على كل جهاز أو حاوية، حمِّل الخطوط الخارجية المطلوبة، وضمّن الخطوط عندما تسمح الترخيصات. يمكنك أيضًا استدعاء FontsManager.getSubstitutions قبل التصدير لتحديد الاستبدالات غير المتوقعة.