Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cette rubrique montre comment utiliser les classes du Kit de développement logiciel (SDK) Open XML pour Office afin de définir la police d’une partie du texte dans un document de traitement de texte par programmation.
Packages et composants Document
Un document Open XML est stocké sous forme de package, dont le format est défini par la norme ISO/IEC 29500. Le package peut contenir plusieurs parties avec des relations entre elles. La relation entre les parties détermine la catégorie du document. Un document peut être défini comme un document de traitement de texte si son élément de relation de package contient une relation avec une partie principale de document. Si son élément de relation de package contient une relation avec une partie de présentation, il peut être défini comme un document de présentation. Si son élément de relation de package contient une relation avec une partie de classeur, il est défini en tant que feuille de calcul. Dans cette rubrique, vous utiliserez un package de documents de traitement de texte.
Structure de l’élément des polices pour une séquence de texte
Le texte suivant de la spécification ISO/IEC 29500 peut être utile lors de l’utilisation de rFonts
l’élément .
Cet élément spécifie les polices qui doivent être utilisées pour l’affichage du contenu de cette séquence de texte. Dans une même séquence, il peut y avoir jusqu’à quatre types de contenus qui ont chacun l’autorisation d’utiliser une police unique :
ASCII
ANSI étendu
Script complexe
Asie de l’Est
L’utilisation de chacune de ces polices doit être déterminée par les valeurs des caractères Unicode du contenu de la séquence de texte, à moins qu’elle ne soit remplacée manuellement via l’utilisation de l’élément cs.
En l’absence de cet élément, la valeur par défaut consiste à laisser la mise en forme appliquée au niveau antérieur de la hiérarchie de styles. Si cet élément n’est jamais appliqué dans la hiérarchie de styles, le texte est affiché dans n’importe quelle police par défaut prenant en charge chaque type de contenu.
Prenons l’exemple d’une séquence de texte unique avec du texte en arabe et en anglais, comme suit :
English العربية
Ce contenu peut être exprimé dans une seule séquence WordprocessingML :
<w:r>
<w:t>English العربية</w:t>
</w:r>
Bien qu’ils fassent partie de la même séquence, les deux contenus n’ont pas le même aspect, car une police distincte a été spécifiée pour les caractères ASCII et les caractères de langue à script complexe dans la séquence :
<w:r>
<w:rPr>
<w:rFonts w:ascii="Courier New" w:cs="Times New Roman" />
</w:rPr>
<w:t>English العربية</w:t>
</w:r>
Cette séquence de texte doit par conséquent utiliser la police Courier New pour tous les caractères de la plage ASCII, et la police Times New Roman pour tous les caractères de la plage correspondant à une langue à script complexe.
© ISO/IEC 29500 : 2016
Fonctionnement de l’exemple de code
Après avoir ouvert le fichier de package en lecture/écriture, le code crée un RunProperties
objet qui contient un RunFonts
objet dont la Ascii
propriété est définie sur « Arial ».
RunProperties
les objets et RunFonts
représentent les éléments de propriétés rPr
d’exécution et les éléments rFont
de polices d’exécution , respectivement, dans le schéma Wordprocessing Open XML. Utilisez un RunProperties
objet pour spécifier les propriétés d’une exécution de texte donnée. Dans ce cas, pour définir la police de l’exécution sur Arial, le code crée un RunFonts
objet, puis définit la Ascii
valeur sur « Arial ».
// Set the font to Arial to the first Run.
// Use an object initializer for RunProperties and rPr.
RunProperties rPr = new RunProperties(
new RunFonts()
{
Ascii = "Arial"
});
Le code crée ensuite un Run objet qui représente la première exécution de texte du document. Le code instancie un Run
et le définit sur la première exécution de texte du document. Le code ajoute ensuite l’objet RunProperties
à l’objet à l’aide Run
de la PrependChild méthode . La PrependChild
méthode ajoute un élément en tant que premier élément enfant à l’élément spécifié dans la structure XML en mémoire.
Dans ce cas, l’exécution de l’exemple de code produit une structure XML en mémoire où l’élément RunProperties
est ajouté en tant que premier élément enfant de l’élément Run
. Il n’est pas nécessaire d’appeler Save
directement, car nous sommes à l’intérieur d’une instruction using.
if (package.MainDocumentPart is null)
{
throw new ArgumentNullException("MainDocumentPart is null.");
}
Run r = package.MainDocumentPart.Document.Descendants<Run>().First();
r.PrependChild<RunProperties>(rPr);
Remarque
Cet exemple de code suppose que le document de traitement de texte de test au niveau du chemin fileName contient au moins une exécution de texte.
Voici un exemple de code complet en C# et Visual Basic.
static void SetRunFont(string fileName)
{
// Open a Wordprocessing document for editing.
using (WordprocessingDocument package = WordprocessingDocument.Open(fileName, true))
{
// Set the font to Arial to the first Run.
// Use an object initializer for RunProperties and rPr.
RunProperties rPr = new RunProperties(
new RunFonts()
{
Ascii = "Arial"
});
if (package.MainDocumentPart is null)
{
throw new ArgumentNullException("MainDocumentPart is null.");
}
Run r = package.MainDocumentPart.Document.Descendants<Run>().First();
r.PrependChild<RunProperties>(rPr);
}
}