تخصيص خطوط PowerPoint في PHP

تحميل الخطوط المخصصة

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

  1. حدد مجلدًا أو أكثر يحتوي على ملفات الخط.
  2. استدعِ الطريقة الساكنة FontsLoader::loadExternalFonts لتحميل الخطوط من تلك المجلدات.
  3. قم بتحميل وعرض/تصدير العرض التقديمي.
  4. استدعِ FontsLoader::clearCache لمسح ذاكرة التخزين المؤقت للخطوط.
// تعريف المجلدات التي تحتوي على ملفات الخطوط المخصصة.
$fontFolders = array($externalFontFolder1, $externalFontFolder2);

// تحميل الخطوط المخصصة من المجلدات المحددة.
FontsLoader::loadExternalFonts($fontFolders);

$presentation = null;
try {
    $presentation = new Presentation("sample.pptx");
    
    // عرض/تصدير العرض التقديمي (مثلاً إلى PDF أو صور أو صيغ أخرى) باستخدام الخطوط المحملة.
    $presentation->save("output.pdf", SaveFormat::Pdf);
} finally {
    if ($presentation != null) $presentation->dispose();

    // مسح ذاكرة التخزين المؤقت للخطوط بعد الانتهاء من العمل.
    FontsLoader::clearCache();
}

الحصول على مجلدات الخطوط المخصصة

Aspose.Slides توفر الطريقة getFontFolders للسماح لك بالعثور على مجلدات الخطوط. تعيد هذه الطريقة المجلدات التي أضيفت عبر طريقة LoadExternalFonts ومجلدات الخطوط النظامية.

  # هذا السطر يعرض المجلدات التي يتم البحث فيها عن ملفات الخط.
  # هذه هي المجلدات التي تمت إضافتها عبر طريقة LoadExternalFonts ومجلدات الخطوط النظامية.
  $fontFolders = FontsLoader->getFontFolders();

تحديد الخطوط المخصصة المستخدمة مع عرض تقديمي

Aspose.Slides توفر الطريقة setDocumentLevelFontSources للسماح لك بتحديد الخطوط الخارجية التي سيتم استخدامها مع العرض التقديمي.

  $Array = new JavaClass("java.lang.reflect.Array");
  $Byte = new JavaClass("java.lang.Byte");
  $file1 = new Java("java.io.File", "customfonts/CustomFont1.ttf");
  $memoryFont1 = $Array->newInstance($Byte, $Array->getLength($file1));
  try {
      $dis1 = new Java("java.io.DataInputStream", new Java("java.io.FileInputStream", $file1));
      $dis1->readFully($memoryFont1);
  } finally {
      if (!java_is_null($dis1)) $dis1->close();
  }
  $file2 = new Java("java.io.File", "customfonts/CustomFont2.ttf");
  $memoryFont2 = $Array->newInstance($Byte, $Array->getLength($file2));
  try {
        $dis2 = new Java("java.io.DataInputStream", new Java("java.io.FileInputStream", $file2));
        $dis2->readFully($memoryFont2);
  } finally {
        if (!java_is_null($dis2)) $dis2->close();
  }
  $loadOptions = new LoadOptions();
  $loadOptions->getDocumentLevelFontSources()->setFontFolders(array("assets/fonts", "global/fonts" ));
  $loadOptions->getDocumentLevelFontSources()->setMemoryFonts(array($memoryFont1, $memoryFont2 ));
  $pres = new Presentation("MyPresentation.pptx", $loadOptions);
  try {
    # العمل مع العرض التقديمي
    # خطوط CustomFont1 و CustomFont2 والخطوط الموجودة في المجلدات assets\fonts و global\fonts ومجلداتهما الفرعية متاحة للعرض التقديمي
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

إدارة الخطوط خارجيًا

Aspose.Slides توفر الطريقة loadExternalFont(byte[] data) للسماح لك بتحميل خطوط خارجية من بيانات ثنائية.

$Array = new JavaClass("java.lang.reflect.Array");
$Byte = (new JavaClass("java.lang.Byte"))->TYPE;
try {
    $dis = new Java("java.io.DataInputStream", new Java("java.io.FileInputStream", "ARIALN.TTF"));
    $bytes = $Array->newInstance($Byte, $dis->available());
    $dis->readFully($bytes);
} finally {
    if (!java_is_null($dis)) $dis->close();
}
  FontsLoader->loadExternalFont($bytes);

try {
    $dis = new Java("java.io.DataInputStream", new Java("java.io.FileInputStream", "ARIALNBI.TTF"));
    $bytes = $Array->newInstance($Byte, $dis->available());
    $dis->readFully($bytes);
} finally {
    if (!java_is_null($dis)) $dis->close();
}
  FontsLoader->loadExternalFont($bytes);

try {
    $dis = new Java("java.io.DataInputStream", new Java("java.io.FileInputStream", "ARIALNI.TTF"));
    $bytes = $Array->newInstance($Byte, $dis->available());
    $dis->readFully($bytes);
} finally {
    if (!java_is_null($dis)) $dis->close();
}
  FontsLoader->loadExternalFont($bytes);

  try {
    $pres = new Presentation("");
    try {
        # تم تحميل الخط الخارجي خلال عمر العرض التقديمي
    } finally {
    }
  } finally {
    FontsLoader->clearCache();
  }

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

هل تؤثر الخطوط المخصصة على التصدير إلى جميع الصيغ (PDF، PNG، SVG، HTML)؟

نعم. يتم استخدام الخطوط المتصلة من قبل المحرك عبر جميع صيغ التصدير.

هل يتم تضمين الخطوط المخصصة تلقائيًا في ملف PPTX الناتج؟

لا. تسجيل الخط للعرض ليس هو نفسه تضمينه في PPTX. إذا كنت بحاجة إلى تضمين الخط داخل ملف العرض التقديمي، يجب عليك استخدام ميزات التضمين.

هل يمكنني التحكم في سلوك الاحتياطي عندما يفتقر الخط المخصص إلى بعض الحروف؟

نعم. قم بتهيئة استبدال الخط، قواعد الاستبدال، ومجموعات الاحتياطي لتحديد الخط الذي سيُستَخدم عندما يكون الحرف المطلوب غير موجود.

هل يمكنني استخدام الخطوط في حاويات Linux/Docker دون تثبيتها على مستوى النظام؟

نعم. أشر إلى مجلدات الخط الخاصة بك أو حمّل الخطوط من مصفوفات البايت. هذا يلغي أي اعتماد على مجلدات الخط النظامية في صورة الحاوية.

ماذا عن الترخيص—هل يمكنني تضمين أي خط مخصص دون قيود؟

أنت مسؤول عن الامتثال لترخيص الخط. تختلف الشروط؛ بعض الترخيصات تمنع التضمين أو الاستخدام التجاري. راجع دائمًا اتفاقية ترخيص المستخدم للخط قبل توزيع المخرجات.