Робота з текстом у файлі PS | Python

Додати текст у документ 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);

Для використання спеціальних шрифтів нам спочатку потрібно додати папку спеціальні шрифти в 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 і 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 і 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.