Arbeiten mit Text in PS-Datei | Java
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 Java-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 der nativen Java-Schriftart java.awt.Font. Die Zahlen im Methodenaufruf sind die X- und Y-Koordinaten der oberen linken Ecke des Textes.
1document.fillText(str, new java.awt.Font("Times New Roman", java.awt.Font.BOLD, fontSize), 50, 100);
Um benutzerdefinierte Schriftarten zu verwenden, fügen Sie zuerst den Ordner benutzerdefinierte Schriftarten in PsSaveOptions hinzu und rufen Sie dann com.aspose.page.font.DrFont ab. Und schließlich füllen oder umreißen Sie den Text mit diesem DrFont-Objekt.
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);
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 Schriftart, die zum Ausfüllen oder Zeichnen (oder zum Ausschneiden) eines Textes verwendet wird, 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 for Java-Bibliothek.
Ein Algorithmus zum Hinzufügen von Text in einem neuen 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 java.awt.Paint oder java.awt.Stroke zuweisen, je nachdem, ob wir den Text füllen oder zeichnen. Oder wir können den Text ausfüllen und umreißen in einer Methode. Wenn wir eine Methode ohne java.awt.Paint oder java.awt.Stroke 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 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 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);
Hier demonstrieren wir die Verwendung der Systemschriftart zum Füllen des Texts mit der aktuellen Farbe des Grafikstatus (also Schwarz) und mit dem neuen 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/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Das Ergebnis
Jetzt füllen wir den Text mit der benutzerdefinierten Schriftart.
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/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Das Ergebnis
Hier demonstrieren wir die Verwendung der Systemschriftart zum Umreißen des Textes mit dem aktuellen Strich des Grafikstatus (d. h. schwarz) und mit dem neuen Strich.
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/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Das Ergebnis
Jetzt umreißen wir den Text mit der benutzerdefinierten Schriftart.
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///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
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 text with orange color and stroke with blue-violet 2-point width pen.
2document.fillAndStrokeText(str, font, 50, 400, Color.YELLOW, strokeColor, stroke);
Das Ergebnis
Jetzt füllen und umreißen wir den Text mit der benutzerdefinierten Schriftart.
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);
Das Ergebnis
Schließlich füllen wir den Text, indem wir den Glyphen Breiten zuweisen. 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 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);
Das Ergebnis
Schließen Sie die aktuelle Seite und speichern Sie das Dokument.
1//Close the current page
2document.closePage();
3
4//Save the document
5document.save();
Weitere Informationen finden Sie unter „Arbeiten mit Text in PS-Dokumenten“ in .NET.
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.setEmbedFonts(false);
1//Embed used fonts as Type3 fonts.
2options.setEmbedFontsAs(FontConstants.EMBED_FONTS_TYPE3);
Sie können Beispiele und Datendateien herunterladen von GitHub.