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