ปรับแต่งฟอนต์ PowerPoint ใน Python
ภาพรวม
Aspose.Slides for Python ให้คุณสามารถจัดเตรียมฟอนต์แบบกำหนดเองในระหว่างการทำงาน เพื่อให้การนำเสนอแสดงผลอย่างถูกต้องแม้ว่าไม่มีการติดตั้งฟอนต์ที่ต้องการบนระบบโฮสต์ ระหว่างการส่งออกเป็น PDF หรือรูปภาพ คุณสามารถระบุโฟลเดอร์ฟอนต์หรือข้อมูลฟอนต์ในหน่วยความจำเพื่อรักษาการจัดรูปแบบข้อความ, มาตรฐานการวางรูปทรงอักขระ, และการพิมพ์ดีด สิ่งนี้ทำให้การเรนเดอร์ฝั่งเซิร์ฟเวอร์คาดการณ์ได้ในสภาพแวดล้อมต่าง ๆ ลบการพึ่งพาฟอนต์ระดับระบบปฏิบัติการ และป้องกันการใช้ฟอนต์สำรองหรือการทำซ้ำแบบไม่ต้องการ บทความนี้แสดงวิธีการลงทะเบียนแหล่งฟอนต์
ธีมการนำเสนอสามารถอ้างอิงฟอนต์หลายตระกูลสำหรับระบบการเขียนแต่ละระบบ การแมปนี้จะเก็บชื่อฟอนต์แต่ไม่ทำการติดตั้งหรือโหลดไฟล์ฟอนต์ ดู ฟอนต์ธีมเฉพาะสคริปต์ เพื่อจัดการการแมปและใช้ตัวเลือกการโหลดด้านล่างเพื่อทำให้ฟอนต์ที่อ้างอิงพร้อมใช้งานสำหรับการเรนเดอร์ที่สอดคล้องกัน
Aspose.Slides ให้คุณโหลดฟอนต์ต่อไปนี้โดยใช้เมธอด load_external_font และ load_external_fonts ของคลาส FontsLoader :
- ฟอนต์ TrueType (.ttf) และ TrueType Collection (.ttc) ดู TrueType.
- ฟอนต์ OpenType (.otf) ดู OpenType.
โหลดฟอนต์แบบกำหนดเอง
Aspose.Slides อนุญาตให้คุณโหลดฟอนต์ที่ใช้ในงานนำเสนอโดยไม่ต้องติดตั้งบนระบบ สิ่งนี้ส่งผลต่อผลลัพธ์การส่งออก เช่น PDF, รูปภาพ, และรูปแบบที่สนับสนุนอื่น ๆ ทำให้เอกสารที่ได้ดูสม่ำเสมอข้ามสภาพแวดล้อม ฟอนต์จะถูกโหลดจากไดเรกทอรีที่กำหนดเอง
- ระบุหนึ่งหรือหลายโฟลเดอร์ที่มีไฟล์ฟอนต์
- เรียกเมธอดสถิตย์ FontsLoader.load_external_fonts เพื่อโหลดฟอนต์จากโฟลเดอร์เหล่านั้น
- โหลดและเรนเดอร์/ส่งออกงานนำเสนอ
- เรียก FontsLoader.clear_cache เพื่อลบแคชฟอนต์
ตัวอย่างโค้ดต่อไปนี้แสดงกระบวนการโหลดฟอนต์:
import aspose.slides as slides
# กำหนดโฟลเดอร์ที่มีไฟล์ฟอนต์แบบกำหนดเอง
font_folders = ["fonts", "external_fonts"]
# โหลดฟอนต์แบบกำหนดเองจากโฟลเดอร์ที่ระบุ
slides.FontsLoader.load_external_fonts(font_folders)
with slides.Presentation("sample.pptx") as presentation:
# เรนเดอร์/ส่งออกการนำเสนอ (เช่น PDF, รูปภาพ หรือรูปแบบอื่น) โดยใช้ฟอนต์ที่โหลดไว้
presentation.save("output.pdf", slides.export.SaveFormat.PDF)
# ลบแคชฟอนต์หลังจากทำงานเสร็จสิ้น
slides.FontsLoader.clear_cache()
หมายเหตุ
FontsLoader.load_external_fonts เพิ่มโฟลเดอร์เพิ่มเติมไปยังเส้นทางค้นหาฟอนต์ แต่ไม่ได้เปลี่ยนลำดับการเริ่มต้นฟอนต์ ฟอนต์จะถูกเริ่มต้นตามลำดับนี้:
- เส้นทางฟอนต์เริ่มต้นของระบบปฏิบัติการ
- เส้นทางที่โหลดผ่าน FontsLoader.
รับโฟลเดอร์ฟอนต์แบบกำหนดเอง
Aspose.Slides มีเมธอด get_font_folders เพื่อดึงรายการโฟลเดอร์ฟอนต์ คืนค่าโฟลเดอร์ที่เพิ่มผ่าน load_external_fonts รวมทั้งโฟลเดอร์ฟอนต์ของระบบ
โค้ด Python ตัวอย่างต่อไปนี้แสดงวิธีใช้ get_font_folders:
import aspose.slides as slides
# การเรียกนี้ส่งคืนโฟลเดอร์ที่ตรวจสอบสำหรับไฟล์ฟอนต์.
# ซึ่งรวมถึงโฟลเดอร์ที่เพิ่มผ่านเมธอด load_external_fonts และโฟลเดอร์ฟอนต์ของระบบ.
font_folders = slides.FontsLoader.get_font_folders()
ระบุฟอนต์แบบกำหนดเองสำหรับการนำเสนอ
Aspose.Slides มีคุณสมบัติ document_level_font_sources ที่ให้คุณระบุฟอนต์ภายนอกที่จะใช้กับงานนำเสนอ
ตัวอย่าง Python ต่อไปนี้แสดงวิธีใช้ document_level_font_sources:
import aspose.slides as slides
with open("CustomFont1.ttf", "br") as font1_stream:
font1_data = font1_stream.read()
with open("CustomFont2.ttf", "br") as font2_stream:
font2_data = font2_stream.read()
load_options = slides.LoadOptions()
load_options.document_level_font_sources.font_folders = ["assets\\fonts", "global\\fonts"]
load_options.document_level_font_sources.memory_fonts = [font1_data, font2_data]
with slides.Presentation("Fonts.pptx", load_options) as presentation:
# ...
# ทำงานกับการนำเสนอ.
# CustomFont1, CustomFont2, และฟอนต์จากโฟลเดอร์ assets\fonts และ global\fonts (รวมถึงโฟลเดอร์ย่อย) พร้อมใช้งานในการนำเสนอ.
# ...
print(len(presentation.slides))
โหลดฟอนต์ภายนอกจากข้อมูลไบนารี
Aspose.Slides มีเมธอด load_external_font เพื่อโหลดฟอนต์ภายนอกจากข้อมูลไบนารี
ตัวอย่าง Python ต่อไปนี้สาธิตการโหลดฟอนต์จากอาเรย์ไบต์:
import aspose.slides as slides
def read_all_bytes(file_path):
with open(file_path, "rb") as file_stream:
file_data = file_stream.read()
return file_data
# โหลดฟอนต์ภายนอกจากอาเรย์ไบต์.
slides.FontsLoader.load_external_font(read_all_bytes("ARIALN.TTF"))
slides.FontsLoader.load_external_font(read_all_bytes("ARIALNBI.TTF"))
slides.FontsLoader.load_external_font(read_all_bytes("ARIALNI.TTF"))
try:
with slides.Presentation() as presentation:
# ฟอนต์ภายนือพร้อมใช้งานตลอดอายุของออบเจกต์การนำเสนอนี้.
print("processing")
finally:
slides.FontsLoader.clear_cache()
คำถามที่พบบ่อย
ฟอนต์แบบกำหนดเองมีผลต่อการส่งออกไปยังทุกรูปแบบ (PDF, PNG, SVG, HTML) หรือไม่?
ใช่. ฟอนต์ที่เชื่อมต่อจะถูกใช้โดยเรนเดอร์ในทุกรูปแบบการส่งออก
ฟอนต์แบบกำหนดเองจะถูกฝังลงในไฟล์ PPTX ที่ได้โดยอัตโนมัติหรือไม่?
ไม่. การลงทะเบียนฟอนต์เพื่อการเรนเดอร์ไม่เท่ากับการฝังฟอนต์ลงใน PPTX หากคุณต้องการให้ฟอนต์อยู่ภายในไฟล์การนำเสนอ คุณต้องใช้ ฟีเจอร์การฝัง
สามารถควบคุมพฤติกรรมสำรองเมื่อฟอนต์แบบกำหนดเองขาดบาง glyph ได้หรือไม่?
ได้. ตั้งค่า font substitution, replacement rules, และ fallback sets เพื่อกำหนดแน่ชัดว่าฟอนต์ใดจะใช้เมื่อ glyph ที่ต้องการไม่มีอยู่
สามารถใช้ฟอนต์ในคอนเทนเนอร์ Linux/Docker โดยไม่ต้องติดตั้งทั่วระบบได้หรือไม่?
ได้. ชี้ไปยังโฟลเดอร์ฟอนต์ของคุณเองหรือโหลดฟอนต์จากอาเรย์ไบต์ สิ่งนี้จะลบการพึ่งพาไดเรกทอรีฟอนต์ของระบบในอิมเมจคอนเทนเนอร์
เรื่องลิขสิทธิ์—สามารถฝังฟอนต์แบบกำหนดเองใดก็ได้โดยไม่มีข้อจำกัดหรือไม่?
คุณต้องรับผิดชอบต่อการปฏิบัติตามลิขสิทธิ์ของฟอนต์ เงื่อนไขอาจแตกต่างกัน; บางลิขสิทธิ์ห้ามการฝังหรือการใช้เชิงพาณิชย์ ควรตรวจสอบ EULA ของฟอนต์ก่อนแจกจ่ายผลลัพธ์