Trabajar con texto en un archivo PS | Pitón

Agregar texto en un documento PS

Este artículo explora los métodos para agregar texto a un documento PS.

El texto debe representarse en un documento con una fuente específica. Las fuentes pueden obtenerse de carpetas del sistema, conocidas como fuentes del sistema, o de carpetas personalizadas, donde se colocan las fuentes para un uso específico. Normalmente, las fuentes personalizadas no están presentes en las carpetas del sistema. La biblioteca Aspose.Page para Python a través de .NET proporciona métodos para utilizar fuentes del sistema y personalizadas.

Rellenamos o delineamos el texto usando aspose.pydrawing para utilizar la clase fonts.Font del sistema. Los números en la llamada al método representan las coordenadas xey de la esquina superior izquierda del texto.

1font = aspose.page.ExternalFontCache.create_font_by_family_name("Times New Roman", font_size, aspose.pydrawing.FontStyle.BOLD)
2document.fillText(str, font, 50, 100);

Para usar fuentes personalizadas, primero debemos agregar la carpeta fuentes personalizadas en PsSaveOptions, luego buscar aspose.page.font.DrFont. Y finalmente rellene o delinee el texto con este objeto 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);

Otra forma de trabajar con texto implica la incrustación de fuentes. La fuente utilizada para mostrar texto en un documento PostScript puede estar incrustada en el archivo o no. Cuando se incrusta, la fuente viaja con el documento, lo que garantiza una representación uniforme en todos los visores o editores PostScript. Sin embargo, si la fuente no está incrustada, el intérprete PostScript dependerá de la existencia de la fuente en las carpetas del sistema del host de destino, lo que podría provocar errores si falta la fuente.

Además, las fuentes utilizadas para rellenar, dibujar o recortar texto se pueden incrustar en un archivo PS de diferentes formas. A partir de ahora, la incrustación admite los tipos de fuente TrueType y Type3.

En el siguiente ejemplo, mostramos varios métodos para agregar texto a un documento PS usando la biblioteca Aspose.Page para Python a través de .NET.

El algoritmo para agregar texto a un nuevo documento PS implica los siguientes pasos:

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

  1. Cree una secuencia de salida para el archivo PS resultante.
  2. Cree las PsSaveOptions. Si utilizamos una fuente personalizada, debemos agregar una o más carpetas de fuentes personalizadas en las opciones de guardar.
  3. Cree un PsDocument con el flujo de salida ya creado y las opciones de guardado.
  4. Cree una fuente necesaria, sistema o personalizada.
  5. Rellene o delinee el texto con la fuente creada. Aquí podemos asignar aspose.pydrawing.Brush o aspose.pydrawing.Pen dependiendo de si rellenamos o dibujamos el texto. O podemos completar y delinear el texto con un solo método. Si utilizamos un método sin aspose.pydrawing.Brush o aspose.pydrawing.Pen, el texto se rellenará o delineará con la pintura/trazo actual en el estado gráfico 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.

Aquí, 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 un texto común para todos los métodos como una variable de cadena y creamos un fontSize variable que también se utiliza en cada método utilizado.

 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)

Aquí puede ver 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 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############################################################################################################################

El resultado de ejecutar este código es

Agregar imagen de texto1 Agregar imagen de texto2

Ahora llenamos el texto con la fuente personalizada.

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

El resultado de ejecutar este código es

Agregar imagen de texto3 Agregar imagen de texto4

Aquí puede ver el uso de la fuente del sistema para delinear el texto con el trazo actual del estado de los gráficos (que es negro) y con el nuevo Pluma.

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

El resultado de ejecutar este código es

Agregar imagen de texto5 Agregar imagen de texto6

Ahora delineamos el texto con la fuente personalizada.

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

El resultado de ejecutar este código es

Agregar imagen de texto8 Agregar imagen de texto9

Aquí puede observar el uso de la fuente del sistema para rellenar y delinear el texto con un nuevo SolidBrush y 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)

El resultado de ejecutar este código es

Agregar imagen de texto7

Y finalmente rellenamos y delineamos el texto con la fuente personalizada.

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)

El resultado de ejecutar este código es

Agregar imagen de texto10

Cierre la página actual y guarde el documento.

1#Close current page
2document.close_page()
3
4#Save the document
5document.save()

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

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 de la siguiente manera:

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

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.