Personalizza i caratteri PowerPoint in Python

Panoramica

Aspose.Slides per Python consente di fornire caratteri personalizzati a runtime in modo che le presentazioni vengano renderizzate correttamente anche quando i caratteri richiesti non sono installati sul sistema host. Durante l’esportazione in PDF o immagini, è possibile fornire cartelle dei caratteri o dati dei caratteri in memoria per preservare il layout del testo, le metriche dei glifi e la tipografia. Questo rende il rendering lato server prevedibile su ambienti diversi, elimina le dipendenze dei caratteri a livello di OS e impedisce fallback indesiderati o riformattazioni. L’articolo mostra come registrare le sorgenti dei caratteri.

Aspose.Slides consente di caricare i seguenti caratteri usando i metodi load_external_font e load_external_fonts della classe FontsLoader:

  • Caratteri TrueType (.ttf) e TrueType Collection (.ttc). Vedi TrueType.
  • Caratteri OpenType (.otf). Vedi OpenType.

Carica caratteri personalizzati

Aspose.Slides consente di caricare i caratteri utilizzati in una presentazione senza installarli sul sistema. Ciò influisce sull’output di esportazione—come PDF, immagini e altri formati supportati—così i documenti risultanti appaiono coerenti tra gli ambienti. I caratteri vengono caricati da directory personalizzate.

  1. Specifica una o più cartelle che contengono i file dei caratteri.
  2. Chiama il metodo statico FontsLoader.load_external_fonts per caricare i caratteri da quelle cartelle.
  3. Carica e renderizza/esporta la presentazione.
  4. Chiama FontsLoader.clear_cache per svuotare la cache dei caratteri.

La seguente esempio di codice dimostra il processo di caricamento dei caratteri:

import aspose.slides as slides

# Definisci le cartelle che contengono i file dei caratteri personalizzati.
font_folders = [ external_font_folder1, external_font_folder2 ]

# Carica i caratteri personalizzati dalle cartelle specificate.
slides.FontsLoader.load_external_fonts(font_folders)

with slides.Presentation("sample.pptx") as presentation:
    # Esegui il render/esporta la presentazione (ad es., in PDF, immagini o altri formati) utilizzando i caratteri caricati.
    presentation.save("output.pdf", slides.export.SaveFormat.PDF)

# Svuota la cache dei caratteri al termine del lavoro.
slides.FontsLoader.clear_cache()

Ottieni la cartella dei caratteri personalizzati

Aspose.Slides fornisce il metodo get_font_folders per recuperare le cartelle dei caratteri. Restituisce sia le cartelle aggiunte tramite load_external_fonts sia le cartelle dei caratteri di sistema.

Questo codice Python mostra come utilizzare get_font_folders:

import aspose.slides as slides

# Questa chiamata restituisce le cartelle controllate per i file dei caratteri.
# Queste includono le cartelle aggiunte tramite il metodo load_external_fonts e le cartelle dei caratteri di sistema.
font_folders = slides.FontsLoader.get_font_folders()

Specifica caratteri personalizzati per una presentazione

Aspose.Slides fornisce la proprietà document_level_font_sources, che consente di specificare caratteri esterni da utilizzare con una presentazione.

Il seguente esempio Python mostra come utilizzare 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:
    # ...
    # Lavora con la presentazione.
    # CustomFont1, CustomFont2 e i caratteri dalle cartelle assets\fonts e global\fonts (e le loro sottocartelle) sono disponibili per la presentazione.
    # ...
    print(len(presentation.slides))

Carica caratteri esterni da dati binari

Aspose.Slides fornisce il metodo load_external_font per caricare caratteri esterni da dati binari.

Il seguente esempio Python dimostra il caricamento di un carattere da un array di byte:

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

# Carica i caratteri esterni da array di byte.
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:
        # I caratteri esterni sono disponibili per tutta la durata di questa istanza di presentazione.
        print("processing")
finally:
    slides.FontsLoader.clear_cache()

FAQ

I caratteri personalizzati influiscono sull’esportazione in tutti i formati (PDF, PNG, SVG, HTML)?
Sì. I caratteri collegati sono utilizzati dal renderer in tutti i formati di esportazione.

I caratteri personalizzati vengono incorporati automaticamente nel PPTX risultante?
No. Registrare un carattere per il rendering non è lo stesso di incorporarlo in un PPTX. Se hai bisogno che il carattere sia incluso nel file della presentazione, devi utilizzare le funzionalità di incorporamento.

Posso controllare il comportamento di fallback quando un carattere personalizzato manca di alcuni glifi?
Sì. Configura la sostituzione dei caratteri, le regole di sostituzione e i set di fallback per definire esattamente quale carattere viene usato quando il glifo richiesto è mancante.

Posso usare i caratteri in contenitori Linux/Docker senza installarli a livello di sistema?
Sì. Puntare alle proprie cartelle dei caratteri o caricare i caratteri da array di byte. Questo elimina qualsiasi dipendenza dalle directory dei caratteri di sistema nell’immagine del contenitore.

E per quanto riguarda le licenze—posso incorporare qualsiasi carattere personalizzato senza restrizioni?
Sei responsabile della conformità alle licenze dei caratteri. I termini variano; alcune licenze vietano l’incorporamento o l’uso commerciale. Rivedi sempre il contratto di licenza (EULA) del carattere prima di distribuire i risultati.