Personnaliser les polices PowerPoint en .NET

Charger des polices personnalisées

Aspose.Slides vous permet de charger des polices qui sont rendues dans les présentations sans avoir à les installer. Les polices sont chargées depuis un répertoire personnalisé.

  1. Créer une instance de la classe FontsLoader et appeler la méthode LoadExternalFonts.
  2. Charger la présentation qui sera rendue.
  3. Vider le cache dans la classe FontsLoader.

Ce code C# montre le processus de chargement des polices :

// Le chemin du répertoire des documents
string dataDir = "C:\\";

// dossiers où rechercher les polices
String[] folders = new String[] { dataDir };

// Charge les polices du répertoire de polices personnalisé
FontsLoader.LoadExternalFonts(folders);

// Effectuer des opérations et rendre la présentation/la diapositive
using (Presentation presentation = new Presentation(dataDir + "DefaultFonts.pptx"))
    presentation.Save(dataDir + "NewFonts_out.pptx", SaveFormat.Pptx);

// Vide le cache des polices
FontsLoader.ClearCache();

Obtenir les dossiers de polices personnalisées

Aspose.Slides fournit la méthode GetFontFolders pour vous permettre de trouver les dossiers de polices. Cette méthode renvoie les dossiers ajoutés via la méthode LoadExternalFonts ainsi que les dossiers de polices système.

Ce code C# vous montre comment utiliser GetFontFolders:

 // Cette ligne affiche les dossiers qui sont vérifiés pour les fichiers de polices.
 // Ce sont les dossiers ajoutés via la méthode LoadExternalFonts et les dossiers de polices système.
string[] fontFolders = FontsLoader.GetFontFolders();

Spécifier les polices personnalisées utilisées avec une présentation

Aspose.Slides fournit la propriété DocumentLevelFontSources pour vous permettre de spécifier les polices externes qui seront utilisées avec la présentation.

Ce code C# vous montre comment utiliser la propriété DocumentLevelFontSources:

byte[] memoryFont1 = File.ReadAllBytes("customfonts\\CustomFont1.ttf");
byte[] memoryFont2 = File.ReadAllBytes("customfonts\\CustomFont2.ttf");

LoadOptions loadOptions = new LoadOptions();
loadOptions.DocumentLevelFontSources.FontFolders = new string[] { "assets\\fonts", "global\\fonts" };
loadOptions.DocumentLevelFontSources.MemoryFonts = new byte[][] { memoryFont1, memoryFont2 };
using (IPresentation presentation = new Presentation("MyPresentation.pptx", loadOptions))
{
    // Travailler avec la présentation
    // CustomFont1, CustomFont2, et les polices provenant des dossiers assets\fonts & global\fonts et leurs sous-dossiers sont disponibles pour la présentation
}

Gérer les polices externes

Aspose.Slides fournit la méthode LoadExternalFont(byte[] data) pour vous permettre de charger des polices externes à partir de données binaires.

Ce code C# montre le processus de chargement de police à partir d’un tableau d’octets :

FontsLoader.LoadExternalFont(File.ReadAllBytes("ARIALN.TTF"));
FontsLoader.LoadExternalFont(File.ReadAllBytes("ARIALNBI.TTF"));
FontsLoader.LoadExternalFont(File.ReadAllBytes("ARIALNI.TTF"));

try
{
    using (Presentation pres = new Presentation(""))
    {
        // police externe chargée pendant la durée de vie de la présentation
    }
}
finally
{
    FontsLoader.ClearCache();
}

FAQ

Les polices personnalisées affectent-elles l’exportation vers tous les formats (PDF, PNG, SVG, HTML) ?

Oui. Les polices connectées sont utilisées par le moteur de rendu pour tous les formats d’exportation.

Les polices personnalisées sont-elles automatiquement incorporées dans le PPTX résultant ?

Non. Enregistrer une police pour le rendu n’est pas équivalent à l’incorporer dans un PPTX. Si vous avez besoin que la police soit contenue dans le fichier de présentation, vous devez utiliser les fonctionnalités d’incorporation.

Puis-je contrôler le comportement de secours lorsqu’une police personnalisée ne possède pas certains glyphes ?

Oui. Configurez la substitution de police, les règles de remplacement et les ensembles de secours pour définir exactement quelle police est utilisée lorsque le glyphe demandé est absent.

Puis-je utiliser des polices dans des conteneurs Linux/Docker sans les installer globalement sur le système ?

Oui. Pointez vers vos propres dossiers de polices ou chargez les polices depuis des tableaux d’octets. Cela supprime toute dépendance aux répertoires de polices système dans l’image du conteneur.

Qu’en est-il des licences—puis-je incorporer n’importe quelle police personnalisée sans restrictions ?

Vous êtes responsable de la conformité aux licences des polices. Les conditions varient ; certaines licences interdisent l’incorporation ou l’utilisation commerciale. Vérifiez toujours le contrat de licence (EULA) de la police avant de distribuer les résultats.