Trabajar con texto en un archivo PS | Java

Agregar texto en un documento PS

En este artículo, consideramos las formas en que se puede agregar texto a un documento PS.
Evidentemente, el texto debe estar escrito en un documento con alguna fuente. Las fuentes se pueden almacenar en carpetas del sistema y, en este caso, las llamamos fuentes del sistema y se pueden almacenar en carpetas personalizadas, que son carpetas en las que alguien coloca fuentes para un uso particular. Por lo general, estas fuentes no están en las carpetas del sistema. A estas fuentes las llamamos fuentes personalizadas. La biblioteca Aspose.Page para Java ofrece métodos para usar fuentes del sistema y personalizadas.

Para usar fuentes del sistema, simplemente completamos o delineamos un texto con java.awt.Font de Java nativo. Los números en la llamada del método son las coordenadas xey de la esquina superior izquierda del texto.

1document.fillText(str, new java.awt.Font("Times New Roman", java.awt.Font.BOLD, fontSize), 50, 100);

Para usar fuentes personalizadas, primero agregue la carpeta fuentes personalizadas en PsSaveOptions, luego busque com.aspose.page.font.DrFont. Y finalmente rellena o delinea el texto con este objeto DrFont.

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);

Otra opción es trabajar con texto que también pertenece a una fuente. La fuente que se utiliza para imprimir texto en el documento PostScript puede estar incrustada en este archivo o no. En el primer caso, el texto siempre se representará en cualquier visor o editor PostScript porque siempre se encuentra con el texto. En el segundo caso, deberíamos esperar que la fuente utilizada exista en las carpetas del sistema en el host de destino. Si la fuente utilizada no existe, el intérprete PostScript puede generar un error.
La tercera opción también tiene que ver con una fuente porque una fuente es lo principal al agregar texto. Una fuente utilizada para rellenar o dibujar (o puede recortar) un texto se puede incrustar en un archivo PS de varias formas. Ahora se admiten los tipos de fuente TrueType y Type3 incrustados.
La cuarta opción es la posibilidad de escribir los glifos del texto con avances asignados (anchos). Permite agregar algo de arte al texto.

En el siguiente ejemplo, demostramos el uso de varios métodos para agregar texto en un documento PS con la biblioteca Aspose.Page para Java.

Un algoritmo para agregar texto en un nuevo documento PS incluye los siguientes pasos:

  1. Cree una secuencia de salida para el archivo PS resultante.
  2. Cree PsSaveOptions. Si usamos una fuente personalizada, agregamos carpetas de fuentes personalizadas en las opciones de guardar.
  3. Cree PsDocument con el flujo de salida ya creado y guarde las opciones.
  4. Cree la fuente necesaria, sistema o personalizada.
  5. Rellene o delinee el texto con la fuente creada. Aquí podemos asignar java.awt.Paint o java.awt.Stroke dependiendo de si rellenamos o dibujamos el texto. O podemos rellenar y delinear el texto. en un solo método. Si utilizamos un método sin java.awt.Paint o java.awt.Stroke, el texto se rellenará o delineará con la pintura/trazo actual en el estado de gráficos actual.
  6. Cierra la página.
  7. Guarde el documento.

Dividimos el código de ejemplo en pequeños fragmentos de código para separar la preparación inicial del documento PS, el uso de cada método para agregar texto y la finalización del documento.

En este fragmento de código, creamos un flujo de salida y PsSaveOptions, agregamos una carpeta de fuentes personalizadas para usar la fuente personalizada en el código, creamos un objeto PsDocument, establecemos texto común para todos los métodos como una variable de cadena y creamos una variable fontSize que es También se utiliza en todos los métodos utilizados.

 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);

Aquí demostramos el uso de fuente del sistema para rellenar el texto con el color actual del estado de los gráficos (es decir, negro) y con el nuevo 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/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

el resultado

Agregar imagen de texto1 Agregar imagen de texto2 Ahora llenamos el texto con la fuente personalizada.

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/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

el resultado

Agregar imagen de texto3 Agregar imagen de texto4

Aquí demostramos el uso de fuente del sistema para delinear el texto con el trazo actual del estado de los gráficos (es decir, negro) y con el nuevo Trazo.

 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/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

el resultado

Agregar imagen de texto5 Agregar imagen de texto6

Ahora delineamos el texto con la fuente personalizada.

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///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

el resultado

Agregar imagen de texto8 Agregar imagen de texto9

Aquí demostramos el uso de la fuente del sistema para rellenar y delinear el texto con los nuevos SolidBrush y 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);

el resultado

Agregar imagen de texto7

Ahora rellenamos y delineamos el texto con la fuente personalizada.

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);

el resultado

Agregar imagen de texto10

Finalmente, rellenamos el texto asignando anchos a los glifos. El número de anchos debe ser igual al número de glifos.

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);

el resultado

Agregar imagen de texto11

Cierre la página actual, guarde el documento.

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

Ver cómo trabajar con un texto en documentos PS en .NET.


En el ejemplo anterior, se utilizan fuentes incrustadas en el archivo PostScript como fuentes TrueType, porque es el comportamiento predeterminado al guardar fuentes en la clase PsDocument. Si necesita cambiar este comportamiento, utilice PsSaveOptions como se muestra a continuación:

1//Do not embed used fonts.
2options.setEmbedFonts(false);
1//Embed used fonts as Type3 fonts.
2options.setEmbedFontsAs(FontConstants.EMBED_FONTS_TYPE3);

Puede descargar ejemplos y archivos de datos desde GitHub.

Have any questions about Aspose.Page?



Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.