Sesuaikan Font PowerPoint di Python via Java
Gambaran Umum
Aspose.Slides memungkinkan Anda menggunakan font kustom dalam presentasi tanpa menginstalnya pada sistem operasi. Anda dapat memuat font dari folder kustom, menyediakan font untuk presentasi tertentu melalui sumber font tingkat dokumen, atau memuat font eksternal langsung dari data biner.
Font yang dimuat digunakan saat presentasi dirender atau diekspor, misalnya ke PDF, gambar, dan format lain yang didukung. Hal ini membantu menjaga konsistensi output presentasi di berbagai lingkungan. Artikel ini juga menjelaskan cara memeriksa folder font yang digunakan oleh Aspose.Slides dan cara membersihkan cache font setelah bekerja dengan font eksternal.
Mendaftarkan font kustom untuk rendering terpisah dari proses menyematkan font ke dalam file PPTX. Jika sebuah font harus disimpan di dalam presentasi itu sendiri, gunakan fitur penyematan font secara eksplisit.
Tema presentasi dapat merujuk pada keluarga font yang berbeda untuk sistem penulisan individu. Pemetaannya menyimpan nama font tetapi tidak menginstal atau memuat berkas font. Lihat Font Tema Spesifik Skrip untuk mengelola pemetaan, dan gunakan opsi pemuatan di bawah ini agar font yang dirujuk tersedia untuk rendering yang konsisten.
Note
Aspose.Slides memungkinkan Anda memuat font ini menggunakan metode loadExternalFonts:
Muat Font Kustom
Aspose.Slides memungkinkan Anda memuat font yang digunakan dalam sebuah presentasi tanpa menginstalnya di sistem. Hal ini memengaruhi output ekspor—seperti PDF, gambar, dan format lain yang didukung—sehingga dokumen yang dihasilkan terlihat konsisten di berbagai lingkungan. Font dimuat dari direktori kustom.
- Tentukan satu atau beberapa folder yang berisi berkas font.
- Panggil metode statis FontsLoader.loadExternalFonts untuk memuat font dari folder tersebut.
- Muat dan render/ekspor presentasi.
- Panggil FontsLoader.clearCache untuk membersihkan cache font.
Contoh kode berikut menunjukkan proses pemuatan font:
from jpype import JArray, JString
from asposeslides.api import FontsLoader, Presentation, SaveFormat
# Tentukan folder yang berisi berkas font kustom.
font_folders = JArray(JString)(["assets/fonts", "global/fonts"])
# Muat font kustom dari folder yang ditentukan.
FontsLoader.loadExternalFonts(font_folders)
presentation = None
try:
presentation = Presentation("sample.pptx")
# Render/ekspor presentasi menggunakan font yang dimuat.
presentation.save("output.pdf", SaveFormat.Pdf)
finally:
if presentation is not None:
presentation.dispose()
# Bersihkan cache font setelah pekerjaan selesai.
FontsLoader.clearCache()
Note
FontsLoader.loadExternalFonts menambahkan folder tambahan ke jalur pencarian font, tetapi tidak mengubah urutan inisialisasi font.
Font diinisialisasi dalam urutan berikut:
- Jalur font default sistem operasi.
- Jalur yang dimuat melalui FontsLoader.
Dapatkan Folder Font Kustom
Aspose.Slides menyediakan metode getFontFolders untuk memungkinkan Anda menemukan folder font. Metode ini mengembalikan folder yang ditambahkan melalui metode loadExternalFonts serta folder font sistem.
Kode Python berikut menunjukkan cara menggunakan getFontFolders:
from asposeslides.api import FontsLoader
# Dapatkan folder yang ditambahkan melalui loadExternalFonts dan folder font sistem.
font_folders = FontsLoader.getFontFolders()
Tentukan Font Kustom yang Digunakan dengan Presentasi
Aspose.Slides menyediakan metode getDocumentLevelFontSources untuk memungkinkan Anda menentukan font eksternal yang akan digunakan dengan presentasi.
Kode Python berikut menunjukkan cara menggunakan metode getDocumentLevelFontSources:
from pathlib import Path
from jpype import JArray, JByte, JString
from asposeslides.api import LoadOptions, Presentation
memory_font_primary = Path("customfonts/CustomFont1.ttf").read_bytes()
memory_font_secondary = Path("customfonts/CustomFont2.ttf").read_bytes()
load_options = LoadOptions()
font_folders = JArray(JString)(["assets/fonts", "global/fonts"])
memory_fonts = JArray(JByte, 2)([memory_font_primary, memory_font_secondary])
load_options.getDocumentLevelFontSources().setFontFolders(font_folders)
load_options.getDocumentLevelFontSources().setMemoryFonts(memory_fonts)
presentation = Presentation("MyPresentation.pptx", load_options)
try:
# Bekerja dengan presentasi.
# CustomFont1, CustomFont2, dan font dari assets/fonts serta global/fonts
# dan subfolder-nya tersedia untuk presentasi.
pass
finally:
presentation.dispose()
Kelola Font Secara Eksternal
Aspose.Slides menyediakan metode loadExternalFont untuk memungkinkan Anda memuat font eksternal dari data biner.
Kode Python berikut mendemonstrasikan proses pemuatan font dari array byte:
from pathlib import Path
from jpype import JArray, JByte
from asposeslides.api import FontsLoader, Presentation
font_data = Path("ARIALN.TTF").read_bytes()
FontsLoader.loadExternalFont(JArray(JByte)(font_data))
font_data = Path("ARIALNBI.TTF").read_bytes()
FontsLoader.loadExternalFont(JArray(JByte)(font_data))
font_data = Path("ARIALNI.TTF").read_bytes()
FontsLoader.loadExternalFont(JArray(JByte)(font_data))
try:
presentation = Presentation()
try:
# Font eksternal dimuat selama masa hidup presentasi.
pass
finally:
presentation.dispose()
finally:
FontsLoader.clearCache()
FAQ
Apakah font kustom memengaruhi ekspor ke semua format (PDF, PNG, SVG, HTML)?
Ya. Font yang terhubung digunakan oleh renderer pada semua format ekspor.
Apakah font kustom secara otomatis disematkan ke dalam PPTX yang dihasilkan?
Tidak. Mendaftarkan font untuk rendering tidak sama dengan menyematkannya ke dalam PPTX. Jika Anda memerlukan font yang dibawa di dalam file presentasi, Anda harus menggunakan fitur penyematan secara eksplisit.
Bisakah saya mengontrol perilaku fallback ketika sebuah font kustom tidak memiliki glyph tertentu?
Ya. Konfigurasikan substitusi font, aturan penggantian, dan set fallback untuk menentukan secara tepat font mana yang digunakan ketika glyph yang diminta tidak ada.
Bisakah saya menggunakan font di dalam kontainer Linux/Docker tanpa menginstalnya secara sistem?
Ya. Arahkan ke folder font Anda sendiri atau muat font dari array byte. Ini menghilangkan ketergantungan pada direktori font sistem dalam gambar kontainer.
Bagaimana dengan lisensi—apakah saya dapat menyematkan font kustom apa pun tanpa batasan?
Anda bertanggung jawab atas kepatuhan lisensi font. Persyaratannya bervariasi; beberapa lisensi melarang penyematan atau penggunaan komersial. Selalu tinjau EULA font sebelum mendistribusikan output.