سفارشیسازی فونتهای پاورپوینت در جاوااسکریپت
مرور کلی
Aspose.Slides به شما امکان میدهد تا فونتهای سفارشی را در ارائهها بدون نصب آنها بر روی سیستمعامل استفاده کنید. میتوانید فونتها را از پوشههای سفارشی بارگذاری کنید، برای یک ارائه خاص از طریق منبعهای سطحسندی فونتها فراهم کنید، یا فونتهای خارجی را مستقیماً از دادههای باینری بارگذاری کنید.
فونتهای بارگذاریشده هنگام رندر یا استخراج ارائه، برای مثال به PDF، تصویرها و سایر فرمتهای پشتیبانیشده، استفاده میشوند. این کار به حفظ سازگاری خروجی ارائه در محیطهای مختلف کمک میکند. این مقاله همچنین روش بررسی پوشههای فونتی که توسط Aspose.Slides استفاده میشوند و نحوه پاکسازی کش فونت پس از کار با فونتهای خارجی را توضیح میدهد.
ثبت فونتهای سفارشی برای رندر جدا از تعبیه فونتها در فایل PPTX است. اگر فونتی باید داخل خود ارائه ذخیره شود، باید از ویژگیهای تعبیه فونت بهصورت صریح استفاده کنید.
Aspose Slides به شما اجازه میدهد این فونتها را با استفاده از روش loadExternalFonts بارگذاری کنید:
بارگذاری فونتهای سفارشی
Aspose.Slides به شما اجازه میدهد فونتهای مورد استفاده در یک ارائه را بدون نصب آنها بر روی سیستم بارگذاری کنید. این کار بر خروجیهای استخراجی—مانند PDF، تصویرها و سایر فرمتهای پشتیبانیشده—تأثیر میگذارد تا اسناد حاصل در محیطهای مختلف سازگار بهنظر برسند. فونتها از دایرکتوریهای سفارشی بارگذاری میشوند.
- یک یا چند پوشه که حاوی فایلهای فونت هستند را مشخص کنید.
- روش ثابت FontsLoader.loadExternalFonts را برای بارگذاری فونتها از آن پوشهها فراخوانی کنید.
- ارائه را بارگذاری و رندر/استخراج کنید.
- برای پاکسازی کش فونت، FontsLoader.clearCache را فراخوانی کنید.
مثال کد زیر فرآیند بارگذاری فونت را نشان میدهد:
// پوشههایی که حاوی فایلهای فونت سفارشی هستند را تعریف کنید.
let fontFolders = java.newArray("java.lang.String", [externalFontFolder1, externalFontFolder2]);
// فونتهای سفارشی را از پوشههای مشخصشده بارگذاری کنید.
aspose.slides.FontsLoader.loadExternalFonts(fontFolders);
let presentation = null;
try {
presentation = new aspose.slides.Presentation("sample.pptx");
// ارائه را با استفاده از فونتهای بارگذاریشده رندر/استخراج کنید (مثلاً به PDF، تصویرها یا سایر فرمتها).
presentation.save("output.pdf", aspose.slides.SaveFormat.Pdf);
} finally {
if (presentation != null) presentation.dispose();
// پس از اتمام کار کش فونت را پاک کنید.
aspose.slides.FontsLoader.clearCache();
}
Note
متد FontsLoader.loadExternalFonts پوشههای اضافی به مسیرهای جستجوی فونت اضافه میکند، اما ترتیب اولیهسازی فونت را تغییر نمیدهد. فونتها به ترتیب زیر مقداردهی میشوند:
- مسیر پیشفرض فونتهای سیستمعامل.
- مسیرهایی که توسط FontsLoader بارگذاری شدهاند.
دریافت پوشه فونتهای سفارشی
Aspose.Slides متد getFontFolders را برای یافتن پوشههای فونت فراهم میکند. این متد پوشههای اضافه شده از طریق متد LoadExternalFonts و پوشههای فونت سیستم را بر میگرداند.
// این خط پوشههایی را که در آنها فایلهای فونت جستجو میشوند، خروجی میدهد.
// اینها پوشههایی هستند که از طریق متد LoadExternalFonts و پوشههای فونت سیستم اضافه شدهاند.
var fontFolders = aspose.slides.FontsLoader.getFontFolders();
مشخص کردن فونتهای سفارشی استفادهشده با ارائه
Aspose.Slides ویژگی setDocumentLevelFontSources را برای مشخص کردن فونتهای خارجی که با ارائه استفاده خواهند شد، فراهم میکند.
var memoryFont1 = java.newInstanceSync("java.io.FileInputStream", java.newInstanceSync("java.io.File", "customfonts/CustomFont1.ttf"));
var memoryFont2 = java.newInstanceSync("java.io.FileInputStream", java.newInstanceSync("java.io.File", "customfonts/CustomFont2.ttf"));
var loadOptions = new aspose.slides.LoadOptions();
loadOptions.getDocumentLevelFontSources().setFontFolders(java.newArray("java.lang.String", ["assets/fonts", "global/fonts"]));
loadOptions.getDocumentLevelFontSources().setMemoryFonts(java.newArray("[B", [java.newArray("byte", ["item1", "item2", "item3"])]));
var pres = new aspose.slides.Presentation("MyPresentation.pptx", loadOptions);
try {
// کار با ارائه
// فونتهای CustomFont1، CustomFont2 و فونتهای موجود در پوشههای assets\fonts و global\fonts و زیرپوشههای آنها برای ارائه در دسترس هستند
} finally {
if (pres != null) {
pres.dispose();
}
}
مدیریت فونتها بهصورت خارجی
Aspose.Slides متد loadExternalFont(byte[] data) را برای بارگذاری فونتهای خارجی از دادههای باینری فراهم میکند.
java.callStaticMethodSync("com.aspose.slides.FontsLoader", "loadExternalFonts", java.newInstanceSync("java.io.FileInputStream", java.newInstanceSync("java.io.File", "ARIALN.TTF")));
java.callStaticMethodSync("com.aspose.slides.FontsLoader", "loadExternalFonts", java.newInstanceSync("java.io.FileInputStream", java.newInstanceSync("java.io.File", "ARIALNBI.TTF")));
java.callStaticMethodSync("com.aspose.slides.FontsLoader", "loadExternalFonts", java.newInstanceSync("java.io.FileInputStream", java.newInstanceSync("java.io.File", "ARIALNI.TTF")));
try {
var pres = new aspose.slides.Presentation("");
try {
// فونت خارجی در طول عمر ارائه بارگذاری شد
} finally {
}
} finally {
java.callStaticMethodSync("com.aspose.slides.FontsLoader", "clearCache");
}
پرسشهای متداول
آیا فونتهای سفارشی بر خروجی به تمام فرمتها (PDF، PNG، SVG، HTML) تأثیر میگذارند؟
بله. فونتهای متصلشده توسط رندرر در تمام فرمتهای خروجی استفاده میشوند.
آیا فونتهای سفارشی بهصورت خودکار در PPTX نهایی تعبیه میشوند؟
خیر. ثبت فونت برای رندر با تعبیه آن در PPTX یکسان نیست. اگر نیاز دارید فونت داخل فایل ارائه نگهداری شود، باید از ویژگیهای صریح embedding features استفاده کنید.
آیا میتوانم رفتار fallback را زمانی که یک فونت سفارشی برخی گلیفها را ندارد، کنترل کنم؟
بله. میتوانید font substitution، replacement rules و fallback sets را پیکربندی کنید تا دقیقاً تعیین شود در صورت عدم وجود گلیف درخواستی کدام فونت استفاده شود.
آیا میتوانم فونتها را در کانتینرهای Linux/Docker بدون نصب سراسری استفاده کنم؟
بله. میتوانید به پوشههای فونت خود اشاره کنید یا فونتها را از آرایههای بایتی بارگذاری کنید. این کار هرگونه وابستگی به دایرکتوریهای فونت سیستم در تصویر کانتینر را حذف میکند.
در مورد لایسنسها چه میشود—آیا میتوانم هر فونت سفارشی را بدون محدودیت تعبیه کنم؟
شما مسئول رعایت شرایط لایسنس فونتها هستید. شرایط متفاوت است؛ برخی لایسنسها تعبیه یا استفاده تجاری را ممنوع میسازند. همواره قبل از توزیع خروجیها، قوانین استفاده (EULA) فونت را بررسی کنید.