Lavorare con il testo in un file PS | Python

Aggiungere testo in un documento PS

Questo articolo esplora i metodi per aggiungere testo a un documento PS.

Il testo deve essere visualizzato in un documento con un font specifico. I font possono essere recuperati da cartelle di sistema, note come font di sistema, o da cartelle personalizzate, in cui vengono posizionati per un utilizzo specifico. In genere, i font personalizzati non sono presenti nelle cartelle di sistema. La libreria Aspose.Page per Python tramite .NET fornisce metodi per utilizzare i font di sistema e personalizzati.

Riempiamo o tracciamo il contorno del testo utilizzando aspose.pydrawing per utilizzare la classe di sistema fonts.Font. I numeri nella chiamata al metodo rappresentano le coordinate x e y dell’angolo in alto a sinistra del testo.

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

Per utilizzare font personalizzati, dobbiamo prima aggiungere la cartella custom fonts in PsSaveOptions, quindi recuperare aspose.page.font.DrFont. E infine riempire o delineare il testo con questo oggetto 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);

Un altro modo per lavorare con il testo è l’incorporamento dei font. Il font utilizzato per visualizzare il testo in un documento PostScript può essere incorporato nel file oppure no. Una volta incorporato, il font si sposta con il documento, garantendo un rendering coerente tra i visualizzatori o gli editor PostScript. Tuttavia, se il font non è incorporato, l’interprete PostScript si affiderà alla presenza del font nelle cartelle di sistema dell’host di destinazione, causando potenzialmente errori in caso di assenza del font.

Inoltre, i font utilizzati per riempire, disegnare o ritagliare il testo possono essere incorporati in un file PS in formati diversi. Attualmente, l’incorporamento supporta i tipi di font TrueType e Type3.

Nell’esempio seguente, illustriamo diversi metodi per aggiungere testo a un documento PS utilizzando la libreria Aspose.Page per Python tramite .NET.

L’algoritmo per aggiungere testo a un nuovo documento PS prevede i seguenti passaggi:

Un algoritmo per aggiungere testo a un nuovo documento PS prevede i seguenti passaggi:

  1. Creare un flusso di output per il file PS risultante. 2. Crea PsSaveOptions. Se utilizziamo un font personalizzato, dobbiamo aggiungere una o più cartelle di font personalizzati nelle opzioni di salvataggio.
  2. Crea un PsDocument con il flusso di output già creato e le opzioni di salvataggio.
  3. Crea un font necessario, di sistema o personalizzato.
  4. Riempi o delinea il testo con il font creato. Qui possiamo assegnare aspose.pydrawing.Brush o aspose.pydrawing.Pen a seconda che desideriamo riempire o disegnare il testo. Oppure possiamo riempire e delineare il testo con un unico metodo. Se utilizziamo un metodo senza aspose.pydrawing.Brush o aspose.pydrawing.Pen, il testo verrà riempito o contornato con il colore/tratto corrente nello stato grafico corrente.
  5. Chiudiamo la pagina.
  6. Salvamo il documento.

Abbiamo suddiviso il codice di esempio in piccoli frammenti di codice per separare la preparazione iniziale del documento PS, l’utilizzo di ciascun metodo per l’aggiunta di testo e il completamento del documento.

Qui creiamo un outputstream e PsSaveOptions, aggiungiamo una cartella font personalizzata per utilizzare il font personalizzato nel codice, creiamo un oggetto PsDocument, impostiamo il testo comune per tutti i metodi come variabile stringa e creiamo una variabile fontSize che viene utilizzata in ogni metodo utilizzato.

 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)

Qui puoi vedere l’utilizzo del font di sistema per riempire il testo con il colore corrente dello stato grafico (ovvero nero) e con il nuovo 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############################################################################################################################

Il risultato dell’esecuzione di questo codice è

Aggiungi testo immagine1 Aggiungi testo immagine2

Ora riempiamo il testo con il font personalizzato.

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

Il risultato dell’esecuzione di questo codice è

Aggiungi testo immagine3 Aggiungi testo immagine4

Qui puoi vedere l’utilizzo del font di sistema per delineare il testo con il tratto corrente dello stato grafico (ovvero nero) e con il nuovo Penna.

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

Il risultato dell’esecuzione di questo codice è

Aggiungi testo immagine5 Aggiungi testo immagine6

Ora tracciamo il contorno del testo con il font personalizzato.

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

Il risultato dell’esecuzione di questo codice è

Aggiungi testo immagine8 Aggiungi testo immagine9

Qui puoi osservare l’utilizzo del font di sistema per riempire e delineare il testo con un nuovo SolidBrush e 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)

Il risultato dell’esecuzione di questo codice è

Aggiungi testo immagine7

E infine riempiamo e tracciamo il testo con il font personalizzato.

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)

Il risultato dell’esecuzione di questo codice è

Aggiungi testo immagine10

Chiudi la pagina corrente e salva il documento.

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

Vedi come lavorare con un testo nei documenti PS in .NET, Java.

Nell’esempio precedente, vengono utilizzati font incorporati nel file PostScript come font TrueType, poiché questo è il comportamento predefinito di salvataggio dei font nella classe PsDocument. Se è necessario modificare questo comportamento, utilizzare PsSaveOptions nel modo seguente.:

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

È possibile scaricare esempi e file di dati da GitHub.

Have any questions about Aspose.Page?



Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.