กำหนดแบบอักษร PowerPoint ใน Java

ภาพรวม

Aspose.Slides ช่วยให้คุณใช้แบบอักษรกำหนดเองในงานนำเสนอโดยไม่ต้องติดตั้งบนระบบปฏิบัติการ คุณสามารถโหลดแบบอักษรจากโฟลเดอร์ที่กำหนดเอง, จัดหาแบบอักษรสำหรับงานนำเสนอเฉพาะผ่านแหล่งแบบอักษรระดับเอกสาร, หรือโหลดแบบอักษรภายนอกโดยตรงจากข้อมูลไบต์

แบบอักษรที่โหลดแล้วจะถูกใช้เมื่อทำการเรนเดอร์หรือส่งออกงานนำเสนอ เช่น PDF, ภาพ และรูปแบบที่สนับสนุนอื่น ๆ ซึ่งช่วยให้ผลลัพธ์ของงานนำเสนอคงที่ข้ามสภาพแวดล้อมต่าง ๆ บทความนี้ยังอธิบายวิธีตรวจสอบโฟลเดอร์แบบอักษรที่ Aspose.Slides ใช้และวิธีล้างแคชแบบอักษรหลังจากทำงานกับแบบอักษรภายนอก

การลงทะเบียนแบบอักษรกำหนดเองสำหรับการเรนเดอร์เป็นเรื่องแยกจากการฝังแบบอักษรลงในไฟล์ PPTX หากต้องการเก็บแบบอักษรไว้ภายในงานนำเสนอเอง ให้ใช้คุณลักษณะการฝังแบบอักษรอย่างชัดเจน

โหลดแบบอักษรกำหนดเอง

Aspose.Slides อนุญาตให้คุณโหลดแบบอักษรที่ใช้ในงานนำเสนอโดยไม่ต้องติดตั้งบนระบบ ซึ่งส่งผลต่อผลลัพธ์การส่งออก เช่น PDF, ภาพ, และรูปแบบที่สนับสนุนอื่น ๆ ทำให้เอกสารที่ได้ดูสอดคล้องกันข้ามสภาพแวดล้อมต่าง ๆ แบบอักษรถูกโหลดจากไดเรกทอรีที่กำหนดเอง

  1. ระบุโฟลเดอร์หนึ่งหรือหลายโฟลเดอร์ที่มีไฟล์แบบอักษร
  2. เรียกเมธอดสแตติก FontsLoader.loadExternalFonts เพื่อโหลดแบบอักษรจากโฟลเดอร์เหล่านั้น
  3. โหลดและเรนเดอร์/ส่งออกงานนำเสนอ
  4. เรียก 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();
}

รับโฟลเดอร์แบบอักษรกำหนดเอง

Aspose.Slides มีเมธอด getFontFolders เพื่อให้คุณค้นหาโฟลเดอร์แบบอักษร เมธอดนี้จะคืนค่าโฟลเดอร์ที่ถูกเพิ่มผ่านเมธอด LoadExternalFonts และโฟลเดอร์แบบอักษรของระบบ

โค้ด Java ต่อไปนี้แสดงวิธีใช้ getFontFolders:

// บรรทัดนี้แสดงโฟลเดอร์ที่ค้นหาไฟล์แบบอักษร.
// เหล่านั้นคือโฟลเดอร์ที่เพิ่มผ่านเมธอด LoadExternalFonts และโฟลเดอร์แบบอักษรของระบบ.
String[] fontFolders = FontsLoader.getFontFolders();

ระบุแบบอักษรกำหนดเองสำหรับงานนำเสนอ

Aspose.Slides มีคุณสมบัติ setDocumentLevelFontSources เพื่อให้คุณระบุแบบอักษรภายนอกที่ใช้ร่วมกับงานนำเสนอ

โค้ด Java ต่อไปนี้แสดงวิธีใช้คุณสมบัติ 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) เพื่อให้คุณโหลดแบบอักษรภายนอกจากข้อมูลไบต์

โค้ด Java ต่อไปนี้แสดงกระบวนการโหลดแบบอักษรจากอาร์เรย์ไบต์:

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 เมื่อแบบอักษรกำหนดเองไม่มี glyph บางตัวได้หรือไม่?

ได้. ตั้งค่า การทดแทนแบบอักษร, กฎการแทนที่, และ ชุด fallback เพื่อกำหนดว่าจะใช้แบบอักษรใดเมื่อ glyph ที่ต้องการขาดหาย

ฉันสามารถใช้แบบอักษรในคอนเทนเนอร์ Linux/Docker โดยไม่ต้องติดตั้งในระบบหรือไม่?

ได้. ชี้ไปยังโฟลเดอร์แบบอักษรของคุณเองหรือโหลดแบบอักษรจากอาร์เรย์ไบต์ วิธีนี้จะลบการพึ่งพาโฟลเดอร์แบบอักษรระบบออกจากอิมเมจคอนเทนเนอร์

เรื่องลิขสิทธิ์—ฉันสามารถฝังแบบอักษรกำหนดเองใด ๆ ได้โดยไม่มีข้อจำกัดหรือไม่?

คุณต้องรับผิดชอบต่อการปฏิบัติตามเงื่อนไขลิขสิทธิ์ของแบบอักษร เงื่อนไขอาจแตกต่างกัน; บางลิขสิทธิ์หากันการฝังหรือการใช้งานเชิงพาณิชย์ ตรวจสอบข้อตกลง EULA ของแบบอักษรก่อนแจกจ่ายผลลัพธ์.