Travailler avec du textedans PS | Python
Ajouter du texte dans un document PS
Cet article explore les méthodes d’ajout de texte à un document PS.
Le texte doit être rendu dans un document avec une police spécifiée. Les polices peuvent provenir de dossiers système, appelés polices système, ou de dossiers personnalisés, dans lesquels les polices sont placées pour un usage spécifique. En règle générale, les polices personnalisées ne sont pas présentes dans les dossiers système. La bibliothèque Aspose.Page pour Python via .NET fournit des méthodes pour utiliser les polices système et personnalisées.
Nous remplissons ou décrivons le texte à l’aide de aspose.pydrawing pour utiliser la classe système fonts.Font. Les nombres dans l’appel de méthode représentent les coordonnées x et y du coin supérieur gauche du texte.
1font = aspose.page.ExternalFontCache.create_font_by_family_name("Times New Roman", font_size, aspose.pydrawing.FontStyle.BOLD)
2document.fillText(str, font, 50, 100);
Pour utiliser des polices personnalisées, nous devons d’abord ajouter le dossier polices personnalisées dans PsSaveOptions, puis récupérer aspose.page.font.DrFont. Et enfin, remplissez ou décrivez le texte avec cet objet DrFont.
1options.setAdditionalFontsFolders(new String[] { FONTS_FOLDER });
2dr_font = aspose.page.ExternalFontCache.fetch_dr_font("Palatino Linotype", font_size, aspose.pydrawing.FontStyle.REGULAR)
3document.fillText(str, dr_font, 50, 100);
Une autre façon de travailler avec du texte consiste à intégrer des polices. La police utilisée pour afficher le texte dans un document PostScript peut être intégrée ou non au fichier. Une fois intégrée, la police accompagne le document, garantissant un rendu cohérent dans les visualiseurs ou éditeurs PostScript. Cependant, si la police n’est pas intégrée, l’interpréteur PostScript s’appuiera sur l’existence de la police dans les dossiers système de l’hôte cible, ce qui pourrait entraîner des erreurs si la police est manquante.
De plus, les polices utilisées pour remplir, dessiner ou découper du texte peuvent être intégrées dans un fichier PS sous différentes formes. À partir de maintenant, l’intégration prend en charge les types de polices TrueType et Type3.
Dans l’exemple ci-dessous, nous présentons diverses méthodes pour ajouter du texte à un document PS à l’aide de la bibliothèque Aspose.Page pour Python via .NET.
L’algorithme d’ajout de texte à un nouveau document PS implique les étapes suivantes :
Un algorithme pour ajouter du texte à un nouveau document PS comprend les étapes suivantes :
- Créez un flux de sortie pour le fichier PS résultant.
- Créez les PsSaveOptions. Si nous utilisons une police personnalisée, nous devons ajouter un ou plusieurs dossiers de polices personnalisées dans les options de sauvegarde.
- Créez un PsDocument avec le flux de sortie déjà créé et enregistrez les options.
- Créez une police nécessaire, système ou personnalisée.
- Remplissez ou décrivez le texte avec la police créée. Ici, nous pouvons attribuer aspose.pydrawing.Brush ou aspose.pydrawing.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 une méthode sans aspose.pydrawing.Brush ou aspose.pydrawing.Pen, le texte sera rempli ou décrit avec la peinture/le trait actuel dans l’état graphique actuel.
- Fermez la page.
- Enregistrez le document.
Nous avons divisé 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.
Ici, 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 un Variable fontSize qui est également utilisée dans chaque méthode utilisée.
1# The path to the documents directory.
2data_dir = Util.get_data_dir_working_with_text()
3
4fonts_folder = Util.get_data_dir_data() + """necessary_fonts/"""
5
6# Create an output stream for the PostScript document
7out_ps_stream = open(data_dir + "AddText_outPS.ps", "wb")
8# Create the save options with A4 size
9options = PsSaveOptions()
10# Set the custom fonts folder. It will be added to system fonts folders for finding the specific font.
11options.additional_fonts_folders = [ fonts_folder ]
12# A text to write to the PS file
13str = "ABCDEFGHIJKLMNO"
14font_size: float = 48
15
16# Create new 1-paged PS Document
17document = PsDocument(out_ps_stream, options, False)
Ici, vous pouvez voir 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 a sysem font (located in system fonts folders) for filling text ##################
2font = aspose.page.ExternalFontCache.create_font_by_family_name("Times New Roman", font_size, aspose.pydrawing.FontStyle.BOLD)
3# Fill the text with a default or already defined color. In the given case it is black.
4document.fill_text(str, font, 50, 100)
5# Fill the text with the Blue color.
6document.fill_text(str, font, 50, 150, aspose.pydrawing.SolidBrush(aspose.pydrawing.Color.blue))
7############################################################################################################################
Le résultat de l’exécution de ce code est
Maintenant, nous remplissons le texte avec la police personnalisée.
1##################################### Using a custom font (located in custom fonts folders) for filling text ##################
2dr_font = aspose.page.ExternalFontCache.fetch_dr_font("Palatino Linotype", font_size, aspose.pydrawing.FontStyle.REGULAR)
3# Fill the text with the default or already defined color. In the given case it is black.
4document.fill_text(str, dr_font, 50, 200)
5# Fill text with the Blue color.
6document.fill_text(str, dr_font, 50, 250, aspose.pydrawing.SolidBrush(aspose.pydrawing.Color.blue))
7############################################################################################################################
Le résultat de l’exécution de ce code est
Ici, vous pouvez voir 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 Stylo.
1##################################### Using sysem font (located in system fonts folders) for outlining text ##################
2# Outline the text with the default or already defined aspose.pydrawing.Pen. In the given case it is black colored 1-points width aspose.pydrawing.Pen.
3document.outline_text(str, font, 50, 300)
4# Outline the text the with blue-violet colored 2-points width aspose.pydrawing.Pen.
5pen = GraphicsFactory.create_pen_by_brush_and_width(aspose.pydrawing.SolidBrush(aspose.pydrawing.Color.blue_violet), 2)
6document.outline_text(str, font, 50, 350, pen)
7############################################################################################################################
Le résultat de l’exécution de ce code est
Nous décrivons maintenant le texte avec la police personnalisée.
1##################################### Using a custom font (located in custom fonts folders) for outlining text /////////////////
2# Outline the text with the default or already defined aspose.pydrawing.Pen. In the given case it is a black colored 1-points width aspose.pydrawing.Pen.
3document.outline_text(str, dr_font, 50, 450)
4# Outline the text with the blue-violet colored 2-points width aspose.pydrawing.Pen.
5pen = GraphicsFactory.create_pen_by_brush_and_width(aspose.pydrawing.SolidBrush(aspose.pydrawing.Color.blue_violet), 2)
6document.outline_text(str, dr_font, 50, 500, pen)
7##############################################################################################################################
Le résultat de l’exécution de ce code est
Ici, vous pouvez observer l’utilisation de la police système pour remplir et décrire le texte avec un nouveau SolidBrush et Pen.
1# Fill the text with an orange color and stroke with a blue colored 2-points width aspose.pydrawing.Pen.
2pen = GraphicsFactory.create_pen_by_brush_and_width(aspose.pydrawing.SolidBrush(aspose.pydrawing.Color.blue_violet), 2)
3document.fill_and_stroke_text(str, font, 50, 400, aspose.pydrawing.SolidBrush(aspose.pydrawing.Color.yellow), pen)
Le résultat de l’exécution de ce code est
Et enfin, nous remplissons et dessinons le texte avec la police personnalisée.
1# Fill the text with the orange color and stroke with the blue colored 2-points width aspose.pydrawing.Pen.
2pen = GraphicsFactory.create_pen_by_brush_and_width(aspose.pydrawing.SolidBrush(aspose.pydrawing.Color.blue), 2)
3document.fill_and_stroke_text(str, dr_font, 50, 550, aspose.pydrawing.SolidBrush(aspose.pydrawing.Color.orange), pen)
Le résultat de l’exécution de ce code est
Fermez la page actuelle et enregistrez le document.
1#Close current page
2document.close_page()
3
4#Save the document
5document.save()
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 de la manière suivante :
1# Do not embed used fonts.
2options.embed_fonts = false;
1# Embed used fonts as Type3 fonts.
2options.embed_fonts_ss(FontConstants.EMBED_FONTS_TYPE3);
Vous pouvez télécharger des exemples et des fichiers de données à partir de GitHub.