Travailler avec du texte dans PS | .NET

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 .NET 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 System.Drawing.Font natif de .NET. 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 System.Drawing.Font("Times New Roman", fontSize, FontStyle.Bold), 50, 100);

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

1options.AdditionalFontsFolders = new string[] { FONTS_FOLDER };
2Aspose.Page.Font.DrFont drFont = ExternalFontCache.FetchDrFont("Palatino Linotype", fontSize, FontStyle.Regular);
3document.FillText(str, drFont, 50, 100);

Une autre option consiste à travailler avec du texte appartenant également à une police. La police est utilisée pour imprimer le texte dans le document PostScript et 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 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 .NET.

Un algorithme pour ajouter un 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 System.Drawing.Brush ou System.Drawing.Pen 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 la méthode sans System.Drawing.Brush ou System.Drawing.Pen, 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 afin de 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 an output stream for the PostScript document
 2using (Stream outPsStream = new FileStream(dataDir + "AddText_outPS.ps", FileMode.Create))
 3{
 4    //Create save options with the A4 size
 5    PsSaveOptions options = new PsSaveOptions();
 6    // Set the custom fonts folder. It will be added to system fonts folders for finding the needed font.
 7    options.AdditionalFontsFolders = new string[] { FONTS_FOLDER };
 8    //A text to write to the PS file
 9    string str = "ABCDEFGHIJKLMNO";
10    int fontSize = 48;
11
12    // Create a new 1-paged PS Document
13    PsDocument 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 the sysem font (located in system fonts folders) for filling the text //////////////////
2    Font font = new Font("Times New Roman", fontSize, FontStyle.Bold);
3    //Fill the text with the default or already defined color. In given case it is black.
4    document.FillText(str, font, 50, 100);
5    //Fill the text with Blue color.
6    document.FillText(str, font, 50, 150, new SolidBrush(Color.Blue));
7/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Pour Linux, MacOS et autres systèmes d’exploitation non Windows, nous proposons d’utiliser notre package Nuget Aspose.Page.Drawing. Il utilise le backend Aspose.Drawing au lieu de la bibliothèque système System.Drawing.

Importez donc l’espace de noms Aspose.Page.Drawing au lieu de celui de System.Drawing. Dans les extraits de code ci-dessus et suivants, Aspose.Page.Drawing.Font sera utilisé à la place de System.Drawing.Font, Aspose.Page.Drawing.SolidBrush sera utilisé à la place de System.Drawing.SolidBrush et ainsi de suite. Nos exemples de code sur GitHub contiennent toutes les substitutions nécessaires.

Le résultat

Ajouter du texte image1

Ajouter du texte image2

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

1////////////////////////////////////// Using the custom font (located in custom fonts folders) for filling the text /////////////////
2	  DrFont drFont = ExternalFontCache.FetchDrFont("Palatino Linotype", fontSize, FontStyle.Regular);
3	  //Fill the text with default or already defined color. In the given case it is black.
4	  document.FillText(str, drFont, 50, 200);
5	  //Fill the text with the Blue color.
6	  document.FillText(str, drFont, 50, 250, new SolidBrush(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 Pen.

1////////////////////////////////////// Using the sysem font (located in system fonts folders) for outlining the text ////////////////
2	  //Outline the text with default or already defined pen. In the given case it is a black colored 1-points width pen.
3	  document.OutlineText(str, font, 50, 300);
4	  //Outline the text with the blue-violet colored 2-points width pen.
5	  document.OutlineText(str, font, 50, 350, new Pen(new SolidBrush(Color.BlueViolet), 2));
6/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

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 the custom font (located in custom fonts folders) for outlining the text /////////////////
2		//Outline the text with the default or already defined pen. In given case it is a black colored 1-points width pen.
3		document.OutlineText(str, drFont, 50, 450);
4		//Outline the text with the blue-violet colored 2-points width pen.
5		document.OutlineText(str, drFont, 50, 500, new Pen(new SolidBrush(Color.BlueViolet), 2));		
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 the text with the orange color and stroke with the blue colored 2-points width pen.
2    document.FillAndStrokeText(str, font, 50, 400, new SolidBrush(Color.Yellow), new Pen(new SolidBrush(Color.BlueViolet), 2));

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 the orange color and stroke with the blue colored 2-points width pen.
2		document.FillAndStrokeText(str, drFont, 50, 550, new SolidBrush(Color.Orange), new Pen(new SolidBrush(Color.Blue), 2));

Le résultat

Ajouter du texte image10

Et 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 with assigning glyphs widths.
4    document.FillText("BAMBOOK", widths, drFont, 50, 600, new SolidBrush(Color.Blue));
5    
6    //Glyphs widths
7    widths = new float[] { 87, 34, 87, 87, 87, 87, 87 };
8    //Fill Unicode text using with assigning glyphs widths.
9    document.FillText("ЗООПАРК", widths, drFont, 50, 650, new SolidBrush(Color.Orange));

Le résultat

Ajouter du texte image11

Fermez la page actuelle, enregistrez le document.

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

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

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.
2		options.EmbedFonts = false;
1		//Embed used fonts as Type3 fonts.
2		options.EmbedFontsAs = 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.