Travailler avec du texte dans un fichier PS | Java

Ajouter du texte dans un document PS

Dans cet article, nous examinons les manières dont un texte peut être ajouté à un document PS.

Évidemment, le texte doit être rédigé dans un document avec une police de caractères. Les polices peuvent être stockées dans des dossiers système, et dans ce cas, nous les appelons polices système et peuvent être stockées dans des dossiers personnalisés, qui sont des dossiers dans lesquels quelqu’un place des polices pour un usage particulier. Habituellement, ces polices sont absentes des dossiers système. Nous appelons ces polices des polices personnalisées. La bibliothèque Aspose.Page pour Java propose des méthodes pour utiliser les polices système et personnalisées.

Pour utiliser les polices système, nous remplissons ou décrivons simplement un texte avec java.awt.Font natif de Java. Les nombres dans l’appel de la méthode sont les coordonnées x et y du coin supérieur gauche du texte.

1document.fillText(str, new java.awt.Font("Times New Roman", java.awt.Font.BOLD, fontSize), 50, 100);

Pour utiliser des polices personnalisées, ajoutez d’abord le dossier polices personnalisées dans PsSaveOptions, puis récupérez com.aspose.page.font.DrFont. Et enfin remplissez ou décrivez le texte avec cet objet DrFont.

1options.setAdditionalFontsFolders(new String[] { FONTS_FOLDER });
2com.aspose.page.font.DrFont drFont = ExternalFontCache.fetchDrFont("Palatino Linotype", fontSize, Font.PLAIN);
3document.fillText(str, drFont, 50, 100);

Une autre option consiste à travailler avec du texte appartenant également à une police. La police utilisée pour imprimer le texte dans le document PostScript peut être intégrée ou non dans ce fichier. Dans le premier cas, le texte sera toujours rendu dans n’importe quel visualiseur ou éditeur PostScript car il se trouve toujours avec le texte. Dans le second cas, il faut s’attendre à ce que la police utilisée existe dans les dossiers système de l’hôte cible. Si la police utilisée n’existe pas, l’interpréteur PostScript peut générer une erreur.
La troisième option concerne également la police, car celle-ci est l’élément principal de l’ajout de texte. Une police utilisée pour remplir ou dessiner (ou peut-être découper) un texte peut être intégrée dans un fichier PS sous diverses formes. Les types de polices TrueType et Type3 dans l’intégration sont désormais pris en charge.
La quatrième option est la possibilité d’écrire les glyphes du texte avec des avances (largeurs) assignées. Cela permet d’ajouter un peu d’art au texte.

Dans l’exemple ci-dessous, nous démontrons l’utilisation de diverses méthodes d’ajout de texte dans un document PS avec la bibliothèque Aspose.Page pour Java.

Un algorithme pour ajouter du texte dans un nouveau document PS comprend les étapes suivantes :

  1. Créez un flux de sortie pour le fichier PS résultant.
  2. Créez PsSaveOptions. Si nous utilisons une police personnalisée, nous ajoutons un ou plusieurs dossiers de polices personnalisées dans les options de sauvegarde.
  3. Créez PsDocument avec le flux de sortie déjà créé et enregistrez les options.
  4. Créez la police nécessaire, système ou personnalisée.
  5. Remplissez ou décrivez le texte avec la police créée. Ici, nous pouvons attribuer java.awt.Paint ou java.awt.Stroke selon que nous remplissons ou dessinons le texte. Ou nous pouvons remplir et décrire le texte en une seule méthode. Si nous utilisons une méthode sans java.awt.Paint ou java.awt.Stroke, le texte sera rempli ou décrit avec la peinture/le trait actuel dans l’état graphique actuel.
  6. Fermez la page.
  7. Enregistrez le document.

Nous divisons l’exemple de code en petits extraits de code pour séparer la préparation initiale du document PS, l’utilisation de chaque méthode d’ajout de texte et la finalisation du document.

Dans ce morceau de code, nous créons un flux de sortie et PsSaveOptions, ajoutons un dossier de polices personnalisées pour utiliser la police personnalisée dans le code, créons un objet PsDocument, définissons le texte commun à toutes les méthodes en tant que variable de chaîne et créons une variable fontSize qui est également utilisé dans chaque méthode utilisée.

 1//Create output stream for PostScript document
 2FileOutputStream outPsStream = new FileOutputStream(dataDir + "AddText_outPS.ps");
 3//Create save options with A4 size
 4PsSaveOptions options = new PsSaveOptions();
 5// Set custom fonts folder. It will be added to system fonts folders for finding needed fonts.
 6options.setAdditionalFontsFolders(new String[] { FONTS_FOLDER });
 7//A text to write to the PS file
 8String str = "ABCDEFGHIJKLMNO";
 9int fontSize = 48;
