ปรับแต่งฟอนท์ PowerPoint ใน Python ผ่าน Java
ภาพรวม
Aspose.Slides อนุญาตให้คุณใช้ฟอนท์แบบกำหนดเองในงานนำเสนอโดยไม่ต้องติดตั้งบนระบบปฏิบัติการ คุณสามารถโหลดฟอนท์จากโฟลเดอร์กำหนดเอง, จัดหาฟอนท์สำหรับงานนำเสนอเฉพาะผ่านแหล่งฟอนท์ระดับเอกสาร, หรือโหลดฟอนท์ภายนอกจากข้อมูลไบต์โดยตรง
ฟอนท์ที่โหลดจะถูกใช้เมื่อทำการเรนเดอร์หรือส่งออกงานนำเสนอ เช่น ไปยัง PDF, รูปภาพและรูปแบบที่สนับสนุนอื่น ๆ สิ่งนี้ช่วยให้ผลลัพธ์ของงานนำเสนอคงที่ในสภาพแวดล้อมที่ต่างกัน บทความนี้ยังอธิบายวิธีตรวจสอบโฟลเดอร์ฟอนท์ที่ Aspose.Slides ใช้และวิธีลบแคชฟอนท์หลังจากทำงานกับฟอนท์ภายนอก
การลงทะเบียนฟอนท์แบบกำหนดเองสำหรับการเรนเดอร์เป็นขั้นตอนที่แยกจากการฝังฟอนท์ลงในไฟล์ PPTX หากต้องการให้ฟอนท์บันทึกอยู่ภายในงานนำเสนอเอง ให้ใช้ฟีเจอร์การฝังฟอนท์อย่างชัดเจน
ธีมของงานนำเสนอสามารถอ้างอิงฟอนท์ฟาแอมิลี่ต่าง ๆ สำหรับระบบการเขียนแต่ละระบบ การแมปนี้จะเก็บชื่อฟอนท์แต่ไม่ทำการติดตั้งหรือโหลดไฟล์ฟอนท์ ดู Script-Specific Theme Fonts เพื่อจัดการการแมป และใช้ตัวเลือกการโหลดด้านล่างเพื่อทำให้ฟอนท์ที่อ้างอิงพร้อมใช้งานสำหรับการเรนเดอร์ที่สม่ำเสมอ
หมายเหตุ
Aspose.Slides อนุญาตให้คุณโหลดฟอนท์เหล่านี้โดยใช้เมธอด loadExternalFonts:
โหลดฟอนท์แบบกำหนดเอง
Aspose.Slides อนุญาตให้คุณโหลดฟอนท์ที่ใช้ในงานนำเสนอโดยไม่ต้องติดตั้งบนระบบ ซึ่งส่งผลต่อผลลัพธ์การส่งออก เช่น PDF, รูปภาพและรูปแบบที่สนับสนุนอื่น ๆ ทำให้เอกสารที่สร้างขึ้นดูสม่ำเสมอในสภาพแวดล้อมต่าง ๆ ฟอนท์จะถูกโหลดจากไดเรกทอรีกำหนดเอง
- ระบุโฟลเดอร์หนึ่งหรือหลายโฟลเดอร์ที่มีไฟล์ฟอนท์
- เรียกเมธอดสตาติก FontsLoader.loadExternalFonts เพื่อโหลดฟอนท์จากโฟลเดอร์เหล่านั้น
- โหลดและเรนเดอร์/ส่งออกงานนำเสนอ
- เรียก FontsLoader.clearCache เพื่อลบแคชฟอนท์
ตัวอย่างโค้ดต่อไปนี้สาธิตกระบวนการโหลดฟอนท์:
from jpype import JArray, JString
from asposeslides.api import FontsLoader, Presentation, SaveFormat
# กำหนดโฟลเดอร์ที่มีไฟล์ฟอนท์แบบกำหนดเอง.
font_folders = JArray(JString)(["assets/fonts", "global/fonts"])
# โหลดฟอนท์แบบกำหนดเองจากโฟลเดอร์ที่ระบุ.
FontsLoader.loadExternalFonts(font_folders)
presentation = None
try:
presentation = Presentation("sample.pptx")
# ทำการเรนเดอร์/ส่งออกงานนำเสนอโดยใช้ฟอนท์ที่โหลด.
presentation.save("output.pdf", SaveFormat.Pdf)
finally:
if presentation is not None:
presentation.dispose()
# ลบแคชฟอนท์หลังจากทำงานเสร็จ.
FontsLoader.clearCache()
หมายเหตุ
FontsLoader.loadExternalFonts เพิ่มโฟลเดอร์เพิ่มเติมไปยังเส้นทางค้นหาฟอนท์ แต่ไม่ได้เปลี่ยนลำดับการเริ่มต้นฟอนท์ ฟอนท์จะถูกเริ่มต้นตามลำดับนี้:
- เส้นทางฟอนท์เริ่มต้นของระบบปฏิบัติการ
- เส้นทางที่โหลดผ่าน FontsLoader
รับโฟลเดอร์ฟอนท์แบบกำหนดเอง
Aspose.Slides มีเมธอด getFontFolders เพื่อให้คุณค้นหาโฟลเดอร์ฟอนท์ เมธอดนี้จะคืนค่าโฟลเดอร์ที่เพิ่มผ่านเมธอด loadExternalFonts และโฟลเดอร์ฟอนท์ของระบบ
โค้ด Python นี้แสดงวิธีใช้ getFontFolders:
from asposeslides.api import FontsLoader
# รับโฟลเดอร์ที่เพิ่มผ่าน loadExternalFonts และโฟลเดอร์ฟอนท์ของระบบ.
font_folders = FontsLoader.getFontFolders()
ระบุฟอนท์แบบกำหนดเองที่ใช้กับงานนำเสนอ
Aspose.Slides มีเมธอด getDocumentLevelFontSources เพื่อให้คุณระบุฟอนท์ภายนอกที่จะใช้กับงานนำเสนอ
โค้ด Python นี้แสดงวิธีใช้เมธอด 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:
# ทำงานกับงานนำเสนอ.
# CustomFont1, CustomFont2, และฟอนท์จาก assets/fonts และ global/fonts
# และโฟลเดอร์ย่อยของพวกมันพร้อมใช้งานในงานนำเสนอ.
pass
finally:
presentation.dispose()
จัดการฟอนท์จากภายนอก
Aspose.Slides มีเมธอด loadExternalFont เพื่อให้คุณโหลดฟอนท์ภายนอกจากข้อมูลไบต์
โค้ด Python นี้สาธิตกระบวนการโหลดฟอนท์จากอาเรย์ไบต์:
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:
# ฟอนท์ภายนอกถูกโหลดในช่วงอายุการทำงานของงานนำเสนอ.
pass
finally:
presentation.dispose()
finally:
FontsLoader.clearCache()
คำถามที่พบบ่อย
ฟอนท์แบบกำหนดเองส่งผลต่อการส่งออกไปยังทุกรูปแบบ (PDF, PNG, SVG, HTML) หรือไม่?
ใช่ ฟอนท์ที่เชื่อมต่อจะถูกใช้โดยเรนเดอร์สำหรับทุกรูปแบบการส่งออก
ฟอนท์แบบกำหนดเองจะถูกฝังโดยอัตโนมัติในไฟล์ PPTX ที่สร้างหรือไม่?
ไม่ การลงทะเบียนฟอนท์สำหรับการเรนเดอร์ไม่เท่ากับการฝังฟอนท์ลงใน PPTX หากต้องการให้ฟอนท์อยู่ภายในไฟล์งานนำเสนอ ต้องใช้ embedding features
ฉันสามารถควบคุมพฤติกรรม fallback เมื่อฟอนท์แบบกำหนดเองไม่มี glyph บางตัวได้หรือไม่?
ได้ สามารถกำหนด font substitution, replacement rules และ fallback sets เพื่อระบุฟอนท์ที่ใช้เมื่อ glyph ที่ร้องขอหายไป
ฉันสามารถใช้ฟอนท์ในคอนเทนเนอร์ Linux/Docker โดยไม่ต้องติดตั้งในระบบได้หรือไม่?
ได้ เพียงชี้ไปยังโฟลเดอร์ฟอนท์ของคุณเองหรือโหลดฟอนท์จากอาเรย์ไบต์ จะไม่พึ่งพาไดเรกทอรีฟอนท์ของระบบในอิมเมจคอนเทนเนอร์
เรื่องลิขสิทธิ์—ฉันสามารถฝังฟอนท์แบบกำหนดเองใดก็ได้โดยไม่มีข้อจำกัดหรือไม่?
คุณต้องรับผิดชอบต่อการปฏิบัติตามลิขสิทธิ์ของฟอนท์ เงื่อนไขอาจแตกต่างกัน บางลิขสิทธิ์อาจห้ามการฝังหรือการใช้ในเชิงพาณิชย์ ควรตรวจสอบ EULA ของฟอนท์ก่อนนำผลลัพธ์ไปเผยแพร่