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

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

У цій статті ми розглянемо способи додавання тексту в документ PS.

Вочевидь, що текст має бути написаний у документі певним шрифтом. Шрифти можуть зберігатися в системних папках, і в цьому випадку ми називаємо їх системними шрифтами і можуть зберігатися в спеціальних папках, які є папками, в які хтось розміщує шрифти для певного використання. Зазвичай ці шрифти відсутні в системних папках. Ми називаємо такі шрифти спеціальними шрифтами.

Бібліотека Aspose.Page для Java пропонує методи використання як системних, так і спеціальних шрифтів.

Для використання системних шрифтів ми просто заповнюємо або обводимо текст рідним java.awt.Font Java. Числа у виклику методу є координатами x і y верхнього лівого кута тексту.

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

Для використання спеціальних шрифтів спочатку додайте папку спеціальні шрифти у PsSaveOptions, а потім завантажте com.aspose.page.font.DrFont. І, нарешті, заповніть або обведіть текст цим об’єктом 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);

Інший варіант — робота з текстом, який також належить до шрифту. Шрифт, який використовується для друку тексту в документі PostScript, може бути вбудованим у цей файл або не вбудованим. У першому випадку текст завжди відображатиметься в будь-якому засобі перегляду або редакторі PostScript, оскільки він завжди лежить разом із текстом. У другому випадку слід очікувати, що використаний шрифт існує в системних папках на цільовому хості. Якщо використовуваний шрифт не існує, інтерпретатор PostScript може видати помилку.

Третій варіант також стосується шрифту, тому що шрифт є основним у додаванні тексту. Шрифт, який використовується для заповнення або малювання (або може бути вирізаним) тексту, може бути вбудований у файл PS у різних формах. Тепер підтримуються типи шрифтів TrueType і Type3 у вбудовуванні.

Четверта опція - це можливість писати гліфи тексту з призначеними випередженнями (шириною). Це дозволяє додати тексту артистизм.

У наведеному нижче прикладі ми демонструємо використання різних методів додавання тексту в документ PS за допомогою бібліотеки Aspose.Page для Java.

Алгоритм додавання тексту в новий документ PS включає наступні кроки:

  1. Створіть вихідний потік для отриманого файлу PS.
  2. Створіть PsSaveOptions. Якщо ми використовуємо спеціальний шрифт, ми додаємо папку(и) спеціальних шрифтів у параметрах збереження.
  3. Створіть PsDocument із уже створеним вихідним потоком і параметрами збереження.
  4. Створіть необхідний шрифт, системний або власний.
  5. Заповніть або обведіть текст створеним шрифтом. Тут ми можемо призначити java.awt.Paint або java.awt.Stroke залежно від того, заповнюємо чи малюємо текст. Або ми можемо заповнити та окреслити текст одним способом. Якщо ми використовуємо метод без java.awt.Paint або java.awt.Stroke, текст буде заповнено або обведено поточною фарбою/обведенням у поточному стані графіки.
  6. Закрийте сторінку.
  7. Збережіть документ.

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

У цьому фрагменті коду ми створюємо вихідний потік і PsSaveOptions, додаємо папку спеціальних шрифтів для використання спеціального шрифту в коді, створюємо об’єкт PsDocument, встановлюємо загальний для всіх методів текст як рядкову змінну та створюємо змінну fontSize, яка також використовується в кожному використаному методі.

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

Тут ми демонструємо використання системного шрифту для заповнення тексту поточним кольором стану графіки (тобто чорним) і новим 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/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Результат

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

Тепер ми заповнюємо текст власним шрифтом.

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

Результат

Додати текстове зображення3 Додати текстове зображення4

Тут ми демонструємо використання системного шрифту для виділення тексту поточним штрихом стану графіки (тобто чорним) і новим Штрихом.

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

Результат

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

Тепер ми обводимо текст спеціальним шрифтом.

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

Результат

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

Тут ми демонструємо використання системного шрифту для заповнення та контуру тексту за допомогою нових SolidBrush і Pen.

1//Fill text with orange color і stroke with blue-violet 2-point width pen.
2document.fillAndStrokeText(str, font, 50, 400, Color.YELLOW, strokeColor, stroke);

Результат

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

Тепер ми заповнюємо та обводимо текст власним шрифтом.

1//Fill the text with orange color і stroke with blue 2-point width pen.
2document.fillAndStrokeText(str, drFont, 50, 550, Color.ORANGE, Color.BLUE, stroke);

Результат

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

Нарешті, ми заповнюємо текст, призначаючи ширину гліфів. Кількість ширин має дорівнювати кількості гліфів.

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

Результат

Додати текстове зображення11

Закрити поточну сторінку, зберегти документ.

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

Дивіться роботу з текстом у документах PS у .NET.


У наведеному вище прикладі використані шрифти, вбудовані у файл PostScript як шрифти TrueType, оскільки це типова поведінка збереження шрифтів у класі PsDocument. Якщо вам потрібно змінити таку поведінку, скористайтеся PsSaveOptions так:

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

Ви можете завантажити приклади і файли даних з GitHub.

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.