Utilisation `DocumentBuilder` pour modifier un document

Spécifier le formatage

Formatage des polices

Le formatage actuel des polices est représenté par une Font objet retourné par DocumentBuilder.Font propriété. Les Font classe contient une grande variété de propriétés de police possible dans Microsoft Word.

font-formatting-aspose-words-java
L’exemple de code suivant montre comment définir le formatage des polices.

Formatage des cellules

Le formatage des cellules est utilisé lors de la construction d’une table. Elle est représentée par CellFormat objet retourné par DocumentBuilder.CellFormat propriété. CellFormat encapsule diverses propriétés cellulaires de table comme la largeur ou l’alignement vertical.

cell-formatting-aspose-words-java
L’exemple de code suivant montre comment créer une table qui contient une cellule formatée.

Formatage des lignes

Le formatage actuel de la ligne est déterminé par un RowFormat objet retourné par le DocumentBuilder.RowFormat propriété. L’objet encapsule des informations sur le formatage de toutes les lignes de table.

row-formatting-aspose-words-java
Lalow code exemple montre comment créer une table qui contient une cellule unique et appliquer le formatage de ligne.

Formatage de la liste

Aspose.Words permet la création facile de listes en appliquant le formatage de la liste. DocumentBuilder fournit le DocumentBuilder.ListFormat un bien qui rend une ListFormat objet. Cet objet a plusieurs méthodes pour démarrer et terminer une liste et augmenter/diminuer le tiret.

list-fformatting-aspose-words-java
Il existe deux types généraux de listes: Microsoft Word: balles et numérotées.

La puce ou le nombre et le formatage sont ajoutés au paragraphe actuel et à tous les autres paragraphes créés en utilisant DocumentBuilder jusqu’à ListFormat.removeNumbers est appelé pour arrêter le formatage des listes par puces.

Dans les documents Word, les listes peuvent comprendre jusqu’à neuf niveaux. Le formatage de la liste pour chaque niveau indique le point ou le nombre utilisé, le tiret gauche, l’espace entre le point et le texte, etc.

Les méthodes changent le niveau de la liste et appliquent les propriétés de formatage du nouveau niveau.

L’exemple de code suivant montre comment construire une liste à plusieurs niveaux.

Configuration des pages et formatage des sections

Les propriétés de configuration et de section de page sont encapsulées dans le PageSetup objet retourné par le DocumentBuilder.PageSetup propriété. L’objet contient tous les attributs de configuration de page d’une section (marge gauche, marge inférieure, taille du papier, etc.) comme propriétés.

section-formatting-aspose-words-java
L’exemple de code suivant montre comment définir des propriétés telles que la taille et l’orientation de la page pour la section actuelle.

Appliquer un style

Certains objets de formatage comme les styles de support Font ou ParagraphFormat. Un style intégré ou défini par l’utilisateur est représenté par un Style objet qui contient les propriétés de style correspondantes comme nom, style de base, police et formatage de paragraphe du style, et ainsi de suite.

En outre, Style objet fournit la Style.getStyleIdentifier propriété qui retourne un identifiant de style indépendant local représenté par un Style.StyleIdentifier valeur de dénombrement. Le point est que les noms des styles intégrés dans Microsoft Word sont localisés pour différentes langues. En utilisant un identifiant de style, vous pouvez trouver le style correct quel que soit le langage du document. Les valeurs de dénombrement correspondent à la Microsoft Word styles intégrés tels que normal , cap 1 , cap 2 etc. Tous les styles définis par l’utilisateur sont assignés StyleIdentificateur. Valeur utilisateur.

apply-style-aspose-words-java
L’exemple de code suivant montre comment appliquer un style de paragraphe.

Frontières et ombres

Les frontières sont représentées par la BorderCollection. Il s’agit d’une collection d’objets Border auxquels on accède par index ou par type de bordure. Le type de frontière est représenté par le BorderType Énumération. Certaines valeurs du dénombrement s’appliquent à plusieurs ou à un seul élément de document. Par exemple, BorderType.Bottom est applicable à un paragraphe ou à une cellule de tableau pendant BorderType.DiagonalDown spécifie la bordure diagonale dans une cellule de table seulement.

La collection de bordures et chaque bordure séparée ont des attributs similaires comme la couleur, le style de ligne, la largeur de ligne, la distance du texte et l’ombre optionnelle. Ils sont représentés par des propriétés du même nom. Vous pouvez atteindre différents types de bordure en combinant des valeurs de propriété. En outre, les deux BorderCollection et Border objets vous permettent de réinitialiser ces valeurs par défaut en appelant le Border.clearFormatting méthode. Notez que lorsque les propriétés de la bordure sont réinitialisées aux valeurs par défaut, la bordure est invisible.