10
11// Create a new 1-paged PS Document
12PsDocument document = new PsDocument(outPsStream, options, false);

Nous démontrons ici l’utilisation de la police système pour remplir le texte avec la couleur actuelle de l’état graphique (c’est-à-dire le noir) et avec le nouveau SolidBrush.

1//////////////////////////////////////Using system font (located in system fonts folders) for filling text //////////////////
2Font font = new Font("Times New Roman", Font.BOLD, fontSize);
3//Fill text with default or already defined color. In the given case it is black.
4document.fillText(str, font, 50, 100);
5//Fill text with Blue color.
6document.fillText(str, font, 50, 150, Color.BLUE);
7/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Le résultat

Ajouter du texte image1 Ajouter du texte image2 Maintenant, nous remplissons le texte avec la police personnalisée.

1//////////////////////////////////////Using custom font (located in custom fonts folders) for filling text /////////////////
2DrFont drFont = ExternalFontCache.fetchDrFont("Palatino Linotype", fontSize, Font.PLAIN);
3//Fill text with default or already defined color. In the given case it is black.
4document.fillText(str, drFont, 50, 200);
5//Fill text with Blue color.
6document.fillText(str, drFont, 50, 250, Color.BLUE);
7/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Le résultat

Ajouter du texte image3 Ajouter du texte image4

Nous démontrons ici l’utilisation de la police système pour décrire le texte avec le trait actuel de l’état graphique (c’est-à-dire noir) et avec le nouveau Trait.

 1//Create a stroke with a width of 2 points.
 2Stroke stroke = new BasicStroke(2);
 3//Create stroke's blue-violet color
 4Color strokeColor = new Color(138, 43, 226);
 5
 6//////////////////////////////////////Using system font (located in system fonts folders) for outlining text ////////////////
 7//Outline text with default or already defined pen. In the given case it is a black colored 1-point width pen.
 8document.outlineText(str, font, 50, 300);
 9
10//Outline text with blue-violet colored 2-point width pen.
11document.outlineText(str, font, 50, 350, strokeColor, stroke);
12/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Le résultat

Ajouter une image de texte5 Ajouter du texte image6

Nous décrivons maintenant le texte avec la police personnalisée.

1//////////////////////////////////////Using custom font (located in custom fonts folders) for outlining text /////////////////
2//Outline text with default or already defined pen. In the given case it is a black colored 1-point width pen.
3document.outlineText(str, drFont, 50, 450);
4//Outline text with blue-violet colored 2-point width pen.
5document.outlineText(str, drFont, 50, 500, strokeColor, stroke);
6///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Le résultat

Ajouter du texte image8 Ajouter du texte image9

Nous démontrons ici l’utilisation de la police système pour remplir et décrire le texte avec les nouveaux SolidBrush et Pen.

1//Fill text with orange color and stroke with blue-violet 2-point width pen.
2document.fillAndStrokeText(str, font, 50, 400, Color.YELLOW, strokeColor, stroke);

Le résultat

Ajouter du texte image7

Maintenant, nous remplissons et décrivons le texte avec la police personnalisée.

1//Fill the text with orange color and stroke with blue 2-point width pen.
2document.fillAndStrokeText(str, drFont, 50, 550, Color.ORANGE, Color.BLUE, stroke);

Le résultat

Ajouter du texte image10

Enfin, nous remplissons le texte en attribuant des largeurs aux glyphes. Le nombre de largeurs doit être égal au nombre de glyphes.

1    //Glyphs widths
2    float[] widths = new float[] { 87, 87, 87, 87, 34, 87, 87 };    
3    //Fill ASCII text using assigning glyphs widths.
4    document.fillText("BAMBOOK", widths, drFont, 50, 600, Color.BLUE);
5    
6    //Glyphs widths
7    widths = new float[] { 87, 34, 87, 87, 87, 87, 87 };
8    //Fill Unicode text using assigning glyphs widths.
9    document.fillText("ЗООПАРК", widths, drFont, 50, 650, Color.ORANGE);

Le résultat

Ajouter du texte image11

Fermez la page actuelle, enregistrez le document.

1//Close the current page
2document.closePage();
3
4//Save the document
5document.save();

Voir travailler avec un texte dans les documents PS dans .NET.


Dans l’exemple ci-dessus, des polices sont utilisées intégrées dans le fichier PostScript en tant que polices TrueType, car il s’agit du comportement par défaut d’enregistrement des polices dans la classe PsDocument. Si vous devez modifier ce comportement, veuillez utiliser PsSaveOptions comme suit :

1//Do not embed used fonts.
2options.setEmbedFonts(false);
1//Embed used fonts as Type3 fonts.
2options.setEmbedFontsAs(FontConstants.EMBED_FONTS_TYPE3);

Vous pouvez télécharger des exemples et des fichiers de données à partir de GitHub.

Have any questions about Aspose.Page?



Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.