Arbeiten mit Text in PostScript | .NET
Fügen Sie Text im PS-Dokument hinzu
In diesem Artikel betrachten wir die Möglichkeiten, wie ein Text zu einem PS-Dokument hinzugefügt werden kann.
Natürlich sollte der Text in einem Dokument mit einer bestimmten Schriftart geschrieben werden. Schriftarten können in Systemordnern gespeichert werden, und in diesem Fall nennen wir sie Systemschriftarten und können in benutzerdefinierten Ordnern gespeichert werden, also Ordnern, in denen jemand Schriftarten für eine bestimmte Verwendung ablegt. Normalerweise fehlen diese Schriftarten in Systemordnern. Wir nennen solche Schriftarten benutzerdefinierte Schriftarten. Die Aspose.Page for .NET-Bibliothek bietet Methoden für die Verwendung von System- und benutzerdefinierten Schriftarten.
Um Systemschriftarten zu verwenden, füllen oder umreißen wir einfach einen Text mit nativem .NET System.Drawing.Font. Die Zahlen im Methodenaufruf sind die X- und Y-Koordinaten der oberen linken Ecke des Textes.
1document.FillText(str, new System.Drawing.Font("Times New Roman", fontSize, FontStyle.Bold), 50, 100);
Um benutzerdefinierte Schriftarten zu verwenden, fügen Sie zuerst den Ordner benutzerdefinierte Schriftarten in PsSaveOptions hinzu und rufen Sie dann Aspose.Page.Font.DrFont ab. Und schließlich füllen oder umreißen Sie den Text mit diesem DrFont-Objekt.
1options.AdditionalFontsFolders = new string[] { FONTS_FOLDER };
2Aspose.Page.Font.DrFont drFont = ExternalFontCache.FetchDrFont("Palatino Linotype", fontSize, FontStyle.Regular);
3document.FillText(str, drFont, 50, 100);
Eine weitere Möglichkeit besteht darin, mit Text zu arbeiten, der ebenfalls zu einer Schriftart gehört. Die Schriftart, die zum Drucken von Text im PostScript-Dokument verwendet wird, kann in diese Datei eingebettet werden oder nicht. Im ersten Fall wird der Text immer in jedem PostScript-Viewer oder -Editor gerendert, da er immer beim Text liegt. Im zweiten Fall sollten wir davon ausgehen, dass die verwendete Schriftart in Systemordnern auf dem Zielhost vorhanden ist. Wenn die verwendete Schriftart nicht vorhanden ist, kann der PostScript-Interpreter einen Fehler auslösen.
Bei der dritten Option geht es ebenfalls um eine Schriftart, da beim Hinzufügen von Text die Schriftart ausschlaggebend ist. Eine zum Füllen oder Zeichnen (oder Ausschneiden) eines Textes verwendete Schriftart kann in verschiedenen Formen in eine PS-Datei eingebettet werden. Jetzt werden TrueType- und Type3-Schriftarten beim Einbetten unterstützt.
Die vierte Option ist die Möglichkeit, die Glyphen des Textes mit zugewiesenen Vorsprüngen (Breiten) zu schreiben. Es ermöglicht, dem Text etwas Kunst zu verleihen.
Im folgenden Beispiel demonstrieren wir die Verwendung verschiedener Methoden zum Hinzufügen von Text in einem PS-Dokument mit der Aspose.Page für .NET-Bibliothek.
Ein Algorithmus zum Hinzufügen eines Textes in ein neues PS-Dokument umfasst die folgenden Schritte:
- Erstellen Sie einen Ausgabestream für die resultierende PS-Datei.
- Erstellen Sie PsSaveOptions. Wenn wir eine benutzerdefinierte Schriftart verwenden, fügen wir in den Speicheroptionen Ordner für benutzerdefinierte Schriftarten hinzu.
- Erstellen Sie PsDocument mit dem bereits erstellten Ausgabestream und den Speicheroptionen.
- Erstellen Sie die erforderliche Schriftart, System oder Benutzerdefiniert.
- Füllen oder umranden Sie den Text mit der erstellten Schriftart. Hier können wir System.Drawing.Brush oder System.Drawing.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 die Methode ohne System.Drawing.Brush oder System.Drawing.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 Codeschnipsel aufgeteilt, 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.
In diesem Codeteil 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 die Variable „fontSize“. wird auch in jeder verwendeten Methode verwendet.
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);
Hier demonstrieren wir die Verwendung der Systemschriftart zum Füllen des Textes mit der aktuellen Farbe des Grafikstatus (also Schwarz) und mit dem neuen 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/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Für Linux, MacOS und andere Nicht-Windows-Betriebssysteme bieten wir die Verwendung unseres Nuget-Pakets Aspose.Page.Drawing an. Es verwendet das Aspose.Drawing-Backend anstelle der System.Drawing-Systembibliothek.
Importieren Sie also den Namensraum Aspose.Page.Drawing anstelle des Namensraums System.Drawing. In den obigen und den folgenden Codeausschnitten wird Aspose.Page.Drawing.Font anstelle von System.Drawing.Font, Aspose.Page.Drawing.SolidBrush anstelle von System.Drawing.SolidBrush usw. verwendet. Unsere Codebeispiele auf GitHub enthalten alle notwendigen Ersetzungen.
Das Ergebnis
Jetzt füllen wir den Text mit der benutzerdefinierten Schriftart.
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/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Das Ergebnis
Hier demonstrieren wir die Verwendung der Systemschriftart zum Umreißen des Textes mit dem aktuellen Strich des Grafikzustands (also schwarz) und mit dem neuen Stift.
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/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Das Ergebnis
Jetzt umreißen wir den Text mit der benutzerdefinierten Schriftart.
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///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Das Ergebnis
Hier demonstrieren wir die Verwendung der Systemschriftart zum Füllen und Umreißen des Textes mit dem neuen SolidBrush und 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));
Das Ergebnis
Jetzt 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 pen.
2 document.FillAndStrokeText(str, drFont, 50, 550, new SolidBrush(Color.Orange), new Pen(new SolidBrush(Color.Blue), 2));
Das Ergebnis
Und schließlich füllen wir den Text mit der Zuweisung von Glyphenbreiten. Die Anzahl der Breiten muss der Anzahl der Glyphen entsprechen.
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));
Das Ergebnis
Schließen Sie die aktuelle Seite und speichern Sie das Dokument.
1 //Close the current page
2 document.ClosePage();
3
4 //Save the document
5 document.Save();
Weitere Informationen finden Sie unter „Arbeiten mit Text in PS-Dokumenten“ in Java.
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.
2 options.EmbedFonts = false;
1 //Embed used fonts as Type3 fonts.
2 options.EmbedFontsAs = FontConstants.EMBED_FONTS_TYPE3;
Sie können Beispiele und Datendateien herunterladen von GitHub.