set-borders-shading-aspose-words-java
Les Shading classe contient des attributs d’ombrage pour les éléments de document. Vous pouvez définir la texture d’ombrage souhaitée et les couleurs qui sont appliquées au fond et au premier plan de l’élément.

La texture d’ombrage est définie avec un TextureIndex valeur de dénombrement qui permet l’application de différents modèles à la Shading objet. Par exemple, pour définir une couleur de fond pour un élément de document, utilisez le TextureIndex.TextureSolide valeur et définir la couleur d’ombrage avant plan selon le besoin.

borders-and-shading-aspose-words-java
L’exemple ci-dessous montre comment appliquer les frontières et l’ombrage à un paragraphe.

Snap vers la grille

Aspose.Words fournit deux propriétés ParagraphFormat.SnapToGrid et Font.SnapToGrid pour obtenir et définir la propriété paragraphe snap to grid

Déplacement du curseur

Détecter la position actuelle du curseur

Vous pouvez obtenir où le curseur du constructeur est actuellement positionné à tout moment. Les DocumentBuilder.getCurrentNode la propriété retourne le noeud qui est actuellement sélectionné dans ce constructeur. Le nœud est un enfant direct d’un paragraphe. Toutes les opérations d’insertion que vous effectuez en utilisant DocumentBuilder insérer avant le DocumentBuilder.CurrentNode. Lorsque le paragraphe actuel est vide ou que le curseur est positionné juste avant la fin du paragraphe, DocumentBuilder.CurrentNode retourne nul.

En outre, vous pouvez utiliser le DocumentBuilder.getCurrentParagraph propriété, qui obtient le paragraphe qui est actuellement sélectionné dans cette DocumentBuilder. Lalow code exemple montre comment accéder au nœud actuel dans un constructeur de documents.

Se déplacer vers n’importe quel nœud (Paragraphes et leurs enfants)

Si vous avez un noeud objet document, qui est un paragraphe ou un enfant direct d’un paragraphe, vous pouvez pointer le curseur du constructeur vers ce noeud. Utiliser DocumentBuilder.moveTo méthode pour effectuer ceci. L’exemple de code suivant montre comment déplacer une position du curseur vers un noeud spécifié.

Passer au document Début/Fin

Si vous devez passer au début du document, appelez DocumentBuilder.moveToDocumentStart. Si vous devez passer à la fin du document, appelez DocumentBuilder.moveToDocumentEnd.

Déménagement dans une section

Si vous travaillez avec un document qui contient plusieurs sections, vous pouvez passer à une section souhaitée en utilisant DocumentBuilder.moveToSection. Cette méthode déplace le curseur vers le début d’une section spécifiée et accepte l’index de la section requise. Lorsque l’index de section est supérieur ou égal à 0, il spécifie un index à partir du début du document avec 0 étant la première section. Lorsque l’index de section est inférieur à 0, il spécifie un index à partir de la fin du document avec -1 étant la dernière section. Lalow code exemple montre comment déplacer une position du curseur vers la section spécifiée. Vous pouvez télécharger le fichier modèle de cet exemple à partir de ici.

Déplacement vers un en-tête/un en-tête

Lorsque vous devez placer certaines données dans un en-tête ou un pied de page, vous devez d’abord vous y déplacer en utilisant DocumentBuilder.moveToHeaderFooter. La méthode accepte une valeur de dénombrement HeaderFooterType qui identifie le type d’en-tête ou de pied de page à l’endroit où le curseur doit être déplacé.

Si vous voulez créer des en-têtes et des pied de page qui sont différents pour la première page, vous devez PageSetup.getDifferentFirstPageHeaderFooter propriété true. Si vous voulez créer des en-têtes et des pied de page qui sont différents pour des pages paires et étranges, vous devez définir PageSetup.getOddAndEvenPagesHeaderFooter à true.

Si vous devez revenir à l’histoire principale, utilisezDocumentBuilder.moveToSection pour sortir de l’en-tête ou du pied de page. L’exemple ci-dessous crée des en-têtes et des pied de page dans un document en utilisant DocumentBuilder.

Passage à un paragraphe

UtilisationDocumentBuilder.moveToParagraph pour déplacer le curseur vers un paragraphe désiré dans la section actuelle. Vous devez passer deux paramètres à cette méthode: paragrapheIndex (l’index du paragraphe à déplacer) et caractèreIndex (l’index du caractère à l’intérieur du paragraphe).

La navigation est effectuée dans l’histoire actuelle de la section actuelle. C’est-à-dire, si vous avez déplacé le curseur dans l’en-tête primaire de la première section, alors le paragrapheIndex spécifie l’index du paragraphe dans cet en-tête de cette section.

Lorsque le paragrapheIndex est supérieur ou égal à 0, il spécifie un index à partir du début de la section avec 0 étant le premier paragraphe. Lorsque le paragrapheIndex est inférieur à 0, il spécifie un index à partir de la fin de la section avec -1 étant le dernier paragraphe. L’index des caractères ne peut actuellement être spécifié que comme 0 pour passer au début du paragraphe ou -1 pour passer à la fin du paragraphe. L’exemple de code suivant montre comment déplacer une position du curseur vers le paragraphe spécifié. Vous pouvez télécharger le fichier modèle de cet exemple à partir de ici.

Déplacement vers une cellule de table

Utilisation DocumentBuilder.moveToCell si vous devez déplacer le curseur vers une cellule de table dans la section actuelle. Cette méthode accepte quatre paramètres:

  • tableauIndex - l’index du tableau à déplacer.
  • ligneIndex - l’index de la ligne dans le tableau.
  • colonneIndex - l’index de la colonne dans le tableau.
  • caractèreIndex - l’index du personnage dans la cellule.

La navigation est effectuée dans l’histoire actuelle de la section actuelle.

Pour les paramètres de l’indice, lorsque l’indice est supérieur ou égal à 0, il spécifie un indice dès le début avec 0 étant le premier élément. Lorsque l’indice est inférieur à 0, il spécifie un indice de la fin avec -1 étant le dernier élément.

Notez également que characterIndex ne peut actuellement spécifier 0 pour se déplacer au début de la cellule ou -1 pour se déplacer à la fin de la cellule. L’exemple de code suivant montre comment déplacer une position du curseur vers la cellule de table spécifiée. Vous pouvez télécharger le fichier modèle de cet exemple à partir de ici.

Déplacement vers un signet

Les signets sont fréquemment utilisés pour marquer des endroits particuliers dans le document où de nouveaux éléments doivent être insérés. Pour passer à un signet, utilisez DocumentBuilder.moveToBookmark. Cette méthode a deux surcharges. Le plus simple n’accepte que le nom du signet où le curseur doit être déplacé. L’exemple de code suivant montre comment déplacer une position de curseur vers un signet.

Cette surcharge déplace le curseur vers une position juste après le début du signet avec le nom spécifié. Une autre surcharge DocumentBuilder.moveToBookmark déplace le curseur vers un signet avec plus de précision. Il accepte deux paramètres de booléen supplémentaires:

  • isStart détermine s’il faut déplacer le curseur au début ou à la fin du signet.
  • isAfter détermine s’il faut déplacer le curseur après la position de début ou de fin du signet, ou pour déplacer le curseur avant la position de début ou de fin du signet.

L’exemple de code suivant montre comment déplacer une position de curseur juste après la fin du signet.

L’insertion d’un nouveau texte de cette façon ne remplace pas le texte existant du signet. Notez que certains signets dans le document sont assignés à des champs de formulaire. Le passage à un tel signet et l’insertion de texte y insèrent le texte dans le code de champ du formulaire. Bien que cela n’invalide pas le champ de formulaire, le texte inséré ne sera pas visible parce qu’il devient partie intégrante du code de champ.

Vers une Merge Champ

Parfois, vous pouvez avoir besoin d’effectuer un “manuel” Mail Merge utilisant DocumentBuilder ou remplir un champ de fusion d’une manière spéciale à l’intérieur d’un Mail Merge gestionnaire d’événements. C’est alors DocumentBuilder.moveToMergeField ça pourrait être utile. La méthode accepte le nom du champ de fusion. Il déplace le curseur vers une position juste au-delà du champ de fusion spécifié et supprime le champ de fusion. L’exemple de code suivant montre comment déplacer le curseur vers une position juste au-delà du champ de fusion spécifié.

Comment convertir les unités de mesure

La plupart des propriétés de l’objet Aspose.Words API qui représente certaines mesures (largeur/hauteur, marges et distances diverses) acceptent des valeurs en points (1 pouce est égal à 72 points). Parfois, ce n’est pas pratique donc il y a ConvertUtil classe qui fournit des fonctions d’aide à convertir entre différentes unités de mesure. Il permet de convertir des pouces en points, des points en pouces, des pixels en points et des points en pixels. Lorsque les pixels sont convertis en points et vice versa, ils peuvent être exécutés à 96 dpi (points par pouce) ou à la résolution dpi spécifiée.

ConvertUtil est très utile pour définir différentes propriétés de page parce que par exemple pouces sont des unités de mesure plus habituelles que les points. L’exemple suivant montre comment configurer les propriétés de la page en pouces.

L’exemple de code suivant montre comment spécifier les propriétés de la page en pouces.