Arbeiten mit Text in PS-Datei | Python
Fügen Sie Text im PS-Dokument hinzu
In diesem Artikel werden die Methoden zum Hinzufügen von Text zu einem PS-Dokument erläutert.
Text muss in einem Dokument mit einer bestimmten Schriftart gerendert werden. Schriftarten können aus Systemordnern, sogenannten Systemschriftarten, oder aus benutzerdefinierten Ordnern stammen, in denen Schriftarten für eine bestimmte Verwendung abgelegt werden. Normalerweise sind benutzerdefinierte Schriftarten nicht in Systemordnern vorhanden. Die Aspose.Page for Python via .NET-Bibliothek bietet Methoden zur Verwendung von System- und benutzerdefinierten Schriftarten.
Wir füllen oder umreißen Text mit aspose.pydrawing, um die Systemklasse fonts.Font zu nutzen. Die Zahlen im Methodenaufruf stellen die X- und Y-Koordinaten der oberen linken Ecke des Textes dar.
1font = aspose.page.ExternalFontCache.create_font_by_family_name("Times New Roman", font_size, aspose.pydrawing.FontStyle.BOLD)
2document.fillText(str, font, 50, 100);
Um benutzerdefinierte Schriftarten zu verwenden, müssen wir zuerst den Ordner benutzerdefinierte Schriftarten in PsSaveOptions hinzufügen und dann aspose.page.font.DrFont abrufen. Und schließlich füllen oder umreißen Sie den Text mit diesem DrFont-Objekt.
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);
Eine andere Möglichkeit, mit Text zu arbeiten, ist das Einbetten von Schriftarten. Die zum Anzeigen von Text in einem PostScript-Dokument verwendete Schriftart kann entweder in die Datei eingebettet sein oder nicht. Bei der Einbettung wandert die Schriftart mit dem Dokument und sorgt so für eine konsistente Darstellung in allen PostScript-Viewern oder Editoren. Wenn die Schriftart jedoch nicht eingebettet ist, verlässt sich der PostScript-Interpreter darauf, dass die Schriftart in den Systemordnern des Zielhosts vorhanden ist, was möglicherweise zu Fehlern führt, wenn die Schriftart fehlt.
Darüber hinaus können Schriftarten, die zum Füllen, Zeichnen oder Ausschneiden von Text verwendet werden, in verschiedenen Formen in eine PS-Datei eingebettet werden. Ab sofort unterstützt die Einbettung die Schriftarten TrueType und Type3.
Im folgenden Beispiel zeigen wir verschiedene Methoden zum Hinzufügen von Text zu einem PS-Dokument mithilfe der Aspose.Page für Python über die .NET-Bibliothek.
Der Algorithmus zum Hinzufügen von Text zu einem neuen PS-Dokument umfasst die folgenden Schritte:
Ein Algorithmus zum Hinzufügen von Text zu einem neuen PS-Dokument umfasst die folgenden Schritte:
- Erstellen Sie einen Ausgabestream für die resultierende PS-Datei.
- Erstellen Sie die PsSaveOptions. Wenn wir eine benutzerdefinierte Schriftart verwenden, müssen wir in den Speicheroptionen einen oder mehrere Ordner für benutzerdefinierte Schriftarten hinzufügen.
- Erstellen Sie ein PsDocument mit dem bereits erstellten Ausgabestream und den Speicheroptionen.
- Erstellen Sie eine erforderliche Schriftart, System oder Benutzerdefiniert.
- Füllen oder umranden Sie den Text mit der erstellten Schriftart. Hier können wir aspose.pydrawing.Brush oder aspose.pydrawing.Pen zuweisen, je nachdem, ob wir den Text füllen oder zeichnen. Oder wir können den Text in einer Methode ausfüllen und umreißen. Wenn wir eine Methode ohne aspose.pydrawing.Brush oder aspose.pydrawing.Pen verwenden, wird der Text im aktuellen Grafikstatus mit der aktuellen Farbe/Strich gefüllt oder umrandet.
- Schließen Sie die Seite.
- Speichern Sie das Dokument.
Wir haben den Beispielcode in kleine Codeausschnitte unterteilt, um die anfängliche Vorbereitung für das PS-Dokument, die Verwendung aller Methoden zum Hinzufügen von Text und die Fertigstellung des Dokuments zu trennen.
Hier erstellen wir einen Ausgabestream und PsSaveOptions, fügen einen benutzerdefinierten Schriftartenordner für die Verwendung der benutzerdefinierten Schriftart im Code hinzu, erstellen ein PsDocument-Objekt, legen den für alle Methoden gemeinsamen Text als Zeichenfolgenvariable fest und erstellen eine Variable fontSize, die auch in jeder verwendeten Methode verwendet wird.
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)
Hier sehen Sie die Verwendung der Systemschriftart zum Füllen des Textes mit der aktuellen Farbe des Grafikstatus (also Schwarz) und mit dem neuen 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############################################################################################################################
Das Ergebnis der Ausführung dieses Codes ist
Jetzt füllen wir den Text mit der benutzerdefinierten Schriftart.
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############################################################################################################################
Das Ergebnis der Ausführung dieses Codes ist
Hier sehen Sie die Verwendung der Systemschriftart zum Umreißen des Textes mit dem aktuellen Strich des Grafikstatus (also schwarz) und mit dem neuen Stift.
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############################################################################################################################
Das Ergebnis der Ausführung dieses Codes ist
Jetzt umreißen wir den Text mit der benutzerdefinierten Schriftart.
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##############################################################################################################################
Das Ergebnis der Ausführung dieses Codes ist
Hier können Sie die Verwendung der Systemschriftart zum Füllen und Umreißen des Textes mit einem neuen SolidBrush und Pen beobachten.
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)
Das Ergebnis der Ausführung dieses Codes ist
Und schließlich füllen wir den Text aus und umreißen ihn mit der benutzerdefinierten Schriftart.
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)
Das Ergebnis der Ausführung dieses Codes ist
Schließen Sie die aktuelle Seite und speichern Sie das Dokument.
1#Close current page
2document.close_page()
3
4#Save the document
5document.save()
Im obigen Beispiel werden Schriftarten verwendet, die als TrueType-Schriftarten in die PostScript-Datei eingebettet sind, da dies das Standardverhalten beim Speichern von Schriftarten in der PsDocument-Klasse ist. Wenn Sie dieses Verhalten ändern müssen, verwenden Sie bitte PsSaveOptions wie folgt:
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);
Sie können Beispiele und Datendateien herunterladen von GitHub.