Работа с текстом в PS-файле | Питон

Добавить текст в документ PS

В этой статье рассматриваются методы добавления текста в документ PS.

Текст необходимо отображать в документе с указанным шрифтом. Шрифты могут быть взяты из системных папок, известных как системные шрифты, или из пользовательских папок, куда шрифты помещаются для конкретного использования. Обычно собственные шрифты отсутствуют в системных папках. Библиотека Aspose.Page для Python через .NET предоставляет методы для использования системных и пользовательских шрифтов.

Мы заполняем или обводим текст, используя aspose.pydrawing, чтобы использовать системный класс fonts.Font. Числа в вызове метода представляют координаты x и y верхнего левого угла текста.

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

Для использования пользовательских шрифтов нам сначала нужно добавить папку custom Fonts в PsSaveOptions, а затем получить aspose.page.font.DrFont. И, наконец, заполните или обведите текст этим объектом 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);

Другой способ работы с текстом предполагает встраивание шрифтов. Шрифт, используемый для отображения текста в документе PostScript, может быть встроен в файл или нет. При внедрении шрифт перемещается вместе с документом, обеспечивая единообразную визуализацию в программах просмотра или редакторах PostScript. Однако если шрифт не встроен, интерпретатор PostScript будет полагаться на существование шрифта в системных папках целевого хоста, что может привести к ошибкам, если шрифт отсутствует.

Кроме того, шрифты, используемые для заполнения, рисования или обрезки текста, могут быть встроены в файл PS в различных формах. На данный момент встраивание поддерживает типы шрифтов TrueType и Type3.

В приведенном ниже примере мы демонстрируем различные методы добавления текста в документ PS с использованием библиотеки Aspose.Page для Python через .NET.

Алгоритм добавления текста в новый документ PS предполагает следующие этапы:

Алгоритм добавления текста в новый документ PS включает следующие этапы:

  1. Создайте выходной поток для полученного PS-файла.
  2. Создайте PsSaveOptions. Если мы используем собственный шрифт, нам нужно добавить папку(и) с собственными шрифтами в параметры сохранения.
  3. Создайте PsDocument с уже созданным выходным потоком и сохраните параметры.
  4. Создайте необходимый шрифт: системный или пользовательский.
  5. Заполните или обведите текст созданным шрифтом. Здесь мы можем назначить aspose.pydrawing.Brush или aspose.pydrawing.Pen в зависимости от того, заполняем или рисуем текст. Или мы можем заполнить и обвести текст одним методом. Если мы используем метод без aspose.pydrawing.Brush или aspose.pydrawing.Pen, текст будет заполнен или обведен текущей краской/обводкой в ​​текущем графическом состоянии.
  6. Закройте страницу.
  7. Сохраните документ.

Мы разделили пример кода на небольшие фрагменты кода, чтобы разделить первоначальную подготовку документа PS, использование каждого метода добавления текста и завершение документа.

Здесь мы создаем выходной поток и PsSaveOptions, добавляем папку пользовательских шрифтов для использования пользовательского шрифта в коде, создаем объект PsDocument, устанавливаем общий для всех методов текст в виде строковой переменной и создаем Переменная fontSize, которая также используется в каждом используемом методе.

 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)

Здесь вы можете увидеть использование системного шрифта для заполнения текста текущим цветом графического состояния (то есть черным) и новым 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############################################################################################################################

Результат запуска этого кода:

Добавить текстовое изображение1 Добавить текстовое изображение2

Теперь мы заполняем текст собственным шрифтом.

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

Результат запуска этого кода:

Добавить текстовое изображение3 Добавить текстовое изображение4 Здесь вы можете увидеть использование системного шрифта для обводки текста текущим штрихом графического состояния (то есть черным) и новым Перо.

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

Результат запуска этого кода:

Добавить текстовое изображение5 Добавить текстовое изображение6

Теперь мы обводим текст собственным шрифтом.

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

Результат запуска этого кода:

Добавить текстовое изображение8 Добавить текстовое изображение9

Здесь вы можете наблюдать использование системного шрифта для заполнения и обводки текста с помощью новых SolidBrush и 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)

Результат запуска этого кода:

Добавить текстовое изображение7

И, наконец, мы заполняем и обводим текст собственным шрифтом.

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)

Результат запуска этого кода:

Добавить текстовое изображение10

Закройте текущую страницу и сохраните документ.

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

См. работу с текстом в документах PS в .NET, Java.

В приведенном выше примере используются шрифты, встроенные в файл PostScript, как шрифты TrueType, поскольку это поведение по умолчанию при сохранении шрифтов в классе PsDocument. Если вам нужно изменить это поведение, используйте PsSaveOptions следующим образом:

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

Вы можете загрузить примеры и файлы данных с сайта GitHub.

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.