سفارشیسازی قلمهای پاورپوینت در C++
بررسی کلی
Aspose.Slides به شما امکان میدهد تا از قلمهای سفارشی در ارائهها بدون نصب آنها بر روی سیستمعامل استفاده کنید. شما میتوانید قلمها را از پوشههای سفارشی بارگذاری کنید، قلمها را برای یک ارائه خاص از طریق منابع قلم سطح سند فراهم کنید، یا قلمهای خارجی را مستقیماً از دادههای باینری بارگذاری کنید.
قلمهای بارگذاریشده زمانی که یک ارائه رندر یا خروجی میشود، برای مثال به PDF، تصاویر و سایر فرمتهای پشتیبانیشده، استفاده میشوند. این کمک میکند تا خروجی ارائه در محیطهای مختلف یکسان باشد. این مقاله همچنین توضیح میدهد چگونه پوشههای قلم استفادهشده توسط Aspose.Slides را بررسی کنید و پس از کار با قلمهای خارجی، حافظهپنهان قلمها را پاک کنید.
ثبت قلمهای سفارشی برای رندر کردن جدا از جاسازی قلمها در یک فایل PPTX است. اگر یک قلم باید داخل خود ارائه ذخیره شود، از ویژگیهای جاسازی قلم بهصورت صریح استفاده کنید.
Aspose Slides به شما اجازه میدهد این قلمها را با استفاده از FontsLoader::LoadExternalFonts بارگذاری کنید:
بارگذاری قلمهای سفارشی
Aspose.Slides به شما امکان میدهد قلمهای استفادهشده در یک ارائه را بدون نصب آنها بر روی سیستم بارگذاری کنید. این بر خروجی صادرات تأثیر میگذارد—مانند PDF، تصاویر و سایر فرمتهای پشتیبانیشده—بهطوری که اسناد نهایی در محیطهای مختلف یکسان بهنظر برسند. قلمها از پوشههای سفارشی بارگذاری میشوند.
- یک یا چند پوشه که حاوی فایلهای قلم هستند را مشخص کنید.
- متد ایستا FontsLoader::loadExternalFonts را صدا بزنید تا قلمها از آن پوشهها بارگذاری شوند.
- ارائه را بارگذاری و رندر/صادرات کنید.
- برای پاک کردن حافظهپنهان قلم، FontsLoader.clearCache را فراخوانی کنید.
مثال کد زیر فرآیند بارگذاری قلمها را نشان میدهد:
// پوشههایی را که شامل فایلهای قلم سفارشی هستند تعریف کنید.
auto fontFolders = MakeObject<Array<String>>(1, externalFontFolder );
// قلمهای سفارشی را از پوشههای مشخصشده بارگذاری کنید.
FontsLoader::LoadExternalFonts(fontFolders);
auto presentation = MakeObject<Presentation>(u"sample.pptx");
// ارائه را رندر/صادرات کنید (مثلاً به PDF، تصاویر یا سایر فرمتها) با استفاده از قلمهای بارگذاری شده.
presentation->Save(u"output.pdf", SaveFormat::Pdf);
presentation->Dispose();
// پس از اتمام کار حافظهپنهان قلم را پاک کنید.
FontsLoader::ClearCache();
Note
FontsLoader::loadExternalFonts پوشههای اضافی به مسیرهای جستجوی قلم اضافه میکند، اما ترتیب اولیهسازی قلمها را تغییر نمیدهد. قلمها به ترتیب زیر مقداردهی اولیه میشوند:
- مسیر قلم پیشفرض سیستمعامل.
- مسیرهایی که از طریق FontsLoader بارگذاری شدهاند.
دریافت پوشههای قلم سفارشی
Aspose.Slides FontsLoader::GetFontFolders() را ارائه میدهد تا به شما امکان پیدا کردن پوشههای قلم را بدهد. این متد پوشههایی که از طریق متد LoadExternalFonts اضافه شدهاند و پوشههای قلم سیستم را برمیگرداند.
این کد C++ نشان میدهد چگونه از متد FontsLoader::GetFontFolders() استفاده کنید:
// این خط پوشههایی را که برای فایلهای قلم بررسی میشوند، خروجی میدهد.
// اینها پوشههایی هستند که از طریق متد LoadExternalFonts اضافه شدهاند و پوشههای قلم سیستم.
auto fontFolders = FontsLoader::GetFontFolders();
تعیین قلمهای سفارشی استفادهشده با یک ارائه
Aspose.Slides property LoadOptions::set_DocumentLevelFontSources را فراهم میکند تا بتوانید قلمهای خارجی که با ارائه استفاده خواهند شد را مشخص کنید.
این کد C++ نشان میدهد چگونه از property LoadOptions::set_DocumentLevelFontSources استفاده کنید:
auto memoryFont1 = File::ReadAllBytes(u"customfonts\\CustomFont1.ttf");
auto memoryFont2 = File::ReadAllBytes(u"customfonts\\CustomFont2.ttf");
auto loadOptions = System::MakeObject<LoadOptions>();
loadOptions->get_DocumentLevelFontSources()->set_FontFolders(System::MakeArray<String>({u"assets\\fonts", u"global\\fonts"}));
loadOptions->get_DocumentLevelFontSources()->set_MemoryFonts(System::MakeArray<ArrayPtr<uint8_t>>({memoryFont1, memoryFont2}));
{
auto presentation = System::MakeObject<Presentation>(u"MyPresentation.pptx", loadOptions);
//کار با ارائه
//CustomFont1، CustomFont2 بههمراه قلمها از پوشههای assets\fonts و global\fonts و زیرپوشههای آنها برای ارائه در دسترس هستند
}
مدیریت قلمها بهصورت خارجی
Aspose.Slides متد FontsLoader::LoadExternalFont را فراهم میکند تا بتوانید قلمهای خارجی را به یک آرایه بایت بارگذاری کنید.
این کد C++ فرآیند بارگذاری قلم بهصورت آرایه بایت را نشان میدهد:
// The path to the documents directory
const String outPath = u"../out/SpecifyFontsUsedWithPresentation.pptx";
const String templatePath = u"../templates/AccessSlides.pptx";
ArrayPtr<String> fontsLocation = MakeArray<System::String>({ u"assets\\fonts", u"global\\fonts" });// ;
ArrayPtr<ArrayPtr<uint8_t>> memoryfontsLocation = MakeArray < ArrayPtr<uint8_t>>({ File::ReadAllBytes(u"../templates/CustomFont1.ttf"), File::ReadAllBytes(u"../templates/CustomFont2.ttf") });
SharedPtr < Aspose::Slides::LoadOptions > loadOptions = MakeObject <Aspose::Slides::LoadOptions>();
loadOptions->get_DocumentLevelFontSources()->set_FontFolders(fontsLocation);
loadOptions->get_DocumentLevelFontSources()->set_MemoryFonts(memoryfontsLocation);
SharedPtr<Presentation> pres = MakeObject<Presentation>(templatePath, loadOptions);
پرسشهای متداول
آیا قلمهای سفارشی بر خروجی به همه فرمتها (PDF، PNG، SVG، HTML) تأثیر میگذارند؟
بله. قلمهای متصلشده توسط رندرر در تمام فرمتهای خروجی استفاده میشوند.
آیا قلمهای سفارشی بهصورت خودکار در PPTX نهایی جاسازی میشوند؟
خیر. ثبت یک قلم برای رندر کردن همانند جاسازی آن در یک PPTX نیست. اگر به قلمی نیاز دارید که داخل فایل ارائه ذخیره شود، باید از ویژگیهای جاسازی صریحاً استفاده کنید.
آیا میتوانم رفتار جایگزینی را زمانی که یک قلم سفارشی برخی گلیفها را ندارد، کنترل کنم؟
بله. میتوانید جایگزینی قلم، قوانین جایگزینی، و مجموعههای جایگزین را پیکربندی کنید تا دقیقاً تعیین کنید در صورت عدم وجود گلیف درخواستشده، از کدام قلم استفاده شود.
آیا میتوانم قلمها را در کانتینرهای Linux/Docker بدون نصب کلی سیستم استفاده کنم؟
بله. به پوشههای قلم خود اشاره کنید یا قلمها را از آرایههای بایت بارگذاری کنید. این وابستگی به پوشههای قلم سیستم در تصویر کانتینر را حذف میکند.
در مورد مجوزها—آیا میتوانم هر قلم سفارشی را بدون محدودیت جاسازی کنم؟
شما مسئول رعایت مجوزهای قلم هستید. شرایط متفاوت است؛ برخی مجوزها جاسازی یا استفاده تجاری را ممنوع میکنند. همواره پیش از توزیع خروجیها، شرایط استفاده (EULA) قلم را مرور کنید